Next: , Up: Contribuir   [Contents][Index]


20.1 Construcción desde Git

Si quiere picar en el mismo Guix se recomienda usar la última versión del repositorio Git:

git clone https://git.savannah.gnu.org/git/guix.git

¿Cómo se puede asegurar de que ha obtenido una copia auténtica del repositorio? Para ello ejecute guix git authenticate, proporcionando la revisión y la huella de OpenPGP de la presentación del canal (see Invocación de guix git authenticate):

git fetch origin keyring:keyring
guix git authenticate 9edb3f66fd807b096b48283debdcddccfea34bad \
  "BBB0 2DDF 2CEA F6A8 0D1D  E643 A2A0 6DF2 A33A 54FA"

Esta orden termina con un código de salida cero cuando al finalizar correctamente; o imprime un mensaje de error y sale con un código de salida distinto a cero en otro caso.

Como puede ver, nos encontramos ante el problema del huevo y la gallina: es necesario haber instalado Guix. Durante la instalación habitual del sistema Guix (see Instalación del sistema) o Guix sobre otra distribución (see Instalación binaria) debería verificar la firma de OpenPGP del medio de instalación. Este paso es el primer eslabón de la cadena de confianza.

El modo más fácil de preparar un entorno de desarrollo para Guix es, por supuesto, ¡usando Guix! Las siguientes órdenes inician un nuevo intérprete donde todas las dependencias y las variables de entorno apropiadas están listas para picar código en Guix:

guix shell -D guix --pure

See Invoking guix shell, para más información sobre este comando.

Si no puede usar Guix para construir Guix desde una copia de trabajo, son necesarios los paquetes siguientes además de los mencionados en las instrucciones de instalación (see Requisitos).

En Guix se pueden añadir dependencias adicionales ejecutando en su lugar guix shell:

guix shell -D guix help2man git strace --pure

From there you can generate the build system infrastructure using Autoconf and Automake:

./bootstrap

If you get an error like this one:

configure.ac:46: error: possibly undefined macro: PKG_CHECK_MODULES

probablemente significa que Autoconf no pudo encontrar el archivo pkg.m4, que proporciona pkg-config. Asegúrese de que pkg.m4 está disponible. Lo mismo aplica para el conjunto de macros guile.m4 que proporciona Guile. Por ejemplo, si ha instalado Automake en /usr/local, no va a buscar archivos .m4 en /usr/share. En ese caso tiene que ejecutar la siguiente orden:

export ACLOCAL_PATH=/usr/share/aclocal

See Macro Search Path in The GNU Automake Manual para más información.

Then, run:

./configure --localstatedir=/var

... where /var is the normal localstatedir value (see El almacén, for information about this). Note that you will probably not run make install at the end (you don’t have to) but it’s still important to pass the right localstatedir.

Finally, you can build Guix and, if you feel so inclined, run the tests (see Ejecución de la batería de pruebas):

make
make check

If anything fails, take a look at installation instructions (see Instalación) or send a message to the mailing list.

De aquí en adelante, puede identificar todos las revisiones incluidas en su copia ejecutando:

make authenticate

La primera ejecución puede tardar varios minutos, pero las ejecuciones siguientes son más rápidas.

O, cuando la configuración de su repositorio local Git no corresponda con la predeterminada, puede proporcionar la referencia de la rama keyring a través de la variable GUIX_GIT_KEYRING. El ejemplo siguiente asume que tiene configurado un servidor remoto de git llamado ‘miremoto’ que apunta al repositorio oficial:

make authenticate GUIX_GIT_KEYRING=miremoto/keyring

Nota: Se recomienda que ejecute make authenticate tras cada ejecución de git pull. Así se asegura de que está recibiendo cambios válidos del repositorio.

After updating the repository, make might fail with an error similar to the following example:

error: failed to load 'gnu/packages/dunst.scm':
ice-9/eval.scm:293:34: In procedure abi-check: #<record-type <origin>>: record ABI mismatch; recompilation needed

This means that one of the record types that Guix defines (in this example, the origin record) has changed, and all of guix needs to be recompiled to take that change into account. To do so, run make clean-go followed by make.


Next: , Up: Contribuir   [Contents][Index]