Now that Firefox 3.5 is out, I wanted to get it running on my 64-bit Debian 5.0 laptop—but there’s no 3.5 package in Sid yet, as of July 2, and mozilla.com only carries 32-bit binary tarballs for Linux. So I had to build Firefox 3.5 from source. Fortunately this turned out to be a lot less painful than I had imagined; this post will show you how I did it, in case you’re in a similar spot.
Build dependencies
The first thing to do is to make sure you’ve installed everything for the build process. Since you’re on a nice, civilized operating system like Debian, the following commands should have you covered:
$ sudo apt-get install build-essential libidl-dev autoconf2.13 $ sudo apt-get build-dep iceweasel
Obtaining the Mozilla source code
Mozilla’s official developer guide recommends downloading individual source archives for those who simply want to build a Firefox release, but I decided to get the source via Mercurial checkout, since this way there will be less to download and re-compile each time a security update comes along. The downside to this is that the initial download takes longer, and the full Mozilla source repository takes up about 686 MB on my hard drive.
First you’ll need to have the Mercurial source control manager installed on your computer, of course. If you don’t have it already, just type the following…
$ sudo apt-get install mercurial
Now change to whichever directory you want to keep the repository in, and run
$ hg clone http://hg.mozilla.org/releases/mozilla-1.9.1 \ mozilla-1.9.1
This will copy the full Firefox 3.5 / Mozilla 1.9.1 development branch to your computer. If you’re on a slow U.S. residential Internet connection like I am, this might be a good time to go do something else.
Once this is done, check out the particular Firefox 3.5 release that you’d like to build. Since there have not yet been any dot releases at the time of this writing, I just did:
$ cd mozilla-1.9.1 $ hg checkout -r FIREFOX_3_5_RELEASE
Configuring, building, and installing
The Mozilla build is controlled by a file called .mozconfig, which can live in your home directory, outside of the source tree. This makes it easy to “set” a particular Firefox build configuration, then reuse it repeatedly in the future without having to dig through old configure.log files or take notes elsewhere.
Create ~/.mozconfig with the following contents:
mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/obj-firefox ac_add_options --prefix=/opt/firefox ac_add_options --enable-application=browser ac_add_options --with-system-zlib ac_add_options --with-system-jpeg ac_add_options --enable-optimize ac_add_options --enable-official-branding ac_add_options --enable-canvas ac_add_options --enable-strip ac_add_options --disable-tests ac_add_options --disable-installer ac_add_options --disable-accessibility ac_add_options --enable-xinerama ac_add_options --with-default-mozilla-five-home=/usr/lib/firefox-3.5
Edit: Some problems have been reported with these particular configuration options; `see below`_ if this doesn’t work for you…
Now you’re ready to actually build Firefox—another good opportunity to go find something else to do for a little while:
$ make -f client.mk build
When the build is done, install it with
$ sudo make -f client.mk install
Close any running instances of Iceweasel, then try starting up your new browser:
$ /opt/firefox/bin/firefox
Later on: getting Firefox updates
Suppose that two weeks from now there is a security update release, Firefox 3.5.1. Since you already have a copy of the Mozilla source repository on your computer and you’ve already completed a full build, downloading and building any patch releases will take significantly less time. For a hypothetical Firefox 3.5.1 build, you would do:
$ hg pull $ hg checkout -r FIREFOX_3_5_1_RELEASE $ make -f client.mk build $ sudo make -f client.mk install
And then restart your web browser.