Using Icecream with QtWebKit
This guide will help you through setting up the Icecream distributed compilation suite on your Ubuntu workstation.
This guide assumes that you are working in a heterogeneous build environment where multiple people are running different versions of their distribution than the rest of the team.
Host Setup
Start by installing the icecc
package as root
:
$ apt-get install icecc
If you are interested in monitoring your compilation jobs, you can also install
the icemon
package.
Note: If you want to trick your teammates into contributing to the
build-farm, well-knowing that they have no interest in using the build-farm
themselves, just convince them to install the icecc
package and ensure that
the daemon is running on their machines.
Scheduler
One computer in your network will have to run a scheduler-daemon for the build-farm. This does not have to be a fast machine and the scheduler can run on a machine that participates in the compilation jobs as well.
To start the scheduler during boot, open the /etc/default/icecc
file and
ensure that the file contains the following:
START_ICECC="true" START_ICECC_SCHEDULER="true"
Remember to restart the icecc
service before the change will take effect:
$ sudo /etc/init.d/icecc restart
Using your Native Compiler on Remote Machines
icecc
supports using a packed down version of your local compiler on the other machines participating in the build-farm.
To generate such package, run:
$ icecc --build-native
The .tar.gz
file it generates has an MD5 sum as name and it is generally
considered to be a good idea to keep that name to avoid collisions when the
file is distributed out to your teammates computers.
To make icecc
your newly created package, run:
$ export ICECC_VERSION="/path/to/md5sum.tar.gz"
Scratchbox Setup
First of all, ensure that icecc is working correctly on your host setup before you start trying to get it working in Scratchbox.
Caveats
Here are my debugging hints that I used when I tried to get this up and running.
Getting Debug Output from icecc
If you want to figure out what is going on with icecc
, during builds, try the following:
$ export ICECC_DEBUG="debug"
This will make icecc
write what it is currently doing and you will be able to
identify which compilers are being executed on the various machines in your
compilation cluster.