Suivant: Niveau 2 : Le dépôt comme canal, Précédent: Guide de démarrage, Monter: Développement logiciel [Table des matières][Index]
Maintenant que nous avons notre définition de paquet (voir Guide de démarrage), pour ne pas en profiter pour compiler Guile avec Guix ? Nous
avions omis le champ source
car guix shell
ne se préoccupe
que des dépendances du paquet—afin de mettre en place
l’environnement de développement.
Pour compiler le paquet il nous faut remplir le champ source
avec
quelque chose du style :
(use-modules (guix) (guix git-download) ;for ‘git-predicate’ …) (define vcs-file? ;; Return true if the given file is under version control. (or (git-predicate (current-source-directory)) (const #t))) ;not in a Git checkout (package (name "guile") (version "3.0.99-git") ;funky version number (source (local-file "." "guile-checkout" #:recursive? #t #:select? vcs-file?)) …)
Voici la différence entre la version actuelle et la section précédente :
(guix git-download)
à la liste des modules importés
pour la procédure git-predicate
.
vcs-file?
qui nous permet de savoir si
un fichier est versionné. Pour faire bonne mesure nous répondons toujours
oui lorsque nous ne sommes pas dans un dépôt Git.
source
avec un
local-file
—une
copie récursive des fichiers versionnés (avec le #:select?
) du
dossier courant ("."
)
À partir de là, notre guix.scm prend un second rôle : il nous permet de compiler le logiciel avec Guix. L’intérêt réside en ce que cette compilation est “pure”—nous sommes certains qu’aucun élément de notre copie de travail ou du système n’interfère avec la compilation–et de tester plein de choses. Premièrement, nous pouvons réaliser une compilation native standard :
guix build -f guix.scm
Mais nous pouvons également compiler pour un autre système (après avoir mis en place voir Réglages du déchargement du démon dans Manuel de référence de GNU Guix ou voir Émulation transparente avec QEMU dans Manuel de référence de GNU Guix) :
guix build -f guix.scm -s aarch64-linux -s riscv64-linux
… ou en compilation croisée :
guix build -f guix.scm --target=x86_64-w64-mingw32
Nous pouvons également utiliser les transformations de paquets pour tester des variantes (voir Options de transformation de paquets dans Manuel de référence de GNU Guix) :
# What if we built with Clang instead of GCC? guix build -f guix.scm \ --with-c-toolchain=guile@3.0.99-git=clang-toolchain # What about that under-tested configure flag? guix build -f guix.scm \ --with-configure-flag=guile@3.0.99-git=--disable-networking
Pratique !
Suivant: Niveau 2 : Le dépôt comme canal, Précédent: Guide de démarrage, Monter: Développement logiciel [Table des matières][Index]