112 lines
3.3 KiB
Text
112 lines
3.3 KiB
Text
$NetBSD: HOWTO-distcc,v 1.3 2020/12/12 10:42:47 fcambus Exp $
|
|
|
|
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 specifically 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 :)
|
|
|