Suivant: Contribuer, Précédent: Bootstrapping, Monter: Top [Table des matières][Index]
Comme nous en avons discuté plus haut, la distribution GNU est
auto-contenue, et cela est possible en se basant sur des « binaires de
bootstrap » pré-construits (voir Bootstrapping). Ces binaires sont
spécifiques au noyau de système d’exploitation, à l’architecture CPU et à
l’interface applicative binaire (ABI). Ainsi, pour porter la distribution
sur une plateforme qui n’est pas encore supportée, on doit construire ces
binaires de bootstrap et mettre à jour le module (gnu packages
bootstrap)
pour les utiliser sur cette plateforme.
Heureusement, Guix peut effectuer une compilation croisée de ces binaires de bootstrap. Lorsque tout va bien, et en supposant que la chaîne d’outils GNU supporte la plateforme cible, cela peut être aussi simple que de lancer une commande comme ceci :
guix build --target=armv5tel-linux-gnueabi bootstrap-tarballs
For this to work, it is first required to register a new platform as defined
in the (guix platform)
module. A platform is making the connection
between a GNU triplet (voir GNU configuration
triplets dans Autoconf), the equivalent system in Nix
notation, the name of the glibc-dynamic-linker, and the corresponding
Linux architecture name if applicable.
Once the bootstrap tarball are built, the (gnu packages bootstrap)
module needs to be updated to refer to these binaries on the target
platform. That is, the hashes and URLs of the bootstrap tarballs for the
new platform must be added alongside those of the currently supported
platforms. The bootstrap Guile tarball is treated specially: it is expected
to be available locally, and gnu/local.mk has rules to download it
for the supported architectures; a rule for the new platform must be added
as well.
En pratique, il peut y avoir des complications. Déjà, il se peut que le
triplet GNU étendu qui spécifie l’ABI (comme le suffixe eabi
ci-dessus) ne soit pas reconnu par tous les outils GNU. Typiquement, la
glibc en reconnait certains, alors que GCC utilise un drapeau de
configuration --with-abi supplémentaire (voir gcc.scm
pour
trouver des exemples où ce cas est géré). Ensuite, certains des paquets
requis pourraient échouer à se construire pour cette plateforme. Enfin, les
binaires générés pourraient être cassé pour une raison ou une autre.
Suivant: Contribuer, Précédent: Bootstrapping, Monter: Top [Table des matières][Index]