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.


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:


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.


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.

Last modified 11 years ago Last modified on Nov 8, 2011 5:43:18 AM