Dokumentation zu tinderbox?

Columbo0815

Kaffeemann
Teammitglied
Moin,

ich spiele gerade ein wenig mit ports-mgmt/tinderbox rum. Leider ist die einzige Dokumentation die ich bislang dazu gefunden habe, die Readme-Datei auf der Tinderbox-Homepage: http://tinderbox.marcuscom.com/README.html

Ich weiß aus dem Shellscript /usr/local/tinderbox/scripts/lib/tc_command.sh, dass es den Schalter -a ${jailArch} für "tc addJail" gibt. Das war aber wirklich nur Zufall, dass ich diesen entdeckt habe. Eine manpage habe ich nicht gefunden (hierzu habe ich in /usr/ports/ports-mgmt/tinderbox/pkg-plist nachgesehen, was installiert wird.

1. (Wo) gibt es eine ausführlichere Dokumentation zu tinderbox und dessen funktionen?

2. Zusätzlich eine weitere Frage: Ich hatte zuerst die tinderbox in einer (i386)Jail (auf einem amd64-Rechner) übersetzt. Grund hierfür war, dass ich es vereinfachen wollte, verschiedene Ports für einen schmalbrüsten PC zu übersetzen (und dieser ist eben ein i386-Rechner). Leider setzt tinderbox entweder auf nfs oder auf mount_nullfs. Beides funktioniert nicht in einer Jail. Für mount_nullfs gibt es wohl eine Möglichkeit, in dem ich die Sourcen von null_vfsops.c (finde die Quelle jetzt nicht mehr) so anpasse, dass es "Jailsauber" ist. Das möchte ich jedoch nicht tun. Gibt es keine (andere) Möglichkeit tinderbox in einer Jail zu bauen? Warum ich das möchte? Wenn ich mir etwas in der Jail zerhaue ist mir das egal. Lösche ich sie eben...

Gruß und Danke
 
Ich habe am Sonntag eine Tinderbox mit der Dokumentation in /usr/local/tinderbox/scripts/README eingerichtet und bin dabei nicht auf Probleme gestoßen. Meine ersten Testläufe mit meinen OpernArena updates waren auch erfolgreich:
http://www.home.hs-karlsruhe.de/~fado0001/tinderbox-logs/

Auf einem Mulitcore-System scheint es sich auszuzahlen mehrere tinderd-Instanzen zu starten.

Mit i386 auf amd64 habe ich es erst einmal wieder ganz aufgegeben. Aber wenn dann würde ich versuchen Tinderbox in der 64-Bit Umgebung laufen zu lassen und i386-spezifische Tinderbox-Jails zu erzeugen. Das man mit Tinderbox etwas zerschießt kommt mir unwahrscheinlich vor. Das hält sich eigentlich aus allem raus und kocht sein eigenes Süppchen.
 
Ich habe am Sonntag eine Tinderbox mit der Dokumentation in /usr/local/tinderbox/scripts/README eingerichtet und bin dabei nicht auf Probleme gestoßen. Meine ersten Testläufe mit meinen OpernArena updates waren auch erfolgreich:
http://www.home.hs-karlsruhe.de/~fado0001/tinderbox-logs/
Auf Probleme bin ich auch nicht gestoßen. Die von dir zitierte README entspricht übrigens meiner. Zum Einrichten ansich ist die README auch wunderbar. Die Tinderbox läuft an sich. Die "Probleme" beziehen sich dann nur auf den Betrieb eben dieser IN der Jail aufgrund der genannten "Beschränkungen".

Auf einem Mulitcore-System scheint es sich auszuzahlen mehrere tinderd-Instanzen zu starten.
Und das hast du wie gemacht?

Mit i386 auf amd64 habe ich es erst einmal wieder ganz aufgegeben. Aber wenn dann würde ich versuchen Tinderbox in der 64-Bit Umgebung laufen zu lassen und i386-spezifische Tinderbox-Jails zu erzeugen. Das man mit Tinderbox etwas zerschießt kommt mir unwahrscheinlich vor. Das hält sich eigentlich aus allem raus und kocht sein eigenes Süppchen.
Ja, das habe ich inzwischen auch vor. Deswegen auch die Frage zur Dokumentation. Woher soll ich denn wissen, dass ich mit -a angeben kann, dass ich eine i386 "Jail" in Tinderbox bauen möchte? :) Klar, ich kann es durch den Zufallsfund jetzt einfach machen, wollte mich aber ganz gerne vorab ein wenig einlesen, damit ich später nicht rumsuchen muss wo ein eventuelles Problem ist...

