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