Simple SeaMonkey build

You can build a bleeding-edge, development version of SeaMonkey using the commands below. For complete information, see the build documentation.

Build prerequisites

Hardware Requirements:

The SeaMonkey build process is both I/O- and CPU-intensive, and can take a long time to build even on modern hardware. Minimum and recommended hardware requirements for Mozilla development are:

  • Recommended: 8GB of RAM (having only 4GB RAM and 4GB swap may give memory errors during compile)
  • 35 GB free disk space. This will accomodate Visual Studio 2013 Community Edition, the required SDKs, the MozillaBuild package, the Mercurial source repository and enough free disk space to compile. A fast SSD is recommended; the Firefox build process is I/O-intensive.
  • High speed internet

Installing build tools

If your system is not listed below, see the build prerequisites page.

Debian Linux:
# this one-liner should install all necessary build deps
sudo aptitude install zip mercurial libasound2-dev libcurl4-openssl-dev libnotify-dev libxt-dev libiw-dev libidl-dev mesa-common-dev autoconf2.13 yasm libgtk2.0-dev libdbus-1-dev libdbus-glib-1-dev python-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev libpulse-dev
Ubuntu Linux
# for Ubuntu 12.04 LTS (Precise Pangolin), replace the following line with: sudo apt-get build-dep thunderbird
sudo apt-get build-dep seamonkey
sudo apt-get install zip unzip mercurial g++ make autoconf2.13 yasm libgtk2.0-dev libglib2.0-dev libdbus-1-dev libdbus-glib-1-dev libasound2-dev libcurl4-openssl-dev libnotify-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev libiw-dev libxt-dev mesa-common-dev libpulse-dev
Fedora Linux
CentOS
RHEL:
sudo yum groupinstall 'Development Tools' 'Development Libraries' 'GNOME Software Development'
sudo yum install mercurial autoconf213 glibc-static libstdc++-static yasm wireless-tools-devel mesa-libGL-devel alsa-lib-devel libXt-devel gstreamer-devel gstreamer-plugins-base-devel pulseaudio-libs-devel
# 'Development tools' is defunct in Fedora 19 and above use the following
sudo yum groupinstall 'C Development Tools and Libraries'
sudo yum group mark install "X Software Development"
Mac:
  • Install Xcode Tools. Insert "Mac OS X Install Disc 2", then open XcodeTools.mpkg. (For some Mac OS X versions, you will find it in a directory called "Optional Installs".)
  • Install MacPorts.
  • Run these commands to install the other build tools:
    sudo port sync
    sudo port install mercurial libidl autoconf213 yasm
  • Problems? See Mac OS X build prerequisites.
Windows:
  • Install Visual C++ 2013. Both the professional edition and the express edition will work.
  • You may need to install one or more Windows SDKs. See Windows SDK versions for a quick guide.
  • If you decided on the Windows 8 SDK, you also need the Outlook 2010 MAPI Header Files from Microsoft.
  • Install MozillaBuild, a package of additional build tools. (If you get a message saying this application did not install properly then you should see a windows dialog giving you the option to re-install with the 'correct settings'. After that all should be well.)
  • Open a shell window by running: c:\mozilla-build\start-msvc2013.bat. Even if you're on 64-bit Windows, do not use the files ending in -x64.bat.
  • By default you will arrive in your Windows user home directory which is likely to contain spaces in its path (e.g. C:\Users\myaccount). This can lead to problems later in the building stage. To avoid that, create a directory without spaces in its path (e.g. mkdir /c/mozilla-src) and switch to it before building (cd /c/mozilla-src).

Problems? See Windows build prerequisites.

Building SeaMonkey

Building SeaMonkey requires at least 2 GB of disk space and 256 MB of available RAM.

# Get the source
# for Aurora, use https://hg.mozilla.org/releases/comm-aurora/ and comm-aurora instead
# for Beta, use https://hg.mozilla.org/releases/comm-beta/ and comm-beta instead
# for Release, use https://hg.mozilla.org/releases/comm-release/ and comm-release instead
hg clone https://hg.mozilla.org/comm-central/
cd comm-central
python client.py checkout

# Set up a basic .mozconfig file
echo 'ac_add_options --enable-application=suite' > .mozconfig                # let's build SeaMonkey...
echo 'mk_add_options MOZ_OBJDIR=/path/to/comm-central/obj-sm-release' >> .mozconfig

# Specify amount of parallel building. If the below is left out, a best guess will be taken automatically.
echo 'mk_add_options MOZ_MAKE_FLAGS="-j4"' >> .mozconfig                     # ...quickly.

# Build!
# Note: This requires autoconf 2.13 (at least initially).
# On Windows, be sure to use mozmake instead of make, otherwise parallel building will break.
make -f client.mk
  • For a debug build, you need different configuration options in your .mozconfig file. This requires more disk space, about 3 GB, and twice as much available RAM.
    mk_add_options MOZ_OBJDIR=/path/to/comm-central/obj-sm-debug
    ac_add_options --enable-application=suite
    ac_add_options --enable-debug
    ac_add_options --disable-optimize
    
  • Normally a shared build suffices for debugging purposes but current nightly releases are actually static builds which require even more memory to link. The support for libxul builds is still experimental but it should work if you --disable-mailnews.
  • On Windows, the above commands will create the comm-central directory in %USERPROFILE% which may be some subfolder of c:\Documents and Settings\ on systems upgraded from XP or below. The space in this directory name, or in your user name if it contains one, will cause the configure script to break. To (possibly) fix this, cd to a dir without spaces before doing the "hg clone" command above.

Running SeaMonkey

The SeaMonkey executable can be found in obj-sm-release/dist/bin/ (used to be obj-sm-release/mozilla/dist/bin/) on Windows and Linux and in obj-sm-release/dist/SeaMonkey.app/Contents/MacOS/ on Mac.

How to build again later

In your comm-central directory, run these commands:

# Get the latest source
python client.py checkout

Then just re-run the "(moz)make -f client.mk" command above. (moz)make will only recompile files that changed, but it's still a long haul. An incremental build can be faster.

References