====== Distcc ======
===== Overview =====
Distcc is used to compile packages faster on slow machines, such as [[Santo]] or the virtual machines, by doing some of the grunt work on physical hosts.
===== Build Hosts =====
* build0.sihnon.net ([[River]])
* build1.sihnon.net ([[Badger]])
* build2.sihnon.net ([[Hex]]) //todo//
The build hosts use the following architectures:
{| class="wikitable" cellspacing="10"
|+ Architecture details
|-
! Name
! Value
|-
| **CHOST**
| x86_64-pc-linux-gnu
|-
| **gcc version**
| 4.4.2
|}
The following cross-compilation environments are also available:
* i586-pc-linux-gnu
* i686-pc-linux-gnu
===== Configuring a build host =====
* Install {{Package|direct=yes|sys-devel/distcc}} {{USEFlag|{{EnableFlag|avahi}}}}, and {{Package|direct=yes|sys-devel/crossdev}}
* Configure the distcc daemon to accept connections from local machines only
{{File|/etc/conf.d/distccd|}}
==== Configuring a new cross-compilation environment ====
Run the following command on each build host, where i586 is the name of the new environment.
{{Root|}}
This command will build the necessary tools for cross-compilation, and will take a considerable time to run. To serve as a progress check, the following stages are run:
* binutils
* linux-headers-quick
* glibc-headers
* gcc-stage1
* linux-headers
* glibc
* gcc-stage2
===== Configuring a build client =====
If the client has the same CHOST as all the build hosts, then setting up distcc is straightforward:
* Install {{Package|direct=yes|sys-devel/distcc}} {{USEFlag|{{EnableFlag|avahi}}}}
* Configure distcc to use each of the available build hosts with the following command:
{{Root|}}
* Configure portage to use distcc for compilations by adding setting the following option:
{{File|/etc/make.conf|}}
==== Configuring a build client with a different CHOST to the build hosts ====
As explained in the Gentoo documentation, set up a wrapper script to have distcc tell the build host which environment to use for compilation.
* Create the wrapper script in /usr/lib/distcc/bin/, with the name of the CHOST to be used, for example, i686-pc-linux-gnu-wrapper, containing the following:
{{File|/usr/lib/distcc/bin/i686-pc-linux-gnu-wrapper|}}
* Make the wrapper script executable, and replace the unqualified tool symlinks with symlinks to the new wrapper:
{{Root|}}
===== See Also =====
* http://www.gentoo.org/doc/en/distcc.xml
* http://www.gentoo.org/doc/en/cross-compiling-distcc.xml