Danke :)
 
Ok, tc --help kannte ich schon. Viel steht da ja nicht drin. Aber: Weil ich dachte, dass du dort mehr Infos rausgezogen hast, habe ich ein wenig rumprobiert. Ein einfaches
Code:
./tc createJail
ohne Angabe von diversen Optionen liefert ein:
tinderbox# ./tc createJail
createJail: no jail name specified
usage: tc createJail
-j <jailname> -u CSUP|CVSUP|LFTP|USER|NONE [-t <tag>] [-d
<description>] [-C] [-H <updatehost>] [-m <mountsrc>] [-I] [-a
<arch>]
Dort taucht -a auf. Das ist zumindest mal ein Anfang. Von miwis (älterem) "Blogeintrag" auf dessen Seite habe ich auch entdeckt, dass ich in /etc/rc.conf steuern kann ob nullfs oder nfs genutzt werden soll. Auch das ist in der Readme leider nicht verewigt...

Edit: Es ist nicht miwi sondern Beat: http://www.chruetertee.ch/blog/arch...und-pakete-erstellen-mit-einer-tinderbox.html

Danke für den Tipp!
 

Dieser Artikel ist noch für eine ältere Tinderbox Version und mit 3.3 nicht mehr gütig.
Hier ist noch eine für 3.2 angepasste Version welche auch mit 3.3 noch funktioniert:
http://www.chruetertee.ch/blog/arch...rstellen-mit-einer-tinderbox-version-3-2.html

Vielleicht findest Du auch in einem der folgenden Beiträge noch was nützliches:
http://www.chruetertee.ch/blog/archive/tag/tinderbox/

Gruess
Beat
 
Ich habe am Sonntag eine Tinderbox mit der Dokumentation in /usr/local/tinderbox/scripts/README eingerichtet
Ich gehe mal davon aus, dass du die Tinderbox nutzt um für andere Rechner Pakete zu bauen. Nutzt du auf diesen Rechner das dir nicht ganz unbekanntes Programm "pkg_upgrade"? Wenn ja: Was musst du anpassen, damit ausschließlich die von dir gebauten Pakete verwendet werden?

Gruß
 
Um ehrlich zu sein will ich die Tinderbox nur benutzen um Logs mit meinen Ports-PRs mitzuliefern um deren Abarbeitung zu beschleunigen.

Diese Verwendung von pkg_upgrade ist durchaus vorgesehen, du müsstest halt PACKAGESITE auf deine Tinderbox Pakete setzen und PACKAGESITE_MIRRORS auf irgend etwas ungültiges, damit die Versuche auf Mirror zuzugreifen sofort scheitern (in der nächsten Version gibt es dafür eine ordentliche Lösung).

Das größte Problem ist im Moment aber, dass Tinderbox keinen INDEX baut. Dafür wird die nächste Version von pkg_upgrade ein Skript mitliefern, bis dahin solltest du den INDEX aus dem verwendeten Ports Tree nehmen und tunlichst vermeiden Pakete zu installieren, die du nicht gebaut hast. Das kann allerdings scheitern, wenn du bei Paketen irgendwelche Optionen verändert hast, denn dann bildet der INDEX aus dem Ports-Tree die Abhängigkeiten nicht mehr unbedingt korrekt ab, es sei denn du lässt nach dem Setzen der Optionen make index laufen.

Deshalb auch die Notwendigkeit für ein Extra-Skript, das den INDEX aus den vorhandenen Paketen generiert. Das ist dann deutlich weniger Fehleranfällig.
 
