User Tools

Site Tools


distcc

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

distcc [2014/11/24 01:14] (current)
0.0.0.0 created
Line 1: Line 1:
 +====== 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]])
 +  * <s>build2.sihnon.net ([[Hex]])</s> //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|<source lang="text">
 +
 +</source>}}
 +
 +==== Configuring a new cross-compilation environment ====
 +Run the following command on each build host, where <tt>i586</tt> is the name of the new environment.
 +
 +{{Root|<source lang="bash">
 +crossdev -t i586
 +</source>}}
 +
 +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|<source lang="bash">
 +distcc-config --set-hosts "build0.sihnon.net build1.sihnon.net build2.sihnon.net"
 +</source>}}
 +  * Configure portage to use distcc for compilations by adding setting the following option:
 +{{File|/etc/make.conf|<source lang="bash">
 +FEATURES="distcc"
 +</source>}}
 +
 +==== 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 <tt>/usr/lib/distcc/bin/</tt>, with the name of the CHOST to be used, for example, <tt>i686-pc-linux-gnu-wrapper</tt>, containing the following:
 +{{File|/usr/lib/distcc/bin/i686-pc-linux-gnu-wrapper|<source lang="bash">
 +#!/bin/bash
 +exec /usr/lib/distcc/bin/sparc-unknown-linux-gnu-g${0:$[[-2]]} "$@"
 +</source>}}
 +
 +  * Make the wrapper script executable, and replace the unqualified tool symlinks with symlinks to the new wrapper:
 +{{Root|<source lang="bash">
 +cd /usr/lib/distcc/bin
 +chmod a+x i686-pc-linux-gnu-wrapper
 +rm cc gcc c++ g++
 +ln -s i686-pc-linux-gnu-wrapper cc
 +ln -s i686-pc-linux-gnu-wrapper gcc
 +ln -s i686-pc-linux-gnu-wrapper c++
 +ln -s i686-pc-linux-gnu-wrapper g++
 +</source>}}
 +
 +===== See Also =====
 +  * http://www.gentoo.org/doc/en/distcc.xml
 +  * http://www.gentoo.org/doc/en/cross-compiling-distcc.xml
distcc.txt · Last modified: 2014/11/24 01:14 by 0.0.0.0