Building Firefox 3 on Mac OS X
| Posted: | 2008-08-24 11:34 |
|---|---|
| Tags: | Web, Software Releases, Mercurial |
First of all read the main build page at http://developer.mozilla.org/en/Mac_OS_X_Build_Prerequisites
I already have the following installed:
- The latest iPhone SDK 2.0 final (build 9M2199a) including XCode 3.1
- XQuartz 2.3.0 from http://xquartz.macosforge.org/trac/wiki
- The latest updates to Leopard (10.5.4)
Getting Started
Download and install MacPorts 1.6.0 for your platform from http://www.macports.org/install.php
Install packages needed for grabbing and building Firefox:
$ sudo /opt/local/bin/port sync $ sudo /opt/local/bin/port install mercurial libidl autoconf213
The second stage takes a long time because it builds lots of dependencies. It will stop three times while handling Python. Just keep running the command until everything works. Here's the output I received:
james-gardners-macbook-air:~ james$ sudo /opt/local/bin/port sync
james-gardners-macbook-air:~ james$ sudo /opt/local/bin/port install mercurial libidl autoconf213
---> Fetching bzip2
---> Attempting to fetch bzip2-1.0.5.tar.gz from http://www.bzip.org/1.0.5/
---> Verifying checksum(s) for bzip2
---> Extracting bzip2
---> Applying patches to bzip2
---> Configuring bzip2
---> Building bzip2 with target all
---> Staging bzip2 into destroot
---> Installing bzip2 1.0.5_1
---> Activating bzip2 1.0.5_1
---> Cleaning bzip2
---> Fetching expat
---> Attempting to fetch expat-2.0.1.tar.gz from http://downloads.sourceforge.net/expat
---> Verifying checksum(s) for expat
---> Extracting expat
---> Configuring expat
---> Building expat with target all
---> Staging expat into destroot
---> Installing expat 2.0.1_0
---> Activating expat 2.0.1_0
---> Cleaning expat
---> Fetching gperf
---> Attempting to fetch gperf-3.0.3.tar.gz from http://ftp.gnu.org/gnu/gperf
---> Verifying checksum(s) for gperf
---> Extracting gperf
---> Configuring gperf
---> Building gperf with target all
---> Staging gperf into destroot
---> Installing gperf 3.0.3_0
---> Activating gperf 3.0.3_0
---> Cleaning gperf
---> Fetching libiconv
---> Attempting to fetch libiconv-1.12.tar.gz from http://ftp.gnu.org/gnu/libiconv
---> Verifying checksum(s) for libiconv
---> Extracting libiconv
---> Applying patches to libiconv
---> Configuring libiconv
---> Building libiconv with target all
---> Staging libiconv into destroot
---> Installing libiconv 1.12_0
---> Activating libiconv 1.12_0
---> Cleaning libiconv
---> Fetching ncursesw
---> Attempting to fetch ncurses-5.6.tar.gz from http://ftp.gnu.org/gnu/ncurses
---> Verifying checksum(s) for ncursesw
---> Extracting ncursesw
---> Applying patches to ncursesw
---> Configuring ncursesw
---> Building ncursesw with target all
---> Staging ncursesw into destroot
---> Installing ncursesw 5.6_1
---> Activating ncursesw 5.6_1
---> Cleaning ncursesw
---> Fetching ncurses
---> Verifying checksum(s) for ncurses
---> Extracting ncurses
---> Applying patches to ncurses
---> Configuring ncurses
---> Building ncurses with target all
---> Staging ncurses into destroot
---> Installing ncurses 5.6_0
---> Activating ncurses 5.6_0
---> Cleaning ncurses
---> Fetching gettext
---> Attempting to fetch gettext-0.17.tar.gz from http://ftp.gnu.org/gnu/gettext
---> Verifying checksum(s) for gettext
---> Extracting gettext
---> Applying patches to gettext
---> Configuring gettext
---> Building gettext with target all
---> Staging gettext into destroot
---> Installing gettext 0.17_3
---> Activating gettext 0.17_3
---> Cleaning gettext
---> Fetching python25
---> Attempting to fetch Python-2.5.2.tgz from http://www.python.org//ftp/python/2.5.2/
---> Verifying checksum(s) for python25
---> Extracting python25
---> Applying patches to python25
---> Configuring python25
---> Building python25 with target all libpython2.5.dylib
---> Staging python25 into destroot
---> Installing python25 2.5.2_5+darwin_9
---> Activating python25 2.5.2_5+darwin_9
To fully complete your installation and make python 2.5 the default, please run
sudo port install python_select
sudo python_select python25
---> Cleaning python25
---> Fetching py25-bz2
---> Attempting to fetch Python-2.5.2.tar.bz2 from http://www.python.org/ftp/python/2.5.2/
---> Verifying checksum(s) for py25-bz2
---> Extracting py25-bz2
---> Configuring py25-bz2
---> Building py25-bz2 with target build
Error: Target org.macports.build returned: shell command " cd "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_ports_python_py25-bz2/work/Python-2.5.2/Modules" && /opt/local/bin/python2.5 setup.py build " returned error 1
Command output: running build
running build_ext
building 'bz2' extension
creating build
creating build/temp.macosx-10.3-i386-2.5
-DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -I/opt/local/include/ -I/opt/local/Library/Frameworks/Python.framework/Versions/2.5/include/python2.5 -c bz2module.c -o build/temp.macosx-10.3-i386-2.5/bz2module.o
unable to execute -DNDEBUG: No such file or directory
error: command '-DNDEBUG' failed with exit status 1
Error: The following dependencies failed to build: py25-bz2 py25-hashlib openssl zlib py25-zlib
Error: Status 1 encountered during processing.
james-gardners-macbook-air:~ james$ sudo /opt/local/bin/port install mercurial libidl autoconf213
Password:
---> Building py25-bz2 with target build
---> Staging py25-bz2 into destroot
---> Installing py25-bz2 2.5.2_0
---> Activating py25-bz2 2.5.2_0
---> Cleaning py25-bz2
---> Fetching zlib
---> Attempting to fetch zlib-1.2.3.tar.bz2 from http://www.zlib.net/
---> Attempting to fetch zlib-1.2.3.tar.bz2 from http://www.gzip.org/zlib/
---> Verifying checksum(s) for zlib
---> Extracting zlib
---> Applying patches to zlib
---> Configuring zlib
---> Building zlib with target all
---> Staging zlib into destroot
---> Installing zlib 1.2.3_1
---> Activating zlib 1.2.3_1
---> Cleaning zlib
---> Fetching openssl
---> Attempting to fetch openssl-0.9.8h.tar.gz from http://www.openssl.org/source/
---> Verifying checksum(s) for openssl
---> Extracting openssl
---> Applying patches to openssl
---> Configuring openssl
---> Building openssl with target all
---> Staging openssl into destroot
---> Installing openssl 0.9.8h_0
---> Activating openssl 0.9.8h_0
---> Cleaning openssl
---> Fetching py25-hashlib
---> Verifying checksum(s) for py25-hashlib
---> Extracting py25-hashlib
---> Configuring py25-hashlib
---> Building py25-hashlib with target build
Error: Target org.macports.build returned: shell command " cd "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_ports_python_py25-hashlib/work/Python-2.5.2/Modules" && /opt/local/bin/python2.5 setup.py build " returned error 1
Command output: running build
running build_ext
building '_hashlib' extension
creating build
creating build/temp.macosx-10.3-i386-2.5
-DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -I/opt/local/include -I/opt/local/Library/Frameworks/Python.framework/Versions/2.5/include/python2.5 -c _hashopenssl.c -o build/temp.macosx-10.3-i386-2.5/_hashopenssl.o
unable to execute -DNDEBUG: No such file or directory
error: command '-DNDEBUG' failed with exit status 1
Error: The following dependencies failed to build: py25-hashlib py25-zlib
Error: Status 1 encountered during processing.
james-gardners-macbook-air:~ james$ sudo /opt/local/bin/port install mercurial libidl autoconf213
Password:
---> Building py25-hashlib with target build
---> Staging py25-hashlib into destroot
---> Installing py25-hashlib 2.5.2_0
---> Activating py25-hashlib 2.5.2_0
---> Cleaning py25-hashlib
---> Fetching py25-zlib
---> Verifying checksum(s) for py25-zlib
---> Extracting py25-zlib
---> Configuring py25-zlib
---> Building py25-zlib with target build
---> Staging py25-zlib into destroot
---> Installing py25-zlib 2.5.2_0
---> Activating py25-zlib 2.5.2_0
---> Cleaning py25-zlib
---> Fetching mercurial
---> Attempting to fetch mercurial-1.0.1.tar.gz from http://www.selenic.com/mercurial/release/
---> Verifying checksum(s) for mercurial
---> Extracting mercurial
---> Configuring mercurial
---> Building mercurial with target build
---> Staging mercurial into destroot
---> Installing mercurial 1.0.1_1
---> Activating mercurial 1.0.1_1
---> Cleaning mercurial
---> Fetching pkgconfig
---> Attempting to fetch pkg-config-0.23.tar.gz from http://pkg-config.freedesktop.org/releases/
---> Verifying checksum(s) for pkgconfig
---> Extracting pkgconfig
---> Configuring pkgconfig
---> Building pkgconfig with target all
---> Staging pkgconfig into destroot
---> Installing pkgconfig 0.23_0
---> Activating pkgconfig 0.23_0
---> Cleaning pkgconfig
---> Fetching glib2
---> Attempting to fetch glib-2.16.5.tar.bz2 from http://mandril.creatis.insa-lyon.fr/linux/gnome.org/sources/glib/2.16/
---> Verifying checksum(s) for glib2
---> Extracting glib2
---> Applying patches to glib2
---> Configuring glib2
---> Building glib2 with target all
---> Staging glib2 into destroot
---> Installing glib2 2.16.5_0+darwin_9
---> Activating glib2 2.16.5_0+darwin_9
---> Cleaning glib2
---> Fetching libidl
---> Attempting to fetch libIDL-0.8.10.tar.bz2 from http://mandril.creatis.insa-lyon.fr/linux/gnome.org/sources/libIDL/0.8/
---> Verifying checksum(s) for libidl
---> Extracting libidl
---> Applying patches to libidl
---> Configuring libidl
---> Building libidl with target all
---> Staging libidl into destroot
---> Installing libidl 0.8.10_0
---> Activating libidl 0.8.10_0
---> Cleaning libidl
---> Fetching autoconf213
---> Attempting to fetch autoconf-2.13.tar.gz from http://ftp.gnu.org/gnu/autoconf
---> Verifying checksum(s) for autoconf213
---> Extracting autoconf213
---> Configuring autoconf213
---> Building autoconf213 with target all
---> Staging autoconf213 into destroot
---> Installing autoconf213 2.13_0
---> Activating autoconf213 2.13_0
---> Cleaning autoconf213
Now get the Firefox source code using Mercurial:
hg clone http://hg.mozilla.org/mozilla-central
To build it you will need to modify your path to include the MacPorts software:
export PATH=$PATH:/opt/local/bin
Now you can start the build:
cd mozilla-central make -f client.mk build
This command will run for hours but when it is finished you will have a Firefox build.
Run the build in a terminal like this (you have to close any existing Friefox browsers though):
./obj-ff/dist/bin/firefox-bin
Run the debug build by clicking on the MinefieldDebug icon in the same directory.
And here it is running: