wiki:DevelopmentTools/DistCC

Introduction

distcc can distribute compilations across a network, greatly reducing compile times. Even if you only have one other computer available, it can already make a noticeable difference.

Usage instructions

The following instructions assume your main development machine is running Haiku and the helper machines run Linux.

Preparing helper machines

  • Install distcc, using the package manager or from source
  • Check out the build tools
    svn co http://svn.haiku-os.org/haiku/buildtools/trunk buildtools
    
  • Check out partial Haiku tree
    svn co --depth=immediates http://svn.haiku-os.org/haiku/haiku/trunk haiku
    svn update --set-depth infinity build headers/config headers/os headers/posix
    
  • Build the cross-compilers
    mkdir generated.x86gcc2
    mkdir generated.x86gcc4
    cd generated.x86gcc2
    ../configure --use-32bit --alternative-gcc-output-dir ../generated.x86gcc4 --build-cross-tools ../../buildtools/
    cd ../generated.x86gcc4
    ../configure --use-32bit --alternative-gcc-output-dir ../generated.x86gcc2 --build-cross-tools-gcc4 x86 ../../buildtools/
    cd ..
    
  • Make the cross-compilers available under a verbose name. Run gcc -v to find out the exact version. Verify that they are the same as on the Haiku machine.
    mkdir bin && cd bin
    ln -s ../generated.x86gcc2/cross-tools/i586-pc-haiku/bin/gcc i586-pc-haiku-gcc-2.95.3-haiku-100818
    ln -s ../generated.x86gcc4/cross-tools/i586-pc-haiku/bin/gcc i586-pc-haiku-gcc-4.4.4-haiku-101111
    cd ..
    
  • Start the distcc daemon
    PATH=$PWD/bin:$PATH distccd --allow <IP of Haiku machine>
    

Preparing the Haiku machine

  • Make GCC 2 and 4 available under the verbose names.
    ln -s /boot/develop/abi/x86/gcc2/tools/current/bin/gcc /boot/common/bin/i586-pc-haiku-gcc-2.95.3-haiku-100818
    ln -s /boot/develop/abi/x86/gcc4/tools/current/bin/gcc /boot/common/bin/i586-pc-haiku-gcc-4.4.4-haiku-101111
    
  • Adjust generated.x86gcc2/build/BuildConfig
    HAIKU_CC ?= distcc i586-pc-haiku-gcc-2.95.3-haiku-100818 ;
    
  • Adjust generated.x86gcc4/build/BuildConfig
    HAIKU_CC ?= distcc i586-pc-haiku-gcc-4.4.4-haiku-101111 ;
    
  • Add hostname or IP addresses of the helpers to /boot/common/etc/distcc/hosts Optionally add localhost. If this machine is slower than the helpers, it might slow down the build. You can easily find out by means of a quick benchmark. Even if you don't add localhost, it will still be busy distributing running jam, distributing jobs and linking.

Now you can run jam as usual, but you should pass twice the total number of cores in the distcc network to the -j option. During a build, you can see what is happening by running

distccmon-text 1

If you want to use distcc in combination with with colorgcc, you can mask simply the distcc executable

cd /boot/common/bin
mv distcc distcc_real
wget http://dev.haiku-os.org/raw-attachment/wiki/DevelopmentTools/DistCC/distcc
chmod +x distcc

References

Last modified 14 years ago Last modified on May 22, 2011, 7:24:01 PM

Attachments (1)

Download all attachments as: .zip

Note: See TracWiki for help on using the wiki.