Mozilla on Tru64 Unix FAQ
Current statusMozilla runs to varying degrees under several versions of Tru64 Unix. As you might expect, more recent versions of Tru64 run it better than older versions did. Here is the current state of affairs:
|Tru64 4.0C||???||???||No machine available|
|Tru64 4.0D||yes||no||Not sure if the compiler or the run time is broken|
|Tru64 4.0F||yes||yes||Fails the first time its run. Works after that. I know why|
|Tru64 5.0||yes||yes||Seems to work fine|
CompilersRight now you MUST use the Tru64 cxx compiler to build the C++ code. g++ will NOT work. It would be nice if this was fixed, but doing so requires a knowledge of both alpha assembly language and the low level workings of g++. There are only a small number of people who know both. Here is a summary of the issues in case you want to tackle this problem:
- Mozilla makes use of the xptcall library. This library needs to know how to build call frames and invoke methods of C++ objects. This varies from compiler to compiler, and some parts of this must be coded in assembly language. The code for the cxx compiler was developed by Steve Streeter at Compaq.
- There is xptcall code for g++ running under Linux/alpha. This code would be a good place to start writing a Tru64 implementation. The vtable format is different between g++ running under Linux and Tru64, so you will have to make some modifications. I do not know what is different. I have just been told its not the same.
Support librariesCompiling mozilla requires the gtk, glib, and libIDL libraries. These libraries do not come with Tru64 Unix, so you must build them yourself. Building these libraries can be tricky. Rather than write detailed instructions about how get them all to compile, I have written a script which will built them all for you. It also builds some tools you need to build the libraries. When you run the script, it will try and make a subdirectory called "prefix" in your working directory. All the tools will be installed under this prefix directory. It will try and ftp any files it needs that do not exist. After these libraries are built, the prefix/bin directory needs to go at the head of your PATH, and the prefix/lib directory needs to go in your LD_LIBRARY_PATH. Please use absolute paths when you set these variables.
The mozilla build process requires that perl is in your path. Some versions of Tru64 Unix come with perl, and some do not. The script does not build perl, so if you do not have it already, you will need to get it.
Building mozillaBuilding mozilla is fairly easy once the support libraries have been built. After you have set your PATH and LD_LIBRARY_PATH variables as described above, cd into the mozilla directory and run the configure script. Some versions of /bin/sh under Tru64 are buggy, so use ksh to be safe:
After this you should be able to run make and have mozilla build.cd mozilla ksh ./configure
Kernel LimitsWhen mozilla runs for the first time it registers all its component libraries. This requires it to load about 120 shared libraries. Unfortunately Tru64 ships with default kernel limits that make this impossible. This is explained in the dlopen man page:
The maximum number of shared libraries that can be loaded simultaneously by a single process is approximately 60. This limit can be raised by reconfiguring the kernel's vm-mapentries parameter. This parameter should be set to at least three times the desired maximum number of shared libraries that can be loaded by a process. See the manual System Administration for instructions on reconfiguring the vm-mapentries parameter.There are two ways to get around this:
- Run mozilla several times. Each time your run it, mozilla will add more shared libs to its registry. After about 3 runs you will have all of them registered. It prints a fairly obvious warning message when it fails to load a library, so you will be able to tell when it does not have them all registered.
- Edit the /etc/sysconfig.tab file and raise vm-mapentries to 600. If you don't know how to do this by hand, there is a tool called dxkerneltuner that will edit the sysconfig.tab file for you. You will have to be root to run the tool or to edit the file by hand, and you will have to reboot the machine before the new limits take effect.
Running MozillaThe binary is run like it is on other version of Unix. First make sure that you have your LD_LIBRARY_PATH environment set to include the gtk and glib libraries that you built earlier. Then do:
cd dist/bin ./mozilla