bsdadminscripts distcc und i386

lockdoc

Well-Known Member
Hallo,

Ich habe mir erstmal das wiki zu distcc durchgelesen.

Hier soll man bei einem Build eines i386 Clients folgendes setzen:
Code:
.if ${.CURDIR:M/usr/ports/*}
CFLAGS+=	-m32
.endi

Und natuerlich die distcc flags
Code:
CC=	/usr/local/bin/distcc cc
CXX=	/usr/local/bin/distcc c++

Damit dass dann alles klappt muesste man wohl noch folgendes setzen
Code:
FORCE_MAKE_JOBS=YES
MAKE_JOBS_NUMBER=10


Wenn ich jetzt allerdings Das wiki von bsdadminscripts lese, dann scheint das ganze ueberfluessig zu sein, da ja in der /usr/local/etc/buildflags.conf folgendes steht:
Code:
# ---< configure buildworld/buildkernel >--------------------------------------
/usr/src | /usr/src/*{
        USE_DISTCC
        #USE_CCACHE
        THREADS=                8
        KERNCONF=               TRINKERNEL
        # Don't clean.
        NO_CLEAN
}

Hier wird allerdings keine Option fuer einen i386 Build gesetzt. Bin ich daher richtig in der Annahme, dass folgendes zwingend notwendig in der /etc/make.conf ist, auch wenn ich die bsdadminscripts nutze ?:
Code:
.if ${.CURDIR:M/usr/ports/*}
CFLAGS+=	-m32
.endi



Jetzt gibt es allerdings noch ein weiteren interessanten Wikieintrag: Crossbuilding
Hier wird das Target via
Code:
TARGET=			i386
gesetzt.

Die frage ist nun. Was genau soll ich denn jetzt alles in der make.conf noch setzen, wenn ich distcc via den bsdadminscripts nutze?
 
Ah OK, der letzte Eintrag war ja was ganz anderes, da geht es um Crossbuilding.
Das funktioniert leider auch nicht ganz wie im wiki beschrieben.

Wenn ich dann versuche auf dem Client Rechner die world und Kernel zu installieren sucht er nach einem Ordner /usr/obj/KERNEL/i386, aber es wurde der ordner /usr/obj/KERNEL/i386.i386 angelegt.
Den hatte ich dann einfach umkopiert, dann lief es, bis er die Datei install genommen hat. Da hat er dann mehrere symbole nicht gefunden.
Das konnte ich umgehen, indem ich die install reinkopiert habe, die ich auf dem Client schonmal gebaut hatte.

Aber auch dann, kamen wieder Fehler als es um die linux header ging. Hier gab es dann irgendein amd64 vs i386 Problem und ich hab dann erstmal aufgehoert da rumzuwurschteln.

Mit distcc habe ich nun folgendes in meiner make.conf fuer den kernel/world build und das laeuft sauber durch
Code:
.if ${.CURDIR:M/usr/src/*}
CC=                     /usr/local/bin/distcc cc
CXX=                    /usr/local/bin/distcc c++
CPP=                    /usr/local/bin/distcc cpp

FORCE_MAKE_JOBS=        YES
MAKE_JOBS_NUMBER=       10

COPTFLAGS=      	[COLOR="Red"]-m32[/COLOR] -O2 -pipe -funroll-loops -ffast-math -fno-strict-aliasing
CFLAGS=         	[COLOR="Red"]-m32[/COLOR] -O2 -pipe -fno-strict-aliasing

OPTIMIZED_CFLAGS=       YES
BUILD_OPTIMIZED=        YES
WITH_CPUFLAGS=          YES
WITHOUT_DEBUG=          YES
WITH_OPTIMIZED_CFLAGS=  YES
BUILD_STATIC=           YES
.endif

Hier habe ich nun nochmal eine Frage:

Mit der Zeile
/usr/local/bin/distcc cc
gebe ich ihm da mit cc an welchen Compiler der distcc Server nutzen soll?
Wenn ja, kann ich dann auch beispielsweise schreiben
Code:
CC=                     /usr/local/bin/distcc gcc46
damit der Server den gcc46 benutzt?
 
Zurück
Oben