Siguiente: , Anterior: , Subir: Top   [Índice general][Índice]


15 Transportar a una nueva plataforma

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: , Anterior: , Subir: Top   [Índice general][Índice]