Nächste: Mitwirken, Vorige: Bootstrapping, Nach oben: GNU Guix [Inhalt][Index]
Wie oben beschrieben ist die GNU-Distribution eigenständig und diese
Eigenständigkeit wird erreicht, indem sie aus vorerstellten
„Bootstrap-Binärdateien“ heraus erstellt werden kann (siehe
Bootstrapping). Diese Binärdateien unterscheiden sich je nach
verwendetem Betriebssystem-Kernel, nach der Prozessorarchitektur und der
Anwendungsbinärschnittstelle („Application Binary Interface“, kurz ABI). Um
die Distribution also auf eine noch nicht unterstützte Plattform zu
portieren, muss man diese Bootstrap-Binärdateien für diese Plattform
erstellen und das Modul (gnu packages bootstrap)
aktualisieren, damit
es sie benutzt.
Zum Glück kann Guix diese Bootstrap-Binärdateien cross-kompilieren. Wenn alles gut geht, und vorausgesetzt, die GNU-Werkzeuge (zusammen werden sie als GNU-„Toolchain“ bezeichnet) unterstützen diese Zielplattform auch, dann kann es völlig ausreichen, dass Sie einen Befehl wie hier ausführen:
guix build --target=armv5tel-linux-gnueabi bootstrap-tarballs
Damit das funktioniert, muss erst eine neue Plattform eingetragen werden;
sie sind im Modul (guix platform)
registriert. Eine Plattform stellt
die Verbindung her zwischen einem GNU-Tripel (siehe GNU-Tripel für configure in Autoconf), dem
entsprechenden System in Nix-Notation, dem Dateinamen für den
dynamischen Binder glibc-dynamic-linker von libc auf dieser Plattform
und dem zugehörigen Namen der Linux-Architektur, sofern es um Linux geht
(siehe Plattformen).
Sobald Sie einen Bootstrap-Tarball haben, muss das Modul (gnu packages
bootstrap)
aktualisiert werden, damit es diese Binärdateien für die
Zielplattform benutzt. Das heißt, die Hashes und URLs der Bootstrap-Tarballs
für die neue Plattform müssen neben denen für die bisher unterstützten
Plattformen aufgeführt werden. Der Bootstrap-Guile-Tarball wird besonders
behandelt: Von ihm wird erwartet, dass er lokal verfügbar ist, und
gnu/local.mk enthält Regeln, um ihn für die unterstützten
Architekturen herunterzuladen; eine Regel muss auch für die neue Plattform
hinzugefügt werden.
In der Praxis kann es einige Schwierigkeiten geben. Erstens kann es sein,
dass das erweiterte GNU-Tripel, das eine Anwendungsbinärschnittstelle (ABI)
festlegt (wie es das eabi
-Suffix oben tut) nicht von allen
GNU-Werkzeugen erkannt wird. Typischerweise erkennt glibc manche davon,
während für GCC eine zusätzliche Befehlszeilenoption --with-abi an
configure übergeben werden muss (siehe gcc.scm
für Beispiele, wie man
das macht). Zweitens könnte es sein, dass manche der notwendige Pakete für
diese Plattform nicht erfolgreich erstellt werden können. Zuletzt könnten
die generierten Binärdateien aus dem einen oder anderen Grund fehlerhaft
sein.
Nächste: Mitwirken, Vorige: Bootstrapping, Nach oben: GNU Guix [Inhalt][Index]