Re: distcc

From: Marcel Volz <Marcel.Volz(at)epost.de>
Date: Fri, 29 Aug 2003 10:27:57 +0200

On Thu, 28 Aug 2003 09:44:22 +0200
Ulrich Spoerlein <q(at)uni.de> wrote:

> On Fri, 29.08.2003 at 09:20:44 +0200, Marcel Volz wrote:
> Achja, ports mit -jX zu bauen schlaegt eigentlich in 90% Prozent
> aller Faelle fehl. Leider sind die Abhaenigkeiten in den Makefiles
> falsch und deshalb funktioniert gerade mal ein serieller Build.
> Mit parallelem uebersetzen der Ports hatte ich auf einer Ein-CPU
> Maschine jedenfalls nur Probleme.

Das ist sehr schlecht. Ich fürchte ohne -j Parameter kann distcc
auch keine CC-Prozesse verteilen. Mit einem Prozess hat es relativ
wenig Sinn.

> > Ziemliche Blödsinn, dies Fehlermeldung finde ich da dies
> > dasselbe Verzeichnis wie beim ersten make Aufruf ist.
>
> Bin mir nicht sicher, wie distcc funktioniert, aber die Rechner,
> auf die der Job verteilt wird koennen auf das Verz. zugreifen, ja?
> (NFS, Samba, etc.)

Das Ports Verzeichnis wird per NFS an alle beteiligten Rechner
verteilt. Das sollte aber eigentlich für distcc laut manpage nicht
nötig sein, da distcc den Code mitschickt an den Daemon.
 
> > Folgendes ist mir weiterhin aufgefallen:
> > make -B -j4 CC=distcc package funktioniert erstmal. Habe ich
> > allerdings noch nicht bis zum Ende durchlaufen lassen.
> > Aber wird auch hier nichts verteilt.
>
> Wenn ich die man-page richtig interpretiere, dann schaltet -B das
> -j wieder aus :)

Hatte ich auch gesehen in der manpage, bloss anders interpretiert.
Schade :-(
 
> > Das zweite Problem ist, dass ich eigentlich gerne mit
> > portupgrade arbeite und natürlich auch dort distcc eingesetzt
> > werden sollte. Aus diesem Grund wollte ich die Parameter in die
> > make.conf setzen oder muss ich dies auch bei jedem Aufruf von
> > portupgrade als make Parameter übergeben?
> >
> > portupgrade -m CC=distcc ....
>
> Eine Moeglichkeit, das andere waere natuerlich make.conf, aber
> dann wird es auch fuer /usr/src verwendet. Am elegantesten scheint
> mir in den MAKE_ARGS von pkgtools.conf folgendes zu verwenden:
> '*' => 'CC=distcc',

Ahh, gut sowas hatte ich gesucht. Hatte erst gedacht das muss in
make.conf rein. Werde ich nacher mal testen.
 
> Probiere mal, ob buildworld sich per distcc verteilen laesst.
> Zumindest sind dort die Abhaengigkeiten in den Makefiles
> einigermassen ok, so dass parallele Builds moeglich sind.

Ich fürchte das funktioniert auch nicht. Ein make -j4 CC=distcc
buildworld. Läuft zwar wenigstens an, hält aber nach ein paar
Sekunden mit folgender Fehlermeldung an:

===> tools/build
/usr/obj/usr/src/i386/usr/src/tools/build created for
/usr/src/tools/build cd /usr/src/tools/build; make buildincludes;
make installincludes rm -f .depend
CC='distcc' mkdep -f .depend -a
-I/usr/obj/usr/src/i386/legacy/usr/include
/usr/src/tools/build/dummy.c distcc: not found
mkdep: compile failed
*** Error code 1
1 error
*** Error code 2
1 error
*** Error code 2
1 error
*** Error code 2
1 error

Ein make CC=distcc buildworld liefert dasselbe. Ein make -j4
buildworld läuft an.

Was ich merkwürdig finde ist die Meldung distcc: not found. Da
scheint noch was schief zu laufen.
distcc Daemon ist aber auf beiden Rechnern gestartet.
DNS-Auflösung funktioniert auch. Kann auch per telnet auf den Daemon
zugreifen. Bei den Ports ging es ja auch.

Das muss ich mir nochmal anschauen, evtl. probiere ich es mal per
SSH.

-- 
	-- Marcel Volz --
	Webseite: http://www.kubus.homeip.net
	E-Mail:	Marcel.Volz(at)epost.de
To Unsubscribe: send mail to majordomo.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Thu 28 Aug 2003 - 10:29:04 CEST

search this site