distcc

  • By johnsca
  • Latest version (#0)
  • precise
  • Stable
  • Edge

Description

distcc is a program to distribute compilation of C or C++ code across
several machines on a network. distcc should always generate the same
results as a local compile, is simple to install and use, and is often
significantly faster than a local compile. distcc does not require
all machines to share a filesystem, have synchronized clocks, or to
have the same libraries or header files installed.


Overview

distcc is a program to distribute builds of C, C++, Objective C or Objective C++
code across several machines on a network. distcc should always generate the
same results as a local build, is simple to install and use, and is usually much
faster than a local compile.

distcc does not require all machines to share a filesystem, have synchronized
clocks, or to have the same libraries or header files installed. They can even
have different processors or operating systems, if cross-compilers are
installed.

More information about distcc can be found here.

Usage

It's a pretty simple charm that provides a peer interface (distcc-cluster). This
interface allows you to deploy the distcc charm as a single node and add-unit to
create a distcc farm or, deploy x number of them in one command to easily create
a distcc farm.

First, start by bootstrapping your environment:

juju bootstrap

Then, deploy the service:

juju deploy distcc

Finally, expose the service to the world:

juju expose distcc

You can check the public address of the instance by executing juju status.

Configuration

The configurable options are pretty self explanatory and are detailed below:

  • port: Port to use to run distcc (default: 3632)
  • nice: You can specify a (positive) nice level for the distcc process here
    (default: 10)
  • jobs: You can specify a maximum number of jobs, the server will accept
    concurrently (default: 10)
  • zeroconf: Enable Zeroconf support? If enabled, distccd will register via
    mDNS/DNS-SD. It can then automatically be found by zeroconf enabled distcc
    clients without the need of a manually configured (default: false) host list.
  • distcc_options: distcc options for each host in the farm (default: cpp,lzo)
  • existing_distcc: Connect this node to an existing distcc (host:port)
    (default: auto)

Note: To be able to connect distcc to an existing distcc farm (by changing the
existing_distcc option), this service needs to be exposed.

Configuration

jobs
(int) You can specify a maximum number of jobs, the server will accept concurrently.
10
zeroconf
(string) Enable Zeroconf support?# If enabled, distccd will register via mDNS/DNS-SD. It can then automatically be found by zeroconf enabled distcc clients without the need of a manually configured host list.
false
distcc_options
(string) distcc options for each host in the farm
cpp,lzo
existing_distcc
(string) Connect this node to an existing distcc ( host:port ).
auto
port
(int) Port to use to run distcc
3632
nice
(int) You can specify a (positive) nice level for the distcc process here
10