Suivant: référence des origines, Monter: Définition des paquets [Table des matières][Index]
package
Cette section résume toutes les options disponibles dans les déclarations
package
(voir Définition des paquets).
C’est le type de donnée représentant une recette de paquets.
name
Le nom du paquet, comme une chaîne de caractères.
version
La version du paquet, comme une chaîne de caractères.
source
Un objet qui indique comment le code source du paquet devrait être
récupéré. La plupart du temps, c’est un objet origin
qui indique un
fichier récupéré depuis internet (voir référence des origines). Il peut aussi
s’agir de tout autre objet « simili-fichier » comme un local-file
qui
indique un fichier du système de fichier local (voir local-file
).
build-system
Le système de construction qui devrait être utilisé pour construire le paquet (voir Systèmes de construction).
arguments
(par défaut : '()
)Les arguments à passer au système de construction. C’est une liste qui contient typiquement une séquence de paires de clefs-valeurs.
inputs
(par défaut : '()
)native-inputs
(par défaut : '()
)propagated-inputs
(par défaut : '()
)Ces champs listent les dépendances du paquet. Chacune est une liste de
tuples, où chaque tuple a une étiquette pour une entrée (une chaîne de
caractères) comme premier élément, un paquet, une origine ou une dérivation
comme deuxième élément et éventuellement le nom d’une sortie à utiliser qui
est "out"
par défaut (voir Des paquets avec plusieurs résultats, pour
plus d’informations sur les sorties des paquets). Par exemple, la liste
suivante spécifie trois entrées :
`(("libffi" ,libffi) ("libunistring" ,libunistring) ("glib:bin" ,glib "bin")) ;la sortie "bin" de Glib
La distinction entre native-inputs
et inputs
est nécessaire
lorsqu’on considère la compilation croisée. Lors d’une compilation croisée,
les dépendances listées dans inputs
sont construites pour
l’architecture cible ; inversement, les dépendances listées dans
native-inputs
sont construites pour l’architecture de la machine de
construction.
native-inputs
est typiquement utilisé pour lister les outils requis à
la construction mais pas à l’exécution, comme Autoconf, Automake,
pkg-config, Gettext ou Bison. guix lint
peut rapporter des
erreurs de ce type (voir Invoquer guix lint).
Enfin, propagated-inputs
est similaire à inputs
, mais les
paquets spécifiés seront automatiquement installés sur les profils
(voir le rôle des profils dans Guix) à côté du paquet auquel
ils appartiennent (voir guix
package
, pour savoir comment guix package
traite les entrées
propagées).
Par exemple, cela est nécessaire lors de l’empaquetage d’une bibliothèque
C/C++ qui a besoin des en-têtes d’une autre bibliothèque pour se compiler,
ou lorsqu’un fichier pkg-config fait référence à un autre via son champ
Requires
.
Un autre exemple où le propagated-inputs
est utile, c’est pour les
langues qui ne disposent pas de la possibilité d’enregistrer le chemin de
recherche à l’exécution comme le RUNPATH
des fichiers ELF ; cela
inclut Guile, Python, Perl, et plus encore. Lors de l’empaquetage de
bibliothèques écrites dans ces langages, assurez-vous qu’elles peuvent
trouver le code de bibliothèque dont elles dépendent au moment de
l’exécution en listant les dépendances d’exécution dans
propagated-inputs
plutôt que inputs
.
outputs
(par défaut : '("out")
)La liste des noms de sorties du paquet. Voir Des paquets avec plusieurs résultats, pour des exemples typiques d’utilisation de sorties supplémentaires.
native-search-paths
(par défaut : '()
)search-paths
(par défaut : '()
)Une liste d’objets search-path-specification
décrivant les variables
d’environnement de recherche de chemins que ce paquet utilise.
replacement
(par défaut : #f
)Ce champ doit être soit #f
soit un objet de paquet qui sera utilisé
comme remplaçant de ce paquet. Voir grafts, pour
plus de détails.
synopsis
Une description sur une ligne du paquet.
description
Une description plus détaillée du paquet.
license
La licence du paquet ; une valeur tirée de (guix licenses)
ou une
liste de ces valeurs.
home-page
L’URL de la page d’accueil du paquet, en tant que chaîne de caractères.
supported-systems
(par défaut : %supported-systems
)La liste des systèmes supportés par le paquet, comme des chaînes de
caractères de la forme architecture-noyau
, par exemple
"x86_64-linux"
.
location
(par défaut : emplacement de la source de la forme package
)L’emplacement de la source du paquet. C’est utile de le remplacer lorsqu’on hérite d’un autre paquet, auquel cas ce champ n’est pas automatiquement corrigé.
Lorsque vous l’utilisez dans la portée lexicale du champ d’une définition de paquet, cet identifiant est résolu comme étant le paquet définit.
L’exemple ci-dessous montre l’ajout d’un paquet comme entrée native de lui-même pour la compilation croisée :
(package
(name "guile")
;; ...
;; Lors de la compilation croisée, Guile par exemple dépend
;; d'une version native de lui-même. On l'ajoute ici.
(native-inputs (if (%current-target-system)
`(("self" ,this-package))
'())))
C’est une erreur que de se référer à this-package
en dehors de la
définition d’un paquet.
Comme les paquets sont des objets Scheme réguliers qui capturent un graphe de dépendance complet et les procédures de construction associées, il est souvent utile d’écrire des procédures qui prennent un paquet et renvoient une version modifiée de celui-ci en fonction de certains paramètres. En voici quelques exemples.
Renvoie une variante de package qui utilise toolchain au lieu de
la chaîne d’outils GNU C/C++ par défaut. toolchain doit être une
liste d’entrées (tuples label/package) fournissant une fonctionnalité
équivalente, comme le paquet gcc-toolchain
.
L’exemple ci-dessous renvoie une variante du paquet hello
construit
avec GCC 10.x et le reste de la chaîne d’outils GNU (Binutils et la
bibliothèque C GNU) au lieu de la chaîne d’outils par défaut :
(let ((toolchain (specification->package "gcc-toolchain@10")))
(package-with-c-toolchain hello `(("toolchain" ,toolchain))))
La chaîne d’outils de construction fait partie des entrées implicites des paquets— elle n’est généralement pas listée comme faisant partie des différents champs "entrées" et est à la place récupérée par le système de construction. Par conséquent, cette procédure fonctionne en modifiant le système de compilation de paquet de sorte qu’il utilise toolchain au lieu des valeurs par défaut. Systèmes de construction, pour en savoir plus sur les systèmes de construction.
Suivant: référence des origines, Monter: Définition des paquets [Table des matières][Index]