Next: , Previous: , Up: GNU Guix   [Contents][Index]


21 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 (see 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

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 (see GNU configuration triplets in Autoconf), the equivalent system in Nix notation, the name of the glibc-dynamic-linker, and the corresponding Linux architecture name if applicable (see Platforms).

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 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.


Next: Contribuir, Previous: Lanzamiento inicial, Up: GNU Guix   [Contents][Index]