Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Fetching contributors…

Octocat-spinner-32-eaf2f5

Cannot retrieve contributors at this time

file 111 lines (78 sloc) 3.274 kb
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110
Crosscompiling with distcc HOWTO
================================

Purpose:
--------
croscompiling of sourcecode in general including NetBSD's source
tree and NetBSD's pkgsrc packages using `pkgsrc/devel/distcc'

Note that this current setup is not intended for build builds as it might
confuse the buildbuild system.

Terminology:
------------

There are multiple terminologies in use for cross building. In pkgsrc, we use

  build platform: the system on which you are doing the compilation of packages

  target platform: the system on which you will run the packages

(An alternative terminology is that used by autoconf:

  build: as above
  host: as "target", above
  target: the architecture that the cross-built compiler produces code for

pkgsrc chooses the more simple build/target terms because the Canadian
Cross situation is not common in pkgsrc. Partially because of the
potential for confusion with autoconf's terminology, we avoid the word
"host".

Target machine setup:
---------------------
1) install `pkgsrc/devel/distcc' package.

2) install helper script "use-distcc" in f.e. /usr/local/bin/:
---------
#!/usr/pkg/bin/tcsh

setenv PATH "/usr/distcc/bin:$PATH"
setenv CC gcc
---------

3) create directory "/usr/distcc/bin" contents with softlinks :
lrwxr-xr-x 1 root wheel 20 Sep 16 02:58 c++@ -> ../../pkg/bin/distcc
lrwxr-xr-x 1 root wheel 20 Sep 16 02:57 cc@ -> ../../pkg/bin/distcc
lrwxr-xr-x 1 root wheel 20 Sep 16 02:58 g++@ -> ../../pkg/bin/distcc
lrwxr-xr-x 1 root wheel 20 Sep 16 02:57 gcc@ -> ../../pkg/bin/distcc


Helper machine setup:
---------------------
1) install `pkgsrc/devel/distcc' package.

2) create a crosscompiler to compile from any architecture to NetBSD/sparc,
go to the NetBSD src dir and run :
./build.sh -a sparc -m sparc -T /usr/gcc-cross-sparc/ tools

this will create a directory called /usr/gcc-cross-sparc/ with the
crosscompilation tools.

3) install helper script "START-distcc'
------------
#!/usr/pkg/bin/tcsh

setenv PATH "/usr/gcc-cross-sparc/sparc--netbsdelf/bin/:$PATH"
setenv DISTCC_VERBOSE 1

distccd -a 192.168.0.137/24 --listen 192.168.0.137 -p 3632
-----------
this will start the `distcc' daemon to listen on the 192.168.0/24 network
and listen on 192.168.0.137 specificly and on port 3632 (why doesn't it do
this on default?)


Compilation of sources (not pkgsrc):
------------------------------------
1) on each helper machine run the `START-distcc' script

2) on the target machine (replace helper1, helper2 etc. by the names/ip
addresses of the helper machines) :
-----------
source /usr/local/bin/use-distcc
setenv DISTCC_HOSTS "helper1 helper2 helper3"
cd .../sourcedir
make -j2 target
-----------


Compilation of pkgsrc packages:
-------------------------------
1) on each helper machine run the `START-distcc' script

2) on the target machine, do NOT run the `use-distcc' script, go to the
package dir and set :

set the helpers (,lzo addition sets compression of the data transport):
setenv DISTCC_HOSTS "helper1 helper2 helper3,lzo"

instruct pkgsrc to use distcc:
setenv PKGSRC_COMPILER "distcc gcc"

set the concurrency level (not all packages allow this)
setenv BUILD_MAKE_FLAGS "-j2"

compile/update package
make update

thats all :)

Something went wrong with that request. Please try again.