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


22.2 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 -CPW

or even, from within a Git worktree for Guix:

guix shell -CPW

If -C (short for --container) is not supported on your system, try --pure instead of -CPW. See Invoking guix shell, for more information on that command.

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

Si se produce un error como el siguiente:

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.

Entonces, ejecute:

./configure

Optionally, --localstatedir and --sysconfdir can also be provided as arguments. By default, localstatedir is /var (see El almacén, for information about this) and sysconfdir is /etc. 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 and sysconfdir values, which get recorded in the (guix config) Guile module.

Finalmente, puede construir Guix y, si se siente inclinado a ello, ejecutar los 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:

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

The first run takes a couple of minutes, but subsequent runs are faster. On subsequent runs, you can run the command without any arguments since the introduction (the commit ID and OpenPGP fingerprints above) will have been recorded57:

guix git authenticate

When your configuration for your local Git repository doesn’t match the default one, you can provide the reference for the keyring branch via the -k option. The following example assumes that you have a Git remote called ‘myremote’ pointing to the official repository:

guix git authenticate \
  -k myremote/keyring \
  9edb3f66fd807b096b48283debdcddccfea34bad \
  "BBB0 2DDF 2CEA F6A8 0D1D  E643 A2A0 6DF2 A33A 54FA"

See Invocación de guix git authenticate, for more information on this command.

Nota: By default, hooks are installed such that guix git authenticate is invoked anytime you run git pull or git push.

Después de actualizar el repositorio, make podría fallar con un error similar al del ejemplo siguiente:

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

Esto significa que uno de los tipos de registro que Guix define (en este ejemplo, el registro origin) ha cambiado, y todo guix necesita ser recompilado para tener en cuenta ese cambio. Para ello, ejecute make clean-go seguido de make.

Should make fail with an Automake error message after updating, you need to repeat the steps outlined in this section, commencing with ./bootstrap.


Footnotes

(57)

This requires a recent version of Guix, from May 2024 or more recent.


Next: Ejecución de la batería de pruebas, Previous: Requisitos, Up: Contribuir   [Contents][Index]