Archive

Archive for September, 2011

Cross-Compiling unter FreeBSD mit Tinderbox

September 14th, 2011 No comments

Unser 32-Bit Paketbau-Server ist langsam und es werden keine neuen 32-Bit Server mehr installiert. Deshalb gibt es schon länger die Idee, ob man nicht die 32-Bit Pakete auch auf den 64-Bit Servern bauen könnte.

Da wir unsere Pakete mit Tinderbox bauen, waren die ersten Tests schnell durchgeführt. Hierzu haben wir eine 32-Bit Jail auf einem der 64-Bit Tinderbox-Server eingerichtet. Zusätzlich wurde im Tinderbox-Verzeichnis unter scripts/etc/env ein ENV-File für den 32-Bit Build hinterlegt, damit auch wirklich 32-Bit Pakete gebaut werden können. Folgende Anpassungen waren hierfür notwendig:

# cross compiling
export ARCH=i386
export MACHINE_ARCH=i386
export UNAME_m=i386
export UNAME_p=i386

# disable CPU optimization
export CFLAGS=-pipe

Die Ergebnisse waren vielversprechend: etwa 800 Pakete konnten sofort fehlerfrei erstellt werden. Aber trotzdem gab es letztendlich noch immer einige wenige 32-Bit Pakete, die wir auf den 64-Bit Servern nicht erstellen konnten:

  •     lang/ruby18
    •     Ergebnis: Prozess läuft Amok, muss getötet werden
  •     security/clamav
    •     Ergebnis: Unit-Tests schlagen fehl

Das war also das technische K.O. für unsere Anstrengungen, auf Cross-Compiling umzusteigen. Zumindest vorerst. Denn wir haben nun nach einiger Zeit einen neuen Versuch gestartet. Diesmal haben wir aber nicht FreeBSD 7.3 auf dem Build-Host verwendet, sondern ein frisches FreeBSD 8.2 ausprobiert. Und schon konnten alle Pakete fehlerfrei erstellt werden. Ich habe nicht recherchiert, welche Änderungen zwischen FreeBSD 7.3 und 8.2 dies ermöglicht haben, aber offenbar gibt es Verbesserungen in Sachen Cross-Compiling.

Categories: [DE] Tech Tags: , , , ,
css.php