Difference between revisions of "User:Jamesboston"

From CDOT Wiki
Jump to: navigation, search
m (Added note about Mercurial. Changed irc nick.)
m (Building Firefox)
 
(58 intermediate revisions by the same user not shown)
Line 1: Line 1:
 
= Profile =
 
= Profile =
  
James Boston is working on the [http://zenit.senecac.on.ca/wiki/index.php/Mozilla_Developer_Resource_Kit Mozilla Developer Resource Kit].
+
James Boston is a Computer Programmer.
  
 
Blog & homepage:<br />
 
Blog & homepage:<br />
 
[http://jamesboston.ca jamesboston.ca]
 
[http://jamesboston.ca jamesboston.ca]
  
Contact: <br />
+
Email: <br />
Email james at the domain that has my name or look for me on irc:<br />
+
mozilla [at] jamesboston [dot] ca<br />
 +
 
 +
IRC: <br />
 
'''jboston''' on irc://irc.mozilla.org/seneca
 
'''jboston''' on irc://irc.mozilla.org/seneca
  
 +
= Projects =
 +
 +
=== Fixing nsIProcess ===
 +
 +
Project page: [[User:Jamesboston/nsIProcess|Fixing nsIProcess]]
 +
 +
The API in Firefox for managing external processes has never been fully implemented. This project aims to implement the existing API and extend the API to include inter-process communication.
  
= Building Firefox =
+
=== The Canvas 3D JS Libary (C3DL) ===
 +
 
 +
Project page: [[Canvas3D_JS_Library | C3DL]]
 +
 
 +
C3DL is a JavaScript library that will make it easier to write 3D applications using <del>canvas 3d</del> WebGL. (''Mozilla's Canvas 3D project has been superseded by the new WebGL standard that will also by used by WebKit.'') It will provide a set of math, scene, and 3d object classes to make the canvas more accessible for developers that want to develop 3D content in browser.
 +
 
 +
=== Mozilla Developer Resource Kit ===
 +
 
 +
Project page: [[Mozilla_Developer_Resource_Kit|Mozilla Developer Resource Kit]]
 +
 
 +
Creating a package that contains everything a developer needs, including documentation, to get started with Firefox. The plan is to make it available as a live Fedora DVD for developers in countries where bandwidth is scarce.
 +
 
 +
'''This project is of uncertain status. It's a multi-semester project that is worked on by a new student group each semester, but it doesn't appear to be under development at this time.'''
 +
 
 +
=== Portable DXR ===
 +
 
 +
Project page: [[Portable_DXR|Portable DXR]]
 +
 
 +
This is closely related to the MDRK. The aim is to package the Mozilla developer documentation and the DXR source browsing tool in an extension that can be easily distributed/installed mostly likely as a XUL/Prism application. As an added bonus, this is a group project where the team members are experimenting with using traditional project planning tools and open source development methods.
 +
 
 +
'''This project is defunct. It was a group project for school and some members have graduated. Plus, the nominal client in not interested in completion.'''
 +
 
 +
= Software =
 +
 
 +
=== Process Manager Extension ===
 +
 
 +
A binary XPCOM extension that allows processes external to Firefox to be started and stopped. Currently only Win32 is supported. It is used in the SHTTPD extension.
 +
 
 +
Further notes on usage: http://jamesboston.ca/cms/node/41
 +
 
 +
Download: http://jamesboston.ca/extensions/processmanager.xpi
 +
 
 +
Source: http://jamesboston.ca/extensions/processmanager.zip
 +
 
 +
=== SHTTPD Extension ===
 +
 
 +
This is a proof of concept. Installing this extension will start a tiny webserver that runs locally. The purpose of this is to eventually provide a way to distribute web application as extensions so they can be run locally/offline. At present, when the browser starts the server also starts and installs an icon to the system tray. It only runs on Win32 machines.
 +
 
 +
Download: http://jamesboston.ca/extensions/shttpd.xpi
  
''Note: These instructions are good for Firefox 3.0.*. However, for Firefox 3.1.*, cvs has been replaced with Mercurial. These notes are not yet updated to reflect this.''
+
(The server is licensed as beerware and is available on its own at http://shttpd.sourceforge.net/).
  
== Building on Windows Vista ==
+
=== Open in Editor Extension ===
  
Install Visual Studio:
+
This extension will open source code files from http://mxr.mozilla.org in an editor on the users machine. Simply right click on the loaded page and select the Open in Editor option from the pop up context menu. The user may choose any editor through preference settings. If no preferences are selected the extension defaults to gedit on Linux, notepad on Windows, and (currently) nothing on OS X.  
(The express version will work.)
 
http://msdn2.microsoft.com/en-us/vstudio/aa700736.aspx
 
  
Get Microsoft Windows Software Development Kit Update for Windows Vista:
+
Download: http://zenit.senecac.on.ca/wiki/imgs/Openineditor.xpi
http://www.microsoft.com/downloads/details.aspx?FamilyID=4377f86d-c913-4b5c-b87e-ef72e5b4e065&DisplayLang=en
 
  
Download and install Mozilla Build, a package of software prereqs:
+
=== Ubiquity commands ===
(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.)
 
http://ftp.mozilla.org/pub/mozilla.org/mozilla/libraries/win32/MozillaBuildSetup-1.2.exe
 
  
Open a shell window by right clicking and using admin privileges:
+
[http://matrix.senecac.on.ca/~jwboston/ubiquity/ Subscribe to all my commands]
(The example here is for Visual Studio 2005. The name of the bat file you use should match the directory that Visual Studio is installed in.)
 
c:\mozilla-build\start-msvc8.bat
 
  
Get the makefile instructions to pull the source tree and put it in a directory called mozilla in your home directory:
+
[[Learning_Collaborative_Development_Lab_Fall_2008_Results#Seneca_Library_Search|Search Seneca Library]]
(This will create a mozilla directory in your root i.e C:\Users\YourName or whatever.
 
If a directory called mozilla already exits, even if it's empty, it will cause an error.)
 
cd
 
cvs -d :pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot co mozilla/client.mk
 
  
Checkout the source:
+
[[Learning_Collaborative_Development_Lab_Fall_2008_Results#Paste_to_pastebin|Paste to pastebin]]
cd ~/mozilla
 
make -f client.mk checkout MOZ_CO_PROJECT=browser
 
  
Create and open a hidden file called .mozconfig in your home directory:
+
= Building Firefox =
notepad.exe ~/.mozconfig
 
  
Add the following lines to .mozconfig
+
== Install prerequisites ==
  # My first mozilla config
 
. $topsrcdir/browser/config/mozconfig
 
mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/obj-@CONFIG_GUESS@
 
ac_add_options --disable-optimize
 
ac_add_options --enable-debug
 
ac_add_options --disable-static --enable-shared
 
  
Visual Studio 2008 users may also need to add the following to .mozconfig
+
=== Windows ===
ac_add_options --disable-xpconnect-idispatch
 
ac_add_options --disable-activex
 
ac_add_options --disable-activex-scripting
 
ac_add_options --disable-accessibility
 
  
Start the build (which will take AT LEAST one hour):
+
Install Visual Studio:
cd ~/mozilla
 
make -f client.mk build
 
  
Once the build is finished you should set the following environment variable to turn-off assertion dialogs:
+
''(The Visual C++ 2008 Express version will work.)''
  export XPCOM_DEBUG_BREAK=warn
+
  http://www.microsoft.com/express/download/
  
When you run Firefox for the first time, create and select a new profile called "development" (or any name of your choice) to avoid corrupting your current profile. You can do this while running your current version of Firefox using these command line options:
+
If you paid for the Professional version of Visual Studio you can skip this step. But if you are using an express version, you need to install the Windows Server 2003 Platform SDK in order to get some headers (atlbase.h to be specific) included in the Professional version:
  ~/mozilla/obj*/dist/bin/firefox -Profilemanager -no-remote
+
  http://www.microsoft.com/downloads/details.aspx?FamilyId=0BAF2B35-C656-4969-ACE8-E4C0C0716ADB&displaylang=en
  
The finished build can be found in the ~/mozilla/obj*/dist/bin directory.
+
:''On the above page, DO NOT click the web install link. Scroll further down the page to see a list of download options. You probably want PDSK-x86.exe for a 32-bit machine.''
 +
:[[Image:Windowsserversdkchoices.GIF]]
  
Run the file "mozilla" or "firefox", not the binary "mozilla-bin" or "firefox-bin".
+
Install the Microsoft Windows Software Development Kit Update for Windows 7 (even if you are using Vista or Visual Studio Professional):
 +
http://www.microsoft.com/downloads/details.aspx?familyid=C17BA869-9671-4330-A63E-1FD44E0E2505&displaylang=en
  
For more detailed info about the windows build requirements visit [http://developer.mozilla.org/en/docs/Windows_Build_Prerequisites#Microsoft_Visual_C.2B.2B_and_Windows_SDK Mozilla Developer Center].
+
If you had a previous version of the SDK installed (such as the Vista SDK) open the CMD shell (Start-> All Programs-> Microsoft SDK v7.0-> CMD) and make sure the new version is set as default by entering:
 +
WindowsSdkVer.exe -version:v7.0
  
For more detailed information about Mozilla building visit [http://zenit.senecac.on.ca/wiki/index.php/Real_World_Mozilla_Build_Mozilla_Lab Real World Mozilla Build Lab].
+
Download and install Mozilla Build, a package of software prerequisites:
  
For more info about Visual Studio 2008 problems see [http://crashopensource.blogspot.com/2008/05/vista-building-with-vc9.html Lukas Blakk's blog.]
+
''(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.)''
 +
http://ftp.mozilla.org/pub/mozilla.org/mozilla/libraries/win32/MozillaBuildSetup-1.4.exe
  
== Building on Windows XP ==
+
To open a shell window click:
 +
c:\mozilla-build\start-msvc9.bat
  
The instructions are the same as for Windows Vista. For Firefox 3, the Vista SDK is also required. However, try adding the following additional line to your .mozconfig file first:
+
If everything worked correctly, you should see a list of the required headers:
ac_add_options --disable-vista-sdk-requirements
+
[[Image:Mozilla_sdk_shell_Capture.GIF]]
  
Another problem is that you may not be able to use your home directory because the path may have spaces. If that is the case, just put the mozilla directory in your root (ie. C:\mozilla) and put the .mozconfig file in that directory.
+
''(The example above is for Visual C++ 2008 Express. The name of the bat file you use should match the directory that Visual Studio is installed in. For instance, VS2005 uses start-msvc8.bat)''
  
== Building on Ubuntu and Fedora ==
+
''Special note: You might get an error saying you are targeting the wrong SDK. Try deleting your obj-ff directory if you have one.''
  
Install build pre-requisites for Fedora users:
+
=== Linux ===
 +
==== Fedora ====
 +
Install build pre-requisites for Fedora:
 
  su -c "yum groupinstall 'Development Tools' 'Development Libraries' 'GNOME Software Development'"
 
  su -c "yum groupinstall 'Development Tools' 'Development Libraries' 'GNOME Software Development'"
 +
su -c "yum install mercurial autoconf213"
  
Install build pre-requisites for Ubuntu users:
+
Additional Fedora 11 pre-requisites:
 +
su -c 'yum install libnotify-devel'
 +
 
 +
Additional Fedora 10 pre-requisites:
 +
su -c 'yum install libXt-devel'
 +
 
 +
==== Ubuntu ====
 +
Install Firefox 3 build pre-requisites for Ubuntu 8.10 and 9.04:
 
  sudo apt-get install build-essential
 
  sudo apt-get install build-essential
  sudo apt-get build-dep mozilla-firefox
+
  sudo apt-get build-dep firefox
 +
sudo apt-get install mercurial libasound2 libasound2-dev curl libcurl4-gnutls-dev libnotify-dev
  
Get the makefile instructions to pull the source tree and put it in a directory called mozilla in your home directory:
+
=== OS X ===
  cd
+
 
cvs -d :pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot co mozilla/client.mk
+
You should have [http://developer.apple.com/TOOLS/Xcode/ Xcode] installed. You don't need to use Xcode for editing source files, but you will need the developer SDK that comes with it.
 +
 
 +
In order to build Firefox you will need something called MacPorts which can be downloaded from here:
 +
  http://www.macports.org/install.php
 +
 
 +
After downloading and installing MacPorts you can then install the pre-requisites:
 +
sudo port sync
 +
sudo port install mercurial libidl autoconf213
 +
 
 +
=== autoconf notes ===
 +
The build system should know to use autoconf 2.13 instead of later versions automatically, but on some *nix systems it may be necessary to specify it manually:  
 +
export AUTOCONF=autoconf213
 +
 
 +
Or on some systems you may need to set AUTOCONF this way instead:
 +
export AUTOCONF=autoconf2.13
 +
 
 +
== Configuration ==
  
Checkout the source:
+
You need to create a hidden file for the build system that contains instructions on how you want your build completed.
cd ~/mozilla
 
make -f client.mk checkout MOZ_CO_PROJECT=browser
 
  
Create and open a hidden file called .mozconfig in your home directory:
+
Create and open a hidden file called .mozconfig in your home directory using notepad or gedit or vim:
  gedit ~/.mozconfig
+
  notepad.exe ~/.mozconfig
  
 
Add the following lines to .mozconfig
 
Add the following lines to .mozconfig
Line 111: Line 161:
 
  . $topsrcdir/browser/config/mozconfig
 
  . $topsrcdir/browser/config/mozconfig
 
  mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/obj-@CONFIG_GUESS@
 
  mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/obj-@CONFIG_GUESS@
 +
# Comment the next 2 lines for non-debug builds
 
  ac_add_options --disable-optimize
 
  ac_add_options --disable-optimize
 
  ac_add_options --enable-debug
 
  ac_add_options --enable-debug
ac_add_options --disable-static --enable-shared
 
  
Start the build (which will take AT LEAST one hour):
+
If you are using a multi-core computer for building, you can try adding a flag to speed up compile times. Use a value of ''((# of cores)*2)+1'' (ie. five for two cores):
 +
mk_add_options MOZ_MAKE_FLAGS=-j5
 +
 
 +
For OS X (Leopard) add:
 +
ac_add_options --with-macos-sdk=/Developer/SDKs/MacOSX10.5.sdk
 +
 
 +
== Getting the source ==
 +
 
 +
If you are attempting to build Firefox 3.1 or greater you can checkout the source using mercurial as described below. When creating a working directory and checking out the source it doesn't really matter where you put it, but avoid paths that contain spaces. Spaces in the path name will cause the build to fail. For Windows XP users, your home directory path almost certainly has spaces. If that is the case, just put the mozilla directory in your root (ie. C:\mozilla) and put the .mozconfig file in that directory. If your user name doesn't have space you can checkout the source to your home directory like this:
 +
cd
 +
mkdir mozilla
 +
cd mozilla
 +
hg clone http://hg.mozilla.org/mozilla-central/ src
 +
 
 +
It is still possible to checkout older versions of Firefox using cvs:
 +
cd
 +
cvs -d :pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot co mozilla/client.mk
 
  cd ~/mozilla
 
  cd ~/mozilla
  make -f client.mk build
+
  make -f client.mk checkout MOZ_CO_PROJECT=browser
 +
 
 +
== Starting the build ==
 +
 
 +
You need to change to the directory that contains the source code and then run the make command:
 +
cd ~/mozilla/src
 +
time make -f client.mk build
 +
 
 +
=== Special Fedora 11 note ===
 +
 
 +
You may need to patch the source before building because of a bug in Breakpad that shows up with the latest version of gcc (which F11 uses).
 +
 
 +
Patch and details here:
 +
https://bugzilla.mozilla.org/show_bug.cgi?id=485019
 +
 
 +
== Running the build ==
  
 
Once the build is finished you should set the following environment variable to turn-off assertion dialogs:
 
Once the build is finished you should set the following environment variable to turn-off assertion dialogs:
 
  export XPCOM_DEBUG_BREAK=warn
 
  export XPCOM_DEBUG_BREAK=warn
  
When you run Firefox for the first time, create and select a new profile called "development" (or any name of your choice) to avoid corrupting your current profile. You can do this while running your current version of Firefox using these command line options:
+
When you run your build for the first time, create and select a new profile called "development" (or any name of your choice) to avoid corrupting your current profile.  
~/mozilla/obj*/dist/bin/firefox -Profilemanager -no-remote
 
  
The finished build can be found in the ~/mozilla/obj*/dist/bin directory.
+
Windows and Linux:
 +
~/mozilla/src/obj*/dist/bin/firefox -profilemanager
  
Run the file "mozilla" or "firefox", not the binary "mozilla-bin" or "firefox-bin".
+
OS X:
 +
~/mozilla/src/obj*/dist/MinefieldDebug.app/Contents/MacOS/firefox
  
For more detailed information visit [http://zenit.senecac.on.ca/wiki/index.php/Real_World_Mozilla_Build_Mozilla_Lab Real World Mozilla Build Lab].
+
== Updating a build ==
  
== Building on OS X ==
+
If you need to refresh the source code:
Build pre-requisites and instructions for OS X can be found at the [http://developer.mozilla.org/en/docs/Mac_OS_X_Build_Prerequisites#Firefox_Quick_Start Mozilla Developer Center.]
+
cd ~/mozilla/src
 +
hg pull -u
  
Although the instructions are good, it may be necessary to take a few extra steps. For instance, the build may have trouble finding the glib dependency. If this happens, try adding this to your path:
+
== Rebuilding the browser ==
export PATH=$PATH:/sw/bin;/sw/sbin
 
 
 
If you have built Firefox in your home directory and are trying to start it from the command line try these steps:
 
cd ~/mozilla/dist/Minefield.app/Contents/MacOS
 
./firefox -Profilemanager -no-remote
 
 
 
= Software =
 
  
== SHTTPD Extension ==
+
If you want to rebuild the entire browser just repeat the instructions for starting the build above. However, it is possible to do incremental builds where only the source code you have changed is compiled.
  
This is a proof of concept. Installing this extension will start a tiny webserver that runs locally. The purpose of this is to eventually provide a way to distribute web application as extensions so they can be run locally/offline. At present, when the browser starts the server also starts and installs an icon to the system tray. It only runs on Win32 machines.
+
For instance, to rebuild after a change in the xpcom module try:
 +
make -C ~/mozilla/src/obj*/xpcom
  
Download: http://jamesboston.ca/extensions/shttpd.xpi
+
Or as a more general form:
 +
make -C [the object directory corresponding to the source directory that has changed]
  
(The server is licensed as beerware and is available on its own at http://shttpd.sourceforge.net/).
+
In most cases this will relink the changes and create a new browser binary. But there's no hard and fast rule about when you can successfully do an incremental build. Sometimes you can burrow a few levels into the object tree and sometime you need to build from the very top. It may take a bit of trial and error to discover what works.
  
== Open in Editor Extension ==
+
= Tunneling a VNC session =
  
This extension will open source code files from http://mxr.mozilla.org in an editor on the users machine. Simply right click on the loaded page and select the Open in Editor option from the pop up context menu. The user may choose any editor through preference settings. If no preferences are selected the extension defaults to gedit on Linux, notepad on Windows, and (currently) nothing on OS X.
+
[[Tunnel_VNC_through_SSH|Instruction page]]
  
Download: http://zenit.senecac.on.ca/wiki/imgs/Openineditor.xpi
+
Some of the Mac minis in the ORI area at Seneca are configured to accept VNC connections, but without an SSH tunnel are too slow to be useful. These instructions will help you get setup.

Latest revision as of 16:55, 2 March 2010

Profile

James Boston is a Computer Programmer.

Blog & homepage:
jamesboston.ca

Email:
mozilla [at] jamesboston [dot] ca

IRC:
jboston on irc://irc.mozilla.org/seneca

Projects

Fixing nsIProcess

Project page: Fixing nsIProcess

The API in Firefox for managing external processes has never been fully implemented. This project aims to implement the existing API and extend the API to include inter-process communication.

The Canvas 3D JS Libary (C3DL)

Project page: C3DL

C3DL is a JavaScript library that will make it easier to write 3D applications using canvas 3d WebGL. (Mozilla's Canvas 3D project has been superseded by the new WebGL standard that will also by used by WebKit.) It will provide a set of math, scene, and 3d object classes to make the canvas more accessible for developers that want to develop 3D content in browser.

Mozilla Developer Resource Kit

Project page: Mozilla Developer Resource Kit

Creating a package that contains everything a developer needs, including documentation, to get started with Firefox. The plan is to make it available as a live Fedora DVD for developers in countries where bandwidth is scarce.

This project is of uncertain status. It's a multi-semester project that is worked on by a new student group each semester, but it doesn't appear to be under development at this time.

Portable DXR

Project page: Portable DXR

This is closely related to the MDRK. The aim is to package the Mozilla developer documentation and the DXR source browsing tool in an extension that can be easily distributed/installed mostly likely as a XUL/Prism application. As an added bonus, this is a group project where the team members are experimenting with using traditional project planning tools and open source development methods.

This project is defunct. It was a group project for school and some members have graduated. Plus, the nominal client in not interested in completion.

Software

Process Manager Extension

A binary XPCOM extension that allows processes external to Firefox to be started and stopped. Currently only Win32 is supported. It is used in the SHTTPD extension.

Further notes on usage: http://jamesboston.ca/cms/node/41

Download: http://jamesboston.ca/extensions/processmanager.xpi

Source: http://jamesboston.ca/extensions/processmanager.zip

SHTTPD Extension

This is a proof of concept. Installing this extension will start a tiny webserver that runs locally. The purpose of this is to eventually provide a way to distribute web application as extensions so they can be run locally/offline. At present, when the browser starts the server also starts and installs an icon to the system tray. It only runs on Win32 machines.

Download: http://jamesboston.ca/extensions/shttpd.xpi

(The server is licensed as beerware and is available on its own at http://shttpd.sourceforge.net/).

Open in Editor Extension

This extension will open source code files from http://mxr.mozilla.org in an editor on the users machine. Simply right click on the loaded page and select the Open in Editor option from the pop up context menu. The user may choose any editor through preference settings. If no preferences are selected the extension defaults to gedit on Linux, notepad on Windows, and (currently) nothing on OS X.

Download: http://zenit.senecac.on.ca/wiki/imgs/Openineditor.xpi

Ubiquity commands

Subscribe to all my commands

Search Seneca Library

Paste to pastebin

Building Firefox

Install prerequisites

Windows

Install Visual Studio:

(The Visual C++ 2008 Express version will work.)

http://www.microsoft.com/express/download/

If you paid for the Professional version of Visual Studio you can skip this step. But if you are using an express version, you need to install the Windows Server 2003 Platform SDK in order to get some headers (atlbase.h to be specific) included in the Professional version:

http://www.microsoft.com/downloads/details.aspx?FamilyId=0BAF2B35-C656-4969-ACE8-E4C0C0716ADB&displaylang=en
On the above page, DO NOT click the web install link. Scroll further down the page to see a list of download options. You probably want PDSK-x86.exe for a 32-bit machine.
Windowsserversdkchoices.GIF

Install the Microsoft Windows Software Development Kit Update for Windows 7 (even if you are using Vista or Visual Studio Professional):

http://www.microsoft.com/downloads/details.aspx?familyid=C17BA869-9671-4330-A63E-1FD44E0E2505&displaylang=en

If you had a previous version of the SDK installed (such as the Vista SDK) open the CMD shell (Start-> All Programs-> Microsoft SDK v7.0-> CMD) and make sure the new version is set as default by entering:

WindowsSdkVer.exe -version:v7.0

Download and install Mozilla Build, a package of software prerequisites:

(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.)

http://ftp.mozilla.org/pub/mozilla.org/mozilla/libraries/win32/MozillaBuildSetup-1.4.exe

To open a shell window click:

c:\mozilla-build\start-msvc9.bat

If everything worked correctly, you should see a list of the required headers: Mozilla sdk shell Capture.GIF

(The example above is for Visual C++ 2008 Express. The name of the bat file you use should match the directory that Visual Studio is installed in. For instance, VS2005 uses start-msvc8.bat)

Special note: You might get an error saying you are targeting the wrong SDK. Try deleting your obj-ff directory if you have one.

Linux

Fedora

Install build pre-requisites for Fedora:

su -c "yum groupinstall 'Development Tools' 'Development Libraries' 'GNOME Software Development'"
su -c "yum install mercurial autoconf213"

Additional Fedora 11 pre-requisites:

su -c 'yum install libnotify-devel'

Additional Fedora 10 pre-requisites:

su -c 'yum install libXt-devel' 

Ubuntu

Install Firefox 3 build pre-requisites for Ubuntu 8.10 and 9.04:

sudo apt-get install build-essential
sudo apt-get build-dep firefox
sudo apt-get install mercurial libasound2 libasound2-dev curl libcurl4-gnutls-dev libnotify-dev

OS X

You should have Xcode installed. You don't need to use Xcode for editing source files, but you will need the developer SDK that comes with it.

In order to build Firefox you will need something called MacPorts which can be downloaded from here:

http://www.macports.org/install.php

After downloading and installing MacPorts you can then install the pre-requisites:

sudo port sync
sudo port install mercurial libidl autoconf213

autoconf notes

The build system should know to use autoconf 2.13 instead of later versions automatically, but on some *nix systems it may be necessary to specify it manually:

export AUTOCONF=autoconf213

Or on some systems you may need to set AUTOCONF this way instead:

export AUTOCONF=autoconf2.13

Configuration

You need to create a hidden file for the build system that contains instructions on how you want your build completed.

Create and open a hidden file called .mozconfig in your home directory using notepad or gedit or vim:

notepad.exe ~/.mozconfig

Add the following lines to .mozconfig

# My first mozilla config
. $topsrcdir/browser/config/mozconfig
mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/obj-@CONFIG_GUESS@
# Comment the next 2 lines for non-debug builds
ac_add_options --disable-optimize
ac_add_options --enable-debug

If you are using a multi-core computer for building, you can try adding a flag to speed up compile times. Use a value of ((# of cores)*2)+1 (ie. five for two cores):

mk_add_options MOZ_MAKE_FLAGS=-j5

For OS X (Leopard) add:

ac_add_options --with-macos-sdk=/Developer/SDKs/MacOSX10.5.sdk

Getting the source

If you are attempting to build Firefox 3.1 or greater you can checkout the source using mercurial as described below. When creating a working directory and checking out the source it doesn't really matter where you put it, but avoid paths that contain spaces. Spaces in the path name will cause the build to fail. For Windows XP users, your home directory path almost certainly has spaces. If that is the case, just put the mozilla directory in your root (ie. C:\mozilla) and put the .mozconfig file in that directory. If your user name doesn't have space you can checkout the source to your home directory like this:

cd
mkdir mozilla
cd mozilla
hg clone http://hg.mozilla.org/mozilla-central/ src

It is still possible to checkout older versions of Firefox using cvs:

cd
cvs -d :pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot co mozilla/client.mk
cd ~/mozilla
make -f client.mk checkout MOZ_CO_PROJECT=browser

Starting the build

You need to change to the directory that contains the source code and then run the make command:

cd ~/mozilla/src
time make -f client.mk build

Special Fedora 11 note

You may need to patch the source before building because of a bug in Breakpad that shows up with the latest version of gcc (which F11 uses).

Patch and details here: https://bugzilla.mozilla.org/show_bug.cgi?id=485019

Running the build

Once the build is finished you should set the following environment variable to turn-off assertion dialogs:

export XPCOM_DEBUG_BREAK=warn

When you run your build for the first time, create and select a new profile called "development" (or any name of your choice) to avoid corrupting your current profile.

Windows and Linux:

~/mozilla/src/obj*/dist/bin/firefox -profilemanager

OS X:

~/mozilla/src/obj*/dist/MinefieldDebug.app/Contents/MacOS/firefox

Updating a build

If you need to refresh the source code:

cd ~/mozilla/src
hg pull -u

Rebuilding the browser

If you want to rebuild the entire browser just repeat the instructions for starting the build above. However, it is possible to do incremental builds where only the source code you have changed is compiled.

For instance, to rebuild after a change in the xpcom module try:

make -C ~/mozilla/src/obj*/xpcom

Or as a more general form:

make -C [the object directory corresponding to the source directory that has changed]

In most cases this will relink the changes and create a new browser binary. But there's no hard and fast rule about when you can successfully do an incremental build. Sometimes you can burrow a few levels into the object tree and sometime you need to build from the very top. It may take a bit of trial and error to discover what works.

Tunneling a VNC session

Instruction page

Some of the Mac minis in the ORI area at Seneca are configured to accept VNC connections, but without an SSH tunnel are too slow to be useful. These instructions will help you get setup.