SeaMonkey:hg-based build
The work for building SeaMonkey and Thunderbird with mozilla-central has originally been based on the SeaMonkey/1.9.1_Repository_Options, and then refined following MailNews:HgMeetingNotes to use it own testing repository.
The new yet-to-be-named Mercurial repository contains SeaMonkey and Thunderbird code for now, calendar will follow at a later date. All of those codebases are imported as static snapshots from CVS, without keeping history, which will be available through cvs and web tools. The shared repository contains its own build system files, which started off as copies of the Mozilla equivalents, with some path adjustments and removals of not needed parts. For now, they call into lots of mozilla files, which can be gradually reduced over time so that in the end SeaMonkey and Thunderbird can build with some sort of a XULRunner SDK.
building SeaMonkey
- pull the test repository
hg clone http://hg.mozilla.org/users/kairo_kairo.at/calemaisu-test/ src
- update/pull all other needed source via client.py
python client.py checkout
- check if the patch for bug 442484 has landed, else apply it manually (note that with hg, all patches need to applied with at least -p1 level in patch!)
- make sure you have autoconfig 2.13 installed, see the comment about this on devmo
- build using client.mk:
gmake -f client.mk build
for unit tests
Note that correct makefiles.sh files paper over the problem that make-makefiles does get confused with us being outside mozilla/ (bug 437896) but test makefiles rely on that automatic generation, so unit tests only can get built with a patch for that bug.
- mailnews/imap/test/Makefile.in: in the LOCAL_INCLUDES line 74, add a ../ between $(topsrcdir)/ and mailnews/
- mailnews/base/test/unit/head_mailbase.js: prefix "mailnews" directory with a "../"
- mailnews/db/msgdb/test/unit/head_maildb.js: prefix "mailnews" directory with a "../"
- mailnews/db/msgdb/test/unit/test_maildb.js: prefix "mailnews" directory with a "../"
- mailnews/news/test/unit/head_server_setup.js: prefix "mailnews" directory with a "../"
- mailnews/news/test/unit/test_server.js: prefix "mailnews" directory with a "../" in line 104
- mailnews/local/test/unit/head_maillocal.js: prefix "mailnews" directory with a "../"
- mailnews/compose/test/unit/head_compose.js: prefix "mailnews" directory with a "../"
- mailnews/compose/test/unit/test_sendMailMessage.js: prefix "mailnews" directory with a "../" in line 20
- mailnews/compose/test/unit/test_nsMsgCompose1.js: prefix "mailnews" directory with a "../" in lines 7,49,54
- mailnews/addrbook/test/unit/head_addrbook.js: prefix "mailnews" directory with a "../"
- mailnews/addrbook/test/unit/test_cardForEmail.js: prefix "mailnews" directory with a "../" in line 13
- mailnews/addrbook/test/unit/test_mailList1.js: prefix "mailnews" directory with a "../" in line 35
- mailnews/addrbook/test/unit/test_nsIAbCard.js: prefix "mailnews" directory with a "../" in line 14
- mailnews/extensions/bayesian-spam-filter/test/unit/head_bayes.js: prefix "mailnews" directory with a "../"
- mailnews/extensions/bayesian-spam-filter/test/unit/test_bug228675.js: prefix "mailnews" directory with a "../" in lines 41,155
additional changes to build Thunderbird
- pull from CVS: mail/
- mozconfig: --enable-application=../mail
- mozconfig: mk_add_options MOZ_OBJDIR=/path/to/objdir/mozilla (again, note the "mozilla" at the end!)
- cd mail/; sed -i 's/^DEPTH.*\.\.$/&\/mozilla/g' `find . -name Makefile.in`
- mail/build.mk: prefix mailnews/ and mail/ with ..
- mail/makefiles.sh: add removed mailnews block from mozilla/toolkit/toolkit-makefiles.sh line 913 at line 38
- mail/makefiles.sh: prefix all mail/ directories in add_makefiles with "../"
- mail/confvars.sh: add the following line before MOZ_APP_VERSION (line 55) (without indentation):
THUNDERBIRD_VERSION=`cat $topsrcdir/../mail/config/version.txt`
- mail/app-config.mk: create this file, containing the following lines (without indentation):
MOZ_THUNDERBIRD = 1 THUNDERBIRD_VERSION = $(MOZ_APP_VERSION) DEFINES += -DMOZ_THUNDERBIRD=1
- mail/locales/Makefile.in: prefix relativesrcdir in line 41 with ../; prefix "mailnews" in line 100 with "../"
- mail/base/jar.mn: replace /mailnews/ with /../mailnews/ (right-hand side)
- mail/components/compose/jar.mn: replace /mailnews/ with /../mailnews/ (right-hand side)
- mail/components/preferences/jar.mn: replace /mailnews/ with /../mailnews/ (right-hand side)
- mail/components/addrbook/jar.mn: replace /mailnews/ with /../mailnews/ (right-hand side)
- mail/extensions/smime/jar.mn: replace /mailnews/ with /../mailnews/ (right-hand side)
- mail/app/Makefile.in: insert ../ between $(topsrcdir)/ and mail/ in line 52
building with Lightning calendar
- pull from CVS: mozilla/calendar/
- pull from CVS: mozilla/extensions/lightning/
- pull from CVS: mozilla/extensions/webdav/
- mozconfig: --enable-extensions=default,lightning
- mozilla/calendar/lightning/Makefile.in: include config.mk with the patch for bug 440017
- suite/app-config.mk and mail/app-config.mk: add the following lines at the end of the file:
# needed to install the Lightning extension if it's built INSTALL_LIGHTNING = 1
- mozilla/calendar/lightning/install.rdf: apply the patch for bug 440022 so that the produced Lighting installs well.