Closed Bug 437643 Opened 12 years ago Closed 11 years ago

Build Thunderbird and SeaMonkey from comm-central

Categories

(SeaMonkey :: Build Config, defect)

defect
Not set

Tracking

(Not tracked)

RESOLVED FIXED

People

(Reporter: kairo, Assigned: kairo)

References

()

Details

For following http://wiki.mozilla.org/SeaMonkey/1.9.1_Repository_Options option A, we need to be able to build SeaMonkey with mozilla-central in a mozilla/ subdir that is in parallel to mailnews/ and suite/ so that the platform is a singleton that can be pulled into the structure of the future hg repository which I call "mailsuite" right now, as I expect it to contain mail/ and suite/ as well as the shared mailnews/ code.

I got this to build with the following list of steps (note that this contains a few hacks):
------------------------------------------------------
- pull from CVS: suite/
- pull from CVS: mailnews/
- pull from CVS: extensions/[irc|typeaheadfind|venkman|wallet|xml-rpc]
    symlink them into mozilla/extensions
- pull from CVS: directory/ - symlink into mozilla/
- mozconfig: --enable-application=../suite
- mozconfig: mk_add_options MOZ_OBJDIR=/path/to/objdir/mozilla
    (note the "mozilla" at the end!)
- suite/build.mk: prefix mailnews/ and suite/ with ..
- mozilla/configure.in: change line 4576 to match "*suite" instead of "suite"
    (so MOZ_SUITE gets into mozilla-config.h)
    (bug 437219 would allow us to get this via |DEFINES += -DMOZ_SUITE|
      in a suite/app-config.mk)
- mozilla/configure.in: change line 1547 to point to
    $topsrcdir/../suite/config/version.txt
    (bug 437219 would probably also help here)
- mozilla/toolkit/toolkit-makefiles.sh: move mailnews block at line 913
    to suite/makefiles.sh line 38
- cd mailnews/; sed -i 's/^DEPTH.*\.\.$/&\/mozilla/g' `find . -name Makefile.in`
- cd suite/; sed -i 's/^DEPTH.*\.\.$/&\/mozilla/g' `find . -name Makefile.in`
- suite/debugQA/locales/Makefile.in: after inclusion of config.mk,
    add the following two lines (without indentation):
      # HACK: make the locale expansion not insert the mozilla/ subdir for en-US
      EXPAND_LOCALE_SRCDIR = $(if $(filter en-US,$(AB_CD)),$(topsrcdir)/../$(1)/en-US,$(topsrcdir)/../l10n/$(AB_CD)/$(subst /locales,,$(1)))
- suite/locales/Makefile.in:
    same hack as for suite/debugQA/locales/Makefile.in, and add another line:
      EXPAND_LOCALE_SRCDIR_PLATFORM = $(if $(filter en-US,$(AB_CD)),$(topsrcdir)/$(1)/en-US,$(topsrcdir)/../l10n/$(AB_CD)/$(subst /locales,,$(1)))
    change line 163 to use that additional expansion macro
- suite/build/Makefile.in: in the LOCAL_INCLUDES starting in line 74,
    add a ../ between $(topsrcdir)/ and suite/
------------------------------------------------------

Individual items that need fixing to make this process better should be filesd as dependencies of this bug.
Depends on: 437896
As bug 437219 is resolved now, mozilla/configure.in doesn't need to be modified (we can clean it from SeaMonkey references completely later), instead, the following modifications need to be made:

- suite/confvars.sh: add the following line before MOZ_APP_VERSION (line 47):
    SEAMONKEY_VERSION=`cat $topsrcdir/../suite/config/version.txt`
- suite/app-config.mk: create this file, containing the following lines:
    MOZ_SUITE = 1
    SEAMONKEY_VERSION = $(MOZ_APP_VERSION)
    DEFINES += -DMOZ_SUITE=1


Additionally, if you want to build with --enable-tests, you need the fix for bug 437896 and the following change:

- mailnews/imap/test/Makefile.in: in the LOCAL_INCLUDES line 74,
    add a ../ between $(topsrcdir)/ and mailnews/
Just FYI, those further changes are needed for getting unit tests to pass:

- 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
Updating URL, as I now have put up my doc about this on http://wiki.mozilla.org/SeaMonkey:hg-based_build (including Thunderbird, BTW)
Blocks: 422700
Blocks: 441663
Depends on: 438676
Depends on: 440932, 442484, 442503
No longer depends on: 437896
BTW, the URL is still correct, but we're not riding as much on the Mozilla build system with the final approach, so the instructions on that page have changed.
Assignee: nobody → kairo
Depends on: 442566
Blocks: 366344
Blocks: 443351
I'm morphing this bug slightly so the summary names both Thunderbird and SeaMonkey as well as the new, decided repo name.
This bug is now about populating the new repository with the code that is ready to build both those products, as we will only populate it when we have everything ready for switching development to this repository (we need to use the current CVS source as a base snapshot for this when we switch, so to not halt development).

This bug should probably live in the MailNews Core product in its Build Config component (when it's still open when that's created, I'll care about mocing it accordingly).

Every bug that is a prerequisite for the switch to hg should block this one, everything that requires the switch can depend on this one. :)
Summary: Build SeaMonkey with mozilla-central (in a subdir) → Build Thunderbird and SeaMonkey from comm-central
Depends on: 443366
Depends on: 443837
Depends on: 444099
Duplicate of this bug: 390968
Depends on: 444686
Blocks: 444761
Blocks: 445146
Blocks: 445183
Blocks: 445185
Depends on: 445625
Depends on: 445812
Blocks: 446119
Blocks: 446355
http://hg.mozilla.org/comm-central/index.cgi/rev/e4f4569d451a
initial import of code from CVS tag HG_COMM_INITIAL_IMPORT at 2008-07-22 05:18:47 PST, imported and tagged cvs.mozilla.org modules: mozilla/directory/xpcom/ mozilla/mailnews/ mozilla/mail/ mozilla/suite/ mozilla/other-licenses/branding/thunderbird/
When the switch is completed, could you create a bundle of the repository,
as in <http://benjamin.smedbergs.us/blog/tag/mercurial/> ?
Thanks :-)
(In reply to comment #8)
> When the switch is completed, could you create a bundle of the repository,
> as in <http://benjamin.smedbergs.us/blog/tag/mercurial/> ?
> Thanks :-)
> 

A bundle for us won't be needed, (as we did not import past changesets). Just clone our repo, then you can download that bundle and unpack to "src/mozilla" (the dir you cloned our repo to being "src") then run our client.py co and it will update the mozilla-central bundle as well as pull the rest of the source you will need.
From all I see and am told, builds from comm-central can be done and work, so this bug is FIXED. Please file any further issues with the builds or building as dependencies.
Status: NEW → RESOLVED
Closed: 11 years ago
Resolution: --- → FIXED
Blocks: 447590
Blocks: 447604
Blocks: 447636
Blocks: 455727
You need to log in before you can comment on or make changes to this bug.