Diese Verwendung von pkg_upgrade ist durchaus vorgesehen, du müsstest halt PACKAGESITE auf deine Tinderbox Pakete setzen und PACKAGESITE_MIRRORS auf irgend etwas ungültiges, damit die Versuche auf Mirror zuzugreifen sofort scheitern (in der nächsten Version gibt es dafür eine ordentliche Lösung).
Das war der Grund für die Anfrage. :) Auf die Idee ungültige PACKAGESITE_MIRROR anzugeben, bin ich nicht gekommen. Wäre einen Versuch wert, danke für den Hinweis.
Das größte Problem ist im Moment aber, dass Tinderbox keinen INDEX baut. Dafür wird die nächste Version von pkg_upgrade ein Skript mitliefern, bis dahin solltest du den INDEX aus dem verwendeten Ports Tree nehmen und tunlichst vermeiden Pakete zu installieren, die du nicht gebaut hast. Das kann allerdings scheitern, wenn du bei Paketen irgendwelche Optionen verändert hast, denn dann bildet der INDEX aus dem Ports-Tree die Abhängigkeiten nicht mehr unbedingt korrekt ab, es sei denn du lässt nach dem Setzen der Optionen make index laufen.
Hm, hört sich frickelig an. Ich glaube dann warte ich lieber auf die neue Version von pkg_upgrade :rolleyes:

Ich muss hier nochmal erwähnen, dass sysutils/bsdadminscripts der zweite Port auf jedem Rechner ist, den ich einrichte. Der erste Port ist ports-mgmt/portmaster

Danke für die genialen "Tools"!
 
Es gibt einen sehr egoistischen Grund, dass ich die Skripte veröffentliche - ich bin zu faul die Manuell über die FreeBSD Rechner an denen ich arbeite zu verteilen. Das geht über die Ports einfach angenehmer.
 
Falls du nun i386 jails unter amd64 verwendest. Tinderbox setzt in denen ARCH fälchlicherweise auf amd64, wodurch einige Ports wie libGL oder ioquake, openarena usw. mit der ARCH durcheinander kommen, weil sie wie in bsd.port.mk beschrieben Cross-compiling unterstützen.

Die Einfachste Lösung ist aus scripts/lib/tinderbox.env die ARCH Zeile einfach restlos zu streichen, denn dort wird ARCH auf dem Hostsystem festgestellt und gesetzt.
Wenn ARCH nicht definiert ist, kümmert sich bsd.port.mk darum und da der Test dann innerhalb der Jail stattfindet liefert er dann auch i386.
 
:) Das wollte ich dir heute schreiben. Ich hatte gestern genau das Problem und habe deinen Beitrag in der Mailingliste gefunden. Allerdings hat es bei mir nicht gereicht, die Zeile zu entfernen. Ich habe "-p" gegen "i386" ersetzt. Danach lief es. :)

Danke für die Meldung!
 
Hast du mal uname -p mit dem uname aus der Jail ausgeführt? Bei mir liefert das einfach i386.

Wie hast du ARCH auf i386 gesetzt? Kannst du dann überhaupt noch amd64 Pakete bauen?
 
Ok. Wir reden aneinander vorbei. Ist aber auch dämlich, dass hier gleiche Begriffe verwendet werden. Ich habe tinderbox auf einem amd64-Host installiert und dort eine "tinderbox-Jail" auf i386 erstellt. Nervt mich zwar, aber in einer i386-Jail habe ich tinderbox einfach nicht zum Laufen gebracht (wg. mountprobleme).

Ich habe zum einen die Datei $pb/scripts/etc/env/jail.8.1 erstellt und dort als Inhalt
UNAME_m=i386,
UNAME_p=i386

Weil ich dort zuerst einen Schreibfehler drin hatte und es nicht lief, habe ich (ohne den Schreibfehler zu entdecken) die von dir genannte Datei tinderbox.env editiert und "ARCH="uname -p" gegen "ARCH=i386" ersetzt.

In der tinderbox baue ich derzeit keine amd64-Pakete, weshalb der schmutzige Workaround funktioniert ;)
 
Zurück
Oben