Suivant: Contribuer, Précédent: Bootstrapping, Monter: GNU Guix [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
Pour que cela fonctionne, vous devez d’abord enregistrer une nouvelle
plateforme définie dans le module (guix platform)
. Une plateforme
connecte un triplet GNU (voir GNU
configuration triplets dans Autoconf), l’équivalent du système
en notation Nix, le nom du glibc-dynamic-linker et le nom de
l’architecture Linux correspondante si applicable (voir Plateformes)..
Une fois que les archives de bootstrap sont construites, le module
(gnu packages bootstrap)
doit être mis à jour pour se référer à ces
binaires sur la plateforme cible. C’est à dire que les hashs et les URL des
archives de bootstrap pour la nouvelle plateforme doivent être ajoutés avec
ceux des plateformes actuellement supportées. L’archive de bootstrap de
Guile est traitée séparément : elle doit être disponible localement, et
gnu/local.mk a une règle pour la télécharger pour les architectures
supportées ; vous devez également ajouter une règle pour la nouvelle
plateforme.
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: GNU Guix [Table des matières][Index]