Open main menu

CDOT Wiki β

Distcc mozilla tutorial

Revision as of 17:09, 20 April 2007 by Cdolivei (talk | contribs) (MOZCONFIG)

What is this?

This is a tutorial to get distcc to compile Mozilla Firefox on Windows using cygwin.

Requirements

  1. Window machines. For distcc to be of any use, there should be at least 2 machines
  2. Cygwin. You will need gcc to build distcc. We build using gcc-3.4.4
  3. Mozilla requirements
  4. Patience

Building distcc

Checkout, build, and install the distcc source

svn co svn://cdot.senecac.on.ca/distcc/trunk
cd trunk && ./configure && make && make install

Checkout the Mozilla source. If you are using the latest version of trunk, than you are fine. If you are building 2.0.0.3 or below, you need to apply a silly patch.

MOZCONFIG

Currently, distcc does not transmit debug .pdb files (i.e., it can only send back one file). So you cannot currently do a debug build. Here is a sample MOZCONFIG file. All you need to do is modify the object directory (MOZ_OBJDIR).

Note the last line, which is required for any MOZCONFIG file that wants to build using distcc.

mk_add_options MOZ_OBJDIR=/cygdrive/c/home/cesar/mozobj
ac_add_options --enable-application=browser
ac_add_options --enable-optimize
ac_add_options --disable-debug
ac_add_options --enable-debugger-info-modules=no
mk_add_options MOZ_CO_PROJECT=browser
mk_add_options MOZ_MAKE_FLAGS="CC='distcc cl' CXX='distcc cl' -j4"

-j4 is quite important. According to the man page, you should set the number of jobs equal to the number of all cpus (or cores) + 2.

Environment

The only required environment variable is DISTCC_CL_HOSTS, which contains a space delimited list of all slave machines. You must set this variable on the master machine (the machine that contains the source code).

export DISTCC_CL_HOSTS="localhost 10.0.0.2 10.0.0.4"

Distcc Daemon

Start the distcc daemon. The only thing you need to change is who is allowed to use the daemon. You can use a space-delimited list of IP addresses, or specify the CIDR mask of an entire subnet.

distccd --allow '10.0.0.0/24' --daemon