Building on OS/2 using Mercurial

by 3 contributors:

Required Packages

To build code from Mercurial, you need all the tools listed in sections Requires Packages and Compiler of the OS/2 Build Prerequisites.

  • Mercurial
    The OS/2 version of this version control system is available from Andrew McIntyres's webpage.

Compiler

You should use GCC 4.4.0 (dated 2009-04-26) for building any Mozilla application. Download the package from Paul Smedley's site and unpack. The setmozenv script (attached to this page) assumes that you installed into the directory D:\GCC44. If you installed elsewhere, you will have to make the appropriate changes. You still need GCC 3.3.5 because it contains binaries and include files required for the build process.

Setup

You should set up Mercurial using a %HOME%\.hgrc file with content similar to this:

[ui]
username = Firstname Lastname <localpart@domain.country>
merge = kdiff3
#editor = vi.exe
#verbose = True
#debug = True

[diff]
git = 1

[defaults]
diff=-p -U 8

[extensions]
hgext.mq =
hgext.win32text =

[encode]
**.cmd = dumbencode:
**/os2/README.* = dumbencode:
[decode]
**.cmd = dumbdecode:
**/os2/README.* = dumbdecode:

Getting sources and building

Mercurial-based "checkout"

Detailed instructions for checking out the code can be found elsewhere: for mozilla-central (or mozilla-1.9.1, both are Firefox-only) and of comm-central (SeaMonkey and Thunderbird). Note that the instructions for comm-central include getting the code of mozilla (mozilla-central or mozilla-1.9.1), i.e. Firefox code and all backend code, which will be set up in a subdirectory mozilla of the directory to which you clone comm-central.

Basically you do this to get the code:

  • hg clone <URL> (the first time only, may take hours depending on download speed)

Then, to update your local tree do this:

  • hg qpop -a (remove all locally applied patches that Mercurial Queues know about, this may take long if you edited files without letting Mq know about it)
  • hg pull -u (pull all changes into the local repository which is inside the .hg subdirectory, and then update the checked-out source tree, this should be much faster than for CVS)
  • hg qpush <patchname> (apply the patch or patches again)

For SeaMonkey you can use the command

  • python client.py checkout

as a replacement for the hg pull call (this is very useful because it updates not only the local copy of comm-central but also mozilla-central and other CVS-based repositories).

Building

This is unchanged from CVS-based builds. Create a .mozconfig file

mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/obj

ac_add_options --enable-application=browser
ac_add_options --disable-tests
ac_add_options --enable-optimize
ac_add_options --disable-debug

and then kick-off the build with

make -f client.mk build 2>&1 | tee build.log

 

Warning: for some reason the configure file in nsprpub is part of the Hg repository, but as it is incompatible with the OS/2 build, you need to either remove it before building, or (recommended) to patch it away using the Mq extension of Mercurial. (In the latter case you might need to use hg qrefresh every now and then to update the patch.

Document Tags and Contributors

Contributors to this page: Sheppy, PWeilbacher, Ms2ger
Last updated by: Sheppy,