Subject: [ RFC: crosscompiling (src and pkgsrc) with distcc]
To: None <>
From: Reinoud Zandijk <>
List: tech-pkg
Date: 01/03/2005 01:14:50
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline

Hiya folks,
Allthough a bit late, here is my RFC again on crosscompiling pkgsrc; it is 
known to work to crosscompile for my Sparc on my Alpha.


----- Forwarded message from Reinoud Zandijk <> -----
Crosscompiling with distcc HOWTO

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

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

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

	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 :
	./ -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' 

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

	distccd -a  --listen -p 3632
this will start the `distcc' daemon to listen on the 192.168.0/24 network 
and listen on 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 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 :)


----- End forwarded message -----

Content-Type: application/pgp-signature
Content-Disposition: inline

Version: GnuPG v1.2.6 (NetBSD)