Siguiente: Contribuir, Anterior: Lanzamiento inicial, Subir: Top [Índice general][Índice]
Como se explicó previamente, la distribución GNU es autocontenida, lo cual
se consigue dependiendo de unos “binarios del lanzamiento inicial”
preconstruidos (véase Lanzamiento inicial). Estos binarios son específicos para
un núcleo del sistema operativo, arquitectura de la CPU e interfaz binaria
de aplicaciones (ABI). Por tanto, para transportar la distribución a una
nueva plataforma que no está soportada todavía, se deben construir estos
binarios del lanzamiento inicial, y actualizar el módulo (gnu packages
bootstrap)
para usarlos en dicha plataforma.
Por suerte, Guix puede compilar de forma cruzada esos binarios del lanzamiento inicial. Cuando todo va bien, y asumiendo que la cadena de herramientas GNU soporta para la plataforma deseada, esto puede ser tan simple como ejecutar una orden así:
guix build --target=armv5tel-linux-gnueabi bootstrap-tarballs
Para que esto funcione, el procedimiento glibc-dynamic-linker
en
(gnu packages bootstrap)
debe aumentarse para devolver el nombre de
archivo correcto para el enlazador dinámico de libc en dicha plataforma; de
igual manera, system->linux-architecture
en (gnu packages
linux)
debe modificarse para la nueva plataforma.
Una vez construidos, el módulo (gnu packages bootstrap)
debe ser
actualizado para hacer referencia a estos binarios en la plataforma
deseada. Esto es, los hash y las URL de los archivadores del lanzamiento
inicial de la nueva plataforma deben añadirse junto a aquellos de las
plataformas disponibles actualmente. El archivador tar del Guile usado para
el lanzamiento inicial se trata de forma especial: se espera que esté
disponible localmente, y gnu/local.mk tiene reglas que lo descargan
para las arquitecturas disponibles; se debe añadir una regla para la nueva
plataforma también.
En la práctica puede haber algunas complicaciones. Primero, puede ser que la
tripleta extendida GNU que especifica un ABI (como el sufijo eabi
previamente) no es reconocida por todas las herramientas GNU. Típicamente,
glibc reconoce algunas de ellas, mientras que GCC usa una opción de
configuración extra --with-abi (vea gcc.scm
para ejemplos de
como manejar este caso). En segundo lugar, algunos de los paquetes
necesarios pueden fallar en su construcción para dicha plataforma. Por
último, los binarios generados pueden estar defectuosos por alguna razón.
Siguiente: Contribuir, Anterior: Lanzamiento inicial, Subir: Top [Índice general][Índice]