Suivant: , Précédent: , Monter: Top   [Table des matières][Index]


13 Porter vers une nouvelle plateforme

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 fonctione, la procédure glibc-dynamic-linker dans (gnu packages bootstrap) doit être augmentée pour renvoyer le bon nom de fichier pour l’éditeur de lien dynamique de la libc sur cette plateforme ; de même, il faut indiquer cette nouvelle platefore à system->linux-architecture dans (gnu packages linux).

Une fois qu’ils sont construits, 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 reconnais certains, alors que GCC utilise un drapeau de configure --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: , Précédent: , Monter: Top   [Table des matières][Index]