Next: Contribuir, Previous: Lanzamiento inicial, Up: GNU Guix [Contents][Index]
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]