[wiki] distcc

Also ich musste dann meine Versuche gestern einstellen. Der Rechner hatte dann wahrscheinlich nicht mehr mitgearbeitet. Irgendwo im /usr/src/usr.bin.../doc (depend) hatte er sich verlaufen und nicht mehr weiter gemacht. Dachte mir dann versuchste mal den Kernel zu bauen aber das ging auch gründlich schief. Localhost baute teilweise alles alleine und da habe ich dann auch nach 2 Stunden etwa abgebrochen. Eines bemerkte ich jedenfalls das der Rechner nicht mehr ganz runterfuhr. Der hing dann auch fest bei der meldung Syncing disks. Das
The operating system has halted.
Please press any key to reboot.


bekam ich nicht zu gesicht. Eigenartiger weise war auch die sache statt wie sonst immer

Syncing disks, vnodes remaining...2 1 1 0 0 done
All buffers synced.

The operating system has halted.
Please press any key to reboot.

oder so in der Art, zummindest nach meiner meinugn waren es immer 5 stellen gewesen. Ich hatte nur das folgende stehen.

Syncing disks, vnodes remaining...0 0 1 done
All buffers synced.

Nach einem Reset hatte dann der Bootscreen zwei Partition als dismount gemeldet. Also vermute ich mal das sich irgendwie die Platte langsam verabschiedet denn ist ja sehr ungewöhnlich das es zu diesem Fehler kommt. Ich weis nur das die darauffolgende Dismount-Meldung normal ist und ich so eine Meldung schon lange nicht mehr hatte. Aber die kann ja nur dadurch kommen das schon vor dem Reset und bevor ich den Rechner runterfahren wollte 2 Partitionen nicht mehr eingehangen waren. So dann war ich doch etwas enttäuscht darüber. Aber ich werde es mal zu einen späteren Zeitpunkt wieder auffassen sollte ich mir mal einen anderen Rechner hinstellen. Aufgehoben ist ja nicht Aufgeschoben.
 
Also den NetBSD kernel habe ich ohne Probleme gebaut. Nachm Urlaub werde ich mal versuchen, das komplette NetBSD zu baun.
Allerdings wäre es für die Ports schon praktisch, da muss ich mich auch mal ransetzen.
 
Ach Kindersch,

ich bin doch manchmal dümmer als ne Rolle Drops. Man sollte doch vorher die Versionen der Compiler auf den Rechnern prüfen. Ich schmeiße das mal hier rein was ich gefunden habe. Der Unterschied ist nicht sehr groß, könnte aber die Ursache sein das sich der Rechner beim bau des Basissystems verlaufen hatte.

Ausganssituation für distcc war:
Miniworkstation = distcc-client mit FreeBSD 6.1-Stable

Workstation = distcc-server1 mit FreeBSD 6.1-Stable
Server = distcc-server2 mit FreeBSD 5.4-Release-p15

Von der Workstation und Miniworkstation:
$ cc --version
cc (GCC) 3.4.4 [FreeBSD] 20050518
Copyright (C) 2004 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

$ c++ --version
c++ (GCC) 3.4.4 [FreeBSD] 20050518
Copyright (C) 2004 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

$

Und nun vom Server:
Code:
blackdevil# cc --version
cc (GCC) 3.4.2 [FreeBSD] 20040728
Copyright (C) 2004 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

blackdevil# c++ --version
c++ (GCC) 3.4.2 [FreeBSD] 20040728
Copyright (C) 2004 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

blackdevil#

Ich denke mal mehr brauch ich da nicht zusagen. Wenn man Schei... baut dann richtig. Ich meine ich hätte mir das schon denken können das auf dem Server mit der 5.4er version ein andere Compiler drauf ist. Aber naja wie es so halt ist man ist im Experimentiereifer und übersieht dann doch wichtige details.

P.S. Musste nochmal die Zeile "Server = distcc-server2 mit FreeBSD 5.4-Release-p15" korrigieren dort stand "Server = distcc-server1 mit FreeBSD 5.4-Release-p15". Also Zählen habe ich auch schon verlernt. :)
 
Zuletzt bearbeitet:
Nach der distcc Homepage kann so etwas funktionieren. Muss aber nicht. Übrigens ist beim Bau von Kernel und Welt nicht alles parallelisierbar, es kommt also hin und wieder vor, dass localhost alleine baut.

@becki
Wäre nett wenn du deine NetBSD Erfahrungen in den Artikel einbringst.
 
Hi [LoN]Kamikaze,

Nach der distcc Homepage kann so etwas funktionieren. Muss aber nicht.

ist richtig wenn ich sehe wie klein der Unterschied von der Version her gesehen doch eigendlich ist zwischen beiden Compilern frage ich mich auch ob das nicht klappen müsste.

