Alpha
The Secure Web Browser (SWB) for OpenVMS and OpenVMS I64 are built from Mozilla sources. Some of the files are modified to run SWB on OpenVMS and a few files were
modified/replaced to provide the branding. The build procedure for SWB is identical to Mozilla.
Alpha:
SWB V1.7-13 (based on Mozilla V1.7-13) is used as an example throughout this section.
The directory structure will change based on user's environment. So, adjust system specific
logicals and symbol variables to match with your system.
- Download build tools and copy them on to OpenVMS Alpha system
- $RUN swb_axp_buildtools.sfx_axpexe to generate a .bck file
- Run the BACKUP command to restore the .bck file
- Copy .bashrc file to your sys$login directory
- Download SWB V1.7-13 source code and do the following;
- $RUN swb_axp_v1713source.sfx_axpexe to generate a .bck file
- Run the BACKUP command to restore the .bck file
- Run swb_axp_setup.com to set the build environment
For example, SWB and GNV logicals will get defined like this:
SWB logicals
(LNM$PROCESS_TABLE)
"MOZ_OBJROOT" = "_DKA200:[v1713opt.]"
"MOZ_SRCROOT" = "_DKA200:[v1713.mozilla.]"
"MOZ_SRCTOP" = "_DKA200:[v1713]"
GNV logicals
(LNM$PROCESS_TABLE)
GNV_CC_INCLUDE_LENGTH_MAX" = "400"
GNV_CC_WARN_INFO" = "1"
GNV_CXX_SET_COMMAND" = "DEFINE/USER
DECC$FILENAME_UNIX_ONLY FALSE"
GNV_EXTRA" = "_DKA200:[gnv_extra]"
GNV_LINK_AUTO_SYMVEC_NODUPS" = "1"
GNV_LINK_LIB_TYPES" = "so exe a"
GNV_LINK_MISSING_LIB_ERROR" = "1"
Setting up Configure
Bash>
cd /moz_srcroot
mv configure configure.old
sed \
-e 's/"confdefs.h"/"confdefs.h"\
#ifdef GENERIC_PTHREAD_REDEFINES\
#include "motif_redefines.h"\
#endif/' \
-e 's/^int *$//' \
-e 's/i*n*t* *main *()/\
#ifdef __cplusplus\
extern "C" { void __posix_exit(int); }\
#else\
void __posix_exit(int);\
#endif\
int maine();\
int main() {\
__posix_exit(maine());\
}\
int maine()/' \
-e \
'/^(set)/{
N
/^.*$/c\
# On some platforms the copious set output fills the pipe and we hang.\
(set) > /tmp/set$$.tmp 2>&1\
cat /tmp/set$$.tmp |\
case `(ac_space=" "; cat /tmp/set$$.tmp | grep ac_space) 2>&1` in
}' \
configure.old > configure
Another fix to configure is needed for Mozilla 1.7:
old
" $ac_file_inputs | (eval "$ac_sed_cmds") > $ac_file
fi; done
new
" $ac_file_inputs > /tmp/cs.tmp
sed -f conftest.subs /tmp/cs.tmp > $ac_file
rm /tmp/cs.tmp
fi; done
Running Configure (non debug)
$ create /dir [.vms_cxx]
$ library /object /create [.vms_cxx]CXX$LINK.OLB
$ set file /ent=[.vms_cxx]CXXINK.OLB [.vms_cxx]CXX$LINK.OLB ! make bug
$!
$! VMS build optimization
$ create /dir moz_objroot:[dist.bin]
$ create /dir moz_objroot:[dist.lib]
$ copy /log work:[work.cxx]libvmscxx.so moz_objroot:[dist.bin]libvmscxx.so
$ copy /log work:[work.cxx]libvmscxx.so moz_objroot:[dist.lib]libvmscxx.so
. /work/work/moz.sh # define moz_srcroot and moz_objroot
. /work/work/moz.sh # define moz_srcroot and moz_objroot
cd $moz_objroot
${moz_srcroot}/configure \
--with-pthreads --disable-gtktest --disable-glibtest \
--disable-profilesharing \
--enable-md --disable-tests \
--without-zlib --enable-extensions=default,irc \
--with-glib --with-glib-prefix=/_dka0/gtk/1_2_10/glib/ \
--with-gtk --with-gtk-prefix=/_dka0/gtk/1_2_10/gtk/ \
--with-libIDL-prefix=/_dka200/libIDL-0.6.5 \
--enable-crypto --disable-freetype2 --enable-nspr-autoconf \
--disable-debug --enable-optimize
Tidy up after configure:
rm .MAP
Finally, start the build:
mkdir logs
/gnu/bin/make -j2 > logs/build 2>&1 # or use /work/work/build.sh
Scan log file for errors:
bash$ /work/work/scanlog build.
Total C Modules: 628
C++ Modules: 1953
C/C++ Info: 144
C/C++ Warn: 547
C/C++ Error: 0
C/C++ fatal: 0
Share Images: 90
Archive Warns: 0
Archive Errs: 0
Symbol Trunc: 0
Symbol Dupl: 0
gmake errs: 0
DCL errs: 0
Link errs: 0
link undefsym: 0
After the Build
Download kitting tools and copy them on to OpenVMS Alpha system
- $RUN swb_axp_Kittingtools.sfx_axpexe to generate a .bck file
- Run the BACKUP command to restore the .bck file
The "kit" contains all files in the dist/bin tree. Copy these files to a user defined directory and then create the kit.
$! Create saveset from build area
$ define xxx build1:[v1713opt.dist.] /trans=conc
$ back /log /nocrc /group=0 xxx:[bin...]*.*;0 sys$manager:V1713opt.sav/sav
$! Restore saveset into run/kit area
$ set default work:[work]
$ back /log sys$manager: V1713opt.sav/sav [...]*.*
$ rename bin.dir V1713opt.dir
$ set def work:[work. V1713opt]
$ @[-]swb_axp_tidy
$ delete [...]*.dir;* /log ! until no more deletes
$ @mozilla ! Just launch, select any menu item and exit
$! Create the Mozilla PCSI kit
$ set def work:[work]
$ @swb_axp_pcsi
$! make sure GTK and OPL kits are in place and match software statements
$ @swb_axp_make_kit
Incremental Building
Once SWB is built and running, you can make changes as necessary.
Important: Change the source code in the source tree (/v1713/mozilla/...) and build in the object tree (/v1713opt/...). Do not attempt to build in the source tree.
It is faster to build where changes have been made (assuming that the changes are not global in nature). You can use gmake build from the top of the object tree, but this will take
few hours just to build one or two files that were changed.
Depending upon the build type, follow these steps for an incremental build:
Shared Build:
- gmake in the object directory which corresponds to the source directory where changes were made.
- If a shared image (.so) was not created, find the directory where the shared image is built and gmake there as well (usually there is a build directory one or two levels higher in the
tree).
- Copy the newly built shared image (.so) file out into the SWB run tree.
Static Build:
- gmake in the object directory which corresponds to the source directory where changes were made.
- If a library file (.a) was not created, find the directory where the library file is built and gmake in there as well (usually there is a build directory one or two levels higher in the
tree). Note that the library file must be named something like foo.a. If only foo_s.a is built, you must still find the directory where foo.a gets built.
- gmake in xpfe/bootstrap. This will rebuild the mozilla-bin image which you then copy out into your SWB run tree.
I64:
SWB 1.7-13 (based on Mozilla V1.7-13) is used as a sample example
throughout this section. The directory structure will change based on user's
environment. So, adjust system specific logicals and symbol variables to
match with your system.
- Download build tools and copy them on to OpenVMS I64 system
- $RUN swb_i64_buildtools.sfx_i64exe to generate a .bck file
- Run the BACKUP command to restore the .bck file
- Copy .bashrc file to your sys$login directory
- Download SWB V1.7-13 source code and do the following;
- $RUN swb_axp_v1713source.sfx_axpexe to generate a .bck file
- Run the BACKUP command to restore the .bck file
- Run swb_i64_build_setup.com or an equivalent collection of commands gets executed
For example, SWB and GNV logicals will get defined like this:
SWB logicals
(LNM$PROCESS_TABLE)
"LIBMOZJS_MAP" = "moz_objroot:[js.src].map"
"MOZ_OBJROOT" = "dka0:[v1713_inprog.]"
"MOZ_SRCROOT" = "dka0:[v1713_inprog.mozilla.]" GNV logicals
(LNM$PROCESS_TABLE)
"GNV_CC_INCLUDE_LENGTH_MAX" = "400"
"GNV_CC_WARN_INFO" = "1"
"GNV_CXX_SET_COMMAND" = "DEFINE/USER
DECC$FILENAME_UNIX_ONLY FALSE"
"GNV_LINK_AUTO_SYMVEC_NODUPS" = "1"
"GNV_LINK_LIB_TYPES" = "so exe a"
"GNV_LINK_MISSING_LIB_ERROR" = "1"
Setting up Configure
Run configure like this,
$ sh swb_i64_run_config
Once the configure is done successfully, run
swb_i64_batch_build.com like this,
$ @ swb_i64_batch_build
This submits a command file of the same name for batch processing.
Your log file will be moz_objroot:[000000]build.log.
Assuming the current best case situation, the build will run for about nine hours on an RX2600 or similar.
You can then run your copy of Mozilla with:
$ set default moz_objroot:[dist.bin]
$ set display/create ... if necessary
$ @mozilla
After the Build
- Download kitting tools and copy them on to OpenVMS I64 system
- $RUN swb_i64_kittingtools.sfx_i64exe to generate a .bck file
- Run the BACKUP command to restore the .bck file
- After building SWB you are left with a directory tree of
moz_objroot:[dist.bin...]. Make a copy of this tree, namely, $ backup moz_objroot:[dist.bin...]*.*;*
dka0:[mozstaging...]
- Make sure all files are owned by [SYSTEM]
- Run swb_i64_tidy.com from the staging directory,
$ set default dka0:[mozstaging]
$ @dka0:[ledoux.mozkitting]swb_i64_tidy
- Running this command file does some general cleanup and puts the xpt
files together for better performance. The last thing it does is instruct
you to run the delete command mentioned above. This is just a delete
[...]*.dir;*/log command to get rid of empty directories. Repeat this
command until all empty directories are deleted.
- Make sure the command: define/user decc$efs_charset enable is present
in the mozilla.com file in the staging directory.
- Set the default back to dka0:[ledoux.mozkitting].
- Run the swb_i64_make_a_kit.com, you will be left with the PCSI kits and the SFXEXE kits.
» Return to the Secure Web Browser for OpenVMS home page
|