SeaMonkey:hg-based build: Difference between revisions

m
→‎building with Lightning calendar: add note about seamonkey lightning...
m (→‎building with Lightning calendar: add note about seamonkey lightning...)
 
(17 intermediate revisions by 4 users not shown)
Line 1: Line 1:
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 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.
The new [http://hg.mozilla.org/comm-central/ comm-central] 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.


The pages about [http://developer.mozilla.org/en/docs/Mozilla_Source_Code_%28Mercurial%29 getting Mozilla code via hg] and [http://developer.mozilla.org/en/docs/Mercurial Mercurial (hg) itself] from Mozilla Developer Center are probably helpful when dealing with the repositories.
The pages about [http://developer.mozilla.org/en/docs/Mozilla_Source_Code_%28Mercurial%29 getting Mozilla code via hg] and [http://developer.mozilla.org/en/docs/Mercurial Mercurial (hg) itself] as well as [http://developer.mozilla.org/en/docs/comm-central comm-central] from Mozilla Developer Center are probably helpful when dealing with the repositories.


=== building SeaMonkey or Thunderbird ===
=== Building SeaMonkey or Thunderbird ===


* pull the [http://hg.mozilla.org/users/kairo_kairo.at/index.cgi/calemaisu-test/ test repository]
* pull comm-central
   hg clone http://hg.mozilla.org/users/kairo_kairo.at/calemaisu-test/ src
   hg clone http://hg.mozilla.org/comm-central/ src
   cd src
   cd src
* update/pull all other needed source via client.py
* update/pull all other needed source via client.py
   python client.py checkout
   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 autoconf 2.13 installed, see [http://developer.mozilla.org/en/docs/Mozilla_Source_Code_%28Mercurial%29#Autoconf_2.13 the comment about this on MDC]
* make sure you have autoconfig 2.13 installed, see [http://developer.mozilla.org/en/docs/Mozilla_Source_Code_%28Mercurial%29#Autoconf_2.13 the comment about this on MDC]
* create a mozconfig, using  
* create a mozconfig, using the normal --enable-application=suite (for SeaMonkey, mail for Thunderbird)
** --enable-application=suite (for SeaMonkey)
** --enable-application=mail (for Thunderbird)
* build using client.mk:
* build using client.mk:
   gmake -f client.mk build
   make -f client.mk build


=== for unit tests ===
=== Building with Lightning (the integrated calendar) ===


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.
Note! SeaMonkey doesn't work with lightning yet (bug 313822).


* mailnews/imap/test/Makefile.in: in the LOCAL_INCLUDES line 74, add a ../ between $(topsrcdir)/ and mailnews/
In your .mozconfig file: add the following line:
* mailnews/base/test/unit/head_mailbase.js: prefix "mailnews" directory with a "../"
ac_add_options --enable-calendar
* 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


== Common Mistakes ==
=== Build error when importing example mozconfig ===


If you get the following build error:
/src/mozilla/configure: /src/mozilla/mail/config/mozconfig: No such file or directory


=== building with Lightning calendar ===
Open your mozconfig and change the line:
. $topsrcdir/mail/config/mozconfig


This section is OUTDATED and will be replaced with more current information later.
To:
ac_add_options --enable-application=mail


* pull from CVS: mozilla/calendar/
The original problem happens because when configuring in mozilla/ (mozilla-central) it reads mozilla/ as the topsrcdir and errors out in that it can't find the inclusion you want.
* pull from CVS: mozilla/extensions/lightning/
 
* pull from CVS: mozilla/extensions/webdav/
As we have other solutions for setting the configuration defaults nowadays, the --enable-application line is the only one we really need out of there.
* mozconfig: --enable-extensions=default,lightning
 
* mozilla/calendar/lightning/Makefile.in: include config.mk with the patch for {{bug|440017}}
=== cvs checkout error with client.py ===
* 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
If you get the following error from client.py:
INSTALL_LIGHTNING = 1
Executing command: ['cvs', '-d', '/usr/local/cvsroot', '-q', 'checkout', '-P', '-r', 'HEAD', '-d', 'calendar', 'mozilla/calendar']
* mozilla/calendar/lightning/install.rdf: apply the patch for {{bug|440022}} so that the produced Lighting installs well.
cvs checkout: cannot find module `mozilla/calendar' - ignored
Traceback (most recent call last):
  File "client.py", line 149, in <module>
    do_cvs_checkout(CVS_DIRS, CVS_CO_TAG, options.cvsroot, options.cvs, '')
  File "client.py", line 71, in do_cvs_checkout
    cwd=os.path.join(topsrcdir, checkoutdir, parent))
  File "client.py", line 45, in check_call_noisy
    check_call(cmd, *args, **kwargs)
  File "/usr/lib/python2.5/subprocess.py", line 462, in check_call
    raise CalledProcessError(retcode, cmd)
  subprocess.CalledProcessError: Command '['cvs', '-d', '/usr/local/cvsroot', '-q', 'checkout', '-P', '-r', 'HEAD', '-d', 'calendar', 'mozilla/calendar']' returned non-zero exit status 1
 
then it looks like your CVSROOT environment variable is set to '/usr/local/cvsroot', try unsetting it before calling client.py.
129

edits