Übrigens ist beim Bau von Kernel und Welt nicht alles parallelisierbar, es kommt also hin und wieder vor, dass localhost alleine baut.

Genau das hatte Yamagi mir im Chat auch erzählt.
Schade das nicht geklappt hatte, naja wenn noch ein bischen Zeit am WE bleibt probiere ich es noch mal aus. Denn ich kann vorstellen das sich da der Unterschied sehr stark bemerkbar macht. Denn 24 Stunden für die Basis und 4 Stunden für den Kernel auf der kleinen Kiste ohne distcc und mit distcc angenommen 12 stunden oder weniger für die Basis dann 1 bis 2 stunden für den Kernel. Aber naja abwarten und Tee trinken. Kann ja alles eintreten. AUf alle fälle berichte ich noch mal drüber in diesem Thread.

Gruß Blue
 
Wenn das so lange dauert, würde ich das System auf einem anderen Rechner bauen, /usr/src und /usr/obj über NFS mounten und das fertig gebaute System installieren.
 
[LoN]Kamikaze schrieb:
Wenn das so lange dauert, würde ich das System auf einem anderen Rechner bauen, /usr/src und /usr/obj über NFS mounten und das fertig gebaute System installieren.

Genau richtig ist aber nur eine Testmaschine dort probiere ich immer Sachen aus die nicht unbedingt mit dem Server oder gar mit der Workstation bauen will. Und ist es nicht so Eilig da kann der Stunden damit verbingen irgenwas zu Kompilieren. Aber Test werde ich per NFS auch machen das habe ich auch noch nicht gemacht.
Funktioniert das auch im Singleusermod?
 
Klar, du musst nur alles richtig mounten. Die Alternative ist umgekehert den langsamen Rechner vom schnellen aus zu mounten und bei installkernel und installworld DESTDIR mit anzugeben.

Außerdem muss nfslocking aktiviert sein, damit das Bauen/Installieren über NFS funktioniert.
 
Achso und dann wird das nur ähnlich wie in eine jail das System dann upgedatet und mergemaster auch wie bei einer jail durchgeführt? Zumindest so wie es im Tutorial beschrieben steht von asg. Im grunde kann ich mir es so vorstellen das es so laufen kann.
 
Danke ;)

Vielleicht wäre es sinnvoller, das in einer Syntax zu tun, damit man das direkt per copy 'n paste in die eigene make.conf oder pkgtools.conf kopieren kann.
 
Das hängt immer davon ab was man benutzt. Ich verwende buildflags, andere vielleicht portsconf. Bei mir sieht die Syntax dann so aus.

Code:
	# No distcc or threading.
	*/devel/imake-*		{!USE_DISTCC !SUBTHREADS}
	*/devel/libthai		{!USE_DISTCC !SUBTHREADS}
	*/devel/ORBit2		{!USE_DISTCC !SUBTHREADS}
	*/editors/vim		{!USE_DISTCC !SUBTHREADS}
	*/graphics/libart_lgpl	{!USE_DISTCC !SUBTHREADS}
	*/math/atlas		{!USE_DISTCC !SUBTHREADS}
	*/multimedia/nxtvepg	{!USE_DISTCC !SUBTHREADS}
	*/security/openssl	{!USE_DISTCC !SUBTHREADS}

Man kann ja nicht die Syntax für jedes System ins Wiki stellen.
 
Zu OpenBSD ist mir eingefallen, das die Interoperabilität mit anderen Systemen darunter leiden könnte, dass sie Veränderungen am gcc vornehmen (z.B. Overflow Schutz).
 
Ich teste auch gerade distcc, da ich hier einen Server habe, der sich zu tode langweilt und die Rechenzeit doch ein wenig verschwendet wäre.

Es funktioniert auch alles super mit distcc, aber der nette kleine Monitor geht nicht. Der ist nun auch nicht unbedingt nötig, aber ein wenig schade fände ich es schon.

Folgende Fehlermeldung kommt:

(distccmon-gnome:72073): Gtk-WARNING **: Error loading icon from file '/usr/local/share/distcc/distccmon-gnome-icon.png':
Datei »/usr/local/share/distcc/distccmon-gnome-icon.png« konnte nicht geöffnet werden: No such file or directory


Den Ordner und die Datei gibt es tatsächlich nicht. Jemand eine Ahnung, wo ich den Krams herbekomme?
 
Das ist egal, der Monitor funktioniert trotzdem. Der muss übrigens mit dem gleichen Benutzer der kompiliert gestartet werden. Also normalerweise root.
 
Ja, habe ich auch zuerst gedacht, aber natürlich muss der Monitor die nötigen Rechte haben um am Netzwerkverkehr des distcc zu lauschen.
 
Zurück
Oben