Suivant: , Précédent: , Monter: Contribuer   [Table des matières][Index]


22.2 Construire depuis Git

Si vous souhaitez travailler sur Guix lui-même, il est recommandé d’utiliser la dernière version du dépôt Git :

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

Comment vous assurer que vous avez obtenu une copie authentique du dépôt ? Pour cela, exécutez guix git authenticate, en lui transmettant le commit et l’empreinte OpenPGP de l’canal introduction (voir Invoquer guix git authenticate) :

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

Cette commande se termine avec le code de sortie zéro en cas de succès ; elle affiche un message d’erreur et quitte avec un code non zéro dans le cas contraire.

Comme vous pouvez le voir, il y a un problème de poule et d’œuf : il faut d’abord avoir installé Guix. En général, vous installez Guix System (voir Installation du système) ou Guix sur une autre distribution (voir Installation binaire) ; dans les deux cas, vous vérifiez la signature OpenPGP sur le support d’installation. Cela "amorce" la chaîne de confiance.

La manière la plus simple de configurer un environnement de développement pour Guix est, bien sûr, d’utiliser Guix ! La commande suivante démarre un nouveau shell où toutes les dépendances et les variables d’environnements appropriées sont configurés pour travailler sur 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. Voir Invoquer guix shell, for more information on that command.

Si vous ne pouvez pas utiliser Guix pour la construction de Guix depuis un extrait, les paquets suivants sont requis en plus de ceux mentionnés dans les instructions d’installation (voir Prérequis).

Avec Guix, vous pouvez ajouter des dépendances supplémentaires en lançant guix shell :

guix shell -D guix help2man git strace --pure

Vous pouvez maintenant générer l’infrastructure du système de construction avec Autoconf et Automake :

./bootstrap

Si vous obtenez une erreur de ce type :

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

cela signifie probablement qu’Autoconf n’a pas pu trouver pkg.m4 qui est fournit par pkg-config. Assurez-vous que pkg.m4 est disponible. C’est aussi vrai pour l’ensemble de macros de guile.m4 fournies par Guile. Par exemple, si vous avez installé Automake dans /usr/local, il ne cherchera pas les fichiers .m4 dans /usr/share. Dans ce case vous devez invoquer la commande suivante :

export ACLOCAL_PATH=/usr/share/aclocal

Voir Macro Search Path dans The GNU Automake Manual, pour plus d’information.

Ensuite lancez :

./configure

Optionally, --localstatedir and --sysconfdir can also be provided as arguments. By default, localstatedir is /var (voir Le dépôt, 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.

Enfin, vous pouvez construire Guix et, si vous le souhaitez, lancer les tests (voir Lancer la suite de tests) :

make
make check

Si quelque chose échoue, jetez un œil aux instructions d’installation (voir Installation) ou envoyez un message à la liste guix-devel@gnu.org.

À partir de maintenant, vous pouvez authentifier tous les commits de votre extrait en lançant :

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 recorded47:

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"

Voir Invoquer guix git authenticate, for more information on this command.

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

Après la mise à jour du dépôt, make peut échouer avec une erreur semblable à celle de l’exemple suivant :

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

Cela signifie qu’un des types d’enregistrement que Guix définie (dans cet exemple, l’enregistrement origin) a changé, et que l’entièreté de guix doit être recompilé pour prendre ce changement en compte. Pour ce faire, lancez make clean-go suivi 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.


Notes de bas de page

(47)

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


Suivant: Lancer la suite de tests, Précédent: Prérequis, Monter: Contribuer   [Table des matières][Index]