Mercurial is a source code management tool which allows users to keep track of changes to the source code locally and share their changes with others. The Mozilla project is in transition from using CVS for Mozilla 1.9 development to Mercurial for Mozilla 1.9.1 development and onwards.
The settings are the same as for the core Firefox 3.5/xulrunner 1.9.1 development. See
Getting comm-central source code
http://hg.mozilla.org/comm-central/(trunk builds of Thunderbird, SeaMonkey, and Sunbird)
http://hg.mozilla.org/releases/comm-1.9.1/(Thunderbird 3.0, SeaMonkey 2.0, Sunbird 1.0)
For more information on these branches, see the comm-central page.
The Thunderbird, SeaMonkey, Lightning, and Sunbird source code is contained in several different repositories. The main integration repository for those applications is comm-central and contains the main code that is required on top of the core Gecko code. It also contains a script,
client.py, which is used to get the other code.
To get one of the comm-central repositories ("clone" the repository, using Mercurial terminology), do the following, replacing
<location of repository> with one of the http urls from the branches section above, according to what you want to build:
# Pull the Mozilla source to the folder src/ - may take a while # as hundreds of megabytes of history is downloaded to .hg hg clone <location of repository> src cd src
Update/pull all other needed sources using client.py:
python client.py checkout
- If you get the error message "No module named subprocess", install python 2.4 or later.
- This step will download hundreds of megabytes of data. This can take a while, depending on your network connection.
client.py performs the following tasks:
- Pulls any new changesets to the comm-central codebase
- Pulls the mozilla-central codebase into mozilla/
- Pulls the following repositories into mozilla/extensions/ :
- irc (Chatzilla)
- inspector (DOM Inspector)
- Pulls the LDAP SDK codebase into ldap/sdks/
- (Except on recent trunk — December 2010 — this is done by CVS and the destination is mozilla/directory/c-sdk instead)
- Runs an hg update after each of the above hg pulls to update the corresponding repository clone's working directory contents. This is not required (in fact, you may prefer to pull manually). Pass --skip-comm to client.py to skip this.
Updating the Repository
To update the repository, just run client.py again:
python client.py checkout
For the comm-central apps, see the following links:
The following script will run the checkout, build, and package operations in turn, telling you what it does (and when) and stopping at (and displaying) the first nonzero program exit code. It is written for the
bash shell on Linux-i686 and for an object directory set with
mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/obj-@CONFIG_GUESS@ but it can be easily adapted for other Mozilla building environments:
#!/bin/bash # set the following to the actual location of your objdir # if you want to package an installable archive export MY_OBJDIR=obj-i686-pc-linux-gnu date && \ echo 'python client.py checkout' && \ python client.py checkout && \ date && \ echo 'make -f client.mk build' && \ make -f client.mk build && \ test -n "$MY_OBJDIR" -a -d $MY_OBJDIR && \ date && \ echo "make -C $MY_OBJDIR package" && \ make -C $MY_OBJDIR package echo 'Exit status' $? date
Firefox and xulrunner
You can, if needed, build Firefox or xulrunner from this tree. As client.py pulls the mozilla-central repository, builds and development of Firefox and xulrunner can take place within a repository from comm-central. The only difference is that you will need to go into the mozilla/ directory before running the build command:
cd src/mozilla make -f client.mk build