Précédent: Référence de package
, Monter: Définition des paquets [Table des matières][Index]
origin
Cette section documente origins. Une déclaration origin
spécifie les données qui doivent être "produites" – téléchargées,
généralement – et dont le contenu est connu à l’avance. Les origines sont
principalement utilisées pour représenter le code source des paquets
(voir Définition des paquets). Pour cette raison, le formulaire origin
permet de déclarer des correctifs à appliquer au code source original ainsi
que des bribes de code pour le modifier.
C’est le type de donnée qui représente l’origine d’un code source.
uri
Un objet contenant l’URI de la source. Le type d’objet dépend de la
method
(voir plus bas). Par exemple, avec la méthode url-fetch
de (guix download)
, les valeurs valide d’uri
sont : une URL
représentée par une chaîne de caractères, ou une liste de chaînes de
caractères.
method
Une procédure monadique qui gère l’URI donné. La procédure doit accepter au
moins trois arguments : la valeur du champ uri
et l’algorithme de
hachage et la valeur de hachage spécifiée par le champ hash
. Elle
doit renvoyer un élément du dépôt ou une dérivation dans la monade du dépôt
(voir La monade du dépôt) ; la plupart des méthodes renvoient une dérivation
à sortie fixe (voir Dérivations).
Les méthodes couramment utilisées comprennent url-fetch
, qui récupère
les données à partir d’une URL, et git-fetch
, qui récupère les
données à partir d’un dépôt Git (voir ci-dessous).
sha256
Un bytevector contenant le hachage SHA-256 de la source. Cela équivaut à
fournir un content-hash
Objet SHA256 dans le champ hash
décrit
ci-dessous.
hash
L’objet content-hash
de la source–voir ci-dessous pour savoir
comment utiliser content-hash
.
Vous pouvez obtenir cette information avec guix download
(voir Invoquer guix download
) ou guix hash
(voir Invoquer guix hash
).
file-name
(par défaut : #f
)Le nom de fichier à utiliser pour sauvegarder le fichier. Lorsqu’elle est à
#f
, une valeur par défaut raisonnable est utilisée dans la plupart
des cas. Dans le cas où la source est récupérée depuis une URL, le nom de
fichier est celui de l’URL. Pour les sources récupérées depuis un outil de
contrôle de version, il est recommandé de fournir un nom de fichier
explicitement parce que le nom par défaut n’est pas très descriptif.
patches
(par défaut : '()
)Une liste de noms de fichiers, d’origines ou d’objets simili-fichiers (voir file-like objects) qui pointent vers des correctifs à appliquer sur la source.
Cette liste de correctifs doit être inconditionnelle. En particulier, elle
ne peut pas dépendre des valeurs de %current-system
ou
%current-target-system
.
snippet
(par défaut : #f
)Une G-expression (voir G-Expressions) ou une S-expression qui sera lancée dans le répertoire des sources. C’est une manière pratique de modifier la source, parfois plus qu’un correctif.
patch-flags
(par défaut : '("-p1")
)Une liste de drapeaux à passer à la commande patch
.
patch-inputs
(par défaut : #f
)Paquets d’entrées ou dérivations pour le processus de correction.
Lorsqu’elle est à #f
, l’ensemble d’entrées habituellement nécessaire
pour appliquer des correctifs est fournit, comme GNU Patch.
modules
(par défaut : '()
)Une liste de modules Guile qui devraient être chargés pendant le processus
de correction et pendant que le lancement du code du champ snippet
.
patch-guile
(par défaut : #f
)Le paquet Guile à utiliser dans le processus de correction. Lorsqu’elle est
à #f
, une valeur par défaut raisonnable est utilisée.
Construire un objet de hash de contenu pour l’algorithme donné, et
avec valeur comme valeur de hachage. Lorsque algorithme est
omis, on suppose qu’il s’agit de sha256
.
value peut être une chaîne littérale, auquel cas elle est décodée en base32, ou il peut s’agir d’un bytevecteur.
Les options suivantes sont équivalentes :
(content-hash "05zxkyz9bv3j9h0xyid1rhvh3klhsmrpkf3bcs6frvlgyr2gwilj") (content-hash "05zxkyz9bv3j9h0xyid1rhvh3klhsmrpkf3bcs6frvlgyr2gwilj" sha256) (content-hash (base32 "05zxkyz9bv3j9h0xyid1rhvh3klhsmrpkf3bcs6frvlgyr2gwilj")) (content-hash (base64 "kkb+RPaP7uyMZmu4eXPVkM4BN8yhRd8BTHLslb6f/Rc=") sha256)
Techniquement, le content-hash
est actuellement mis en œuvre sous
forme de macro. Il effectue des contrôles de bon sens au moment de
l’expansion de la macro, lorsque cela est possible, en s’assurant par
exemple que valeur a la bonne taille pour algorithme.
Comme nous l’avons vu plus haut, la manière dont les données auxquelles une
origine se réfère exactement sont récupérées est déterminée par son champ
method
. Le module (guix download)
fournit la méthode la plus
courante, url-fetch
, décrite ci-dessous.
les données de url (une chaîne de caractères, ou une liste de chaînes de caractères désignant des URLs alternatives), qui est censée avoir un hash hash de type hash-algo (un symbole). Par défaut, le nom du fichier est le nom de base de l’URL ; en option, nom peut spécifier un nom de fichier différent. Lorsque executable? est vrai, rendez le fichier téléchargé exécutable.
Lorsque l’une des URL commence par mirror://
, sa partie hôte est
alors interprétée comme le nom d’un schéma de miroir, tiré de
%mirror-file.
Alternativement, lorsque l’URL commence par file://
, renvoie le nom
du fichier correspondant dans le dépôt.
De même, le module (guix git-download)
définit la méthode d’origine
git-download
, qui récupère les données d’un dépôt de contrôle de
version Git, et le type de données git-reference
pour décrire le
dépôt et la révision à récupérer.
Renvoie une dérivation à sortie fixe qui va chercher ref, un objet
<git-reference>
. La sortie est censée avoir un hash récursif
hash de type hash-algo (un symbole). Utilisez name comme
nom de fichier, ou un nom générique si #f
.
Ce type de données représente une référence Git pour le git-fetch
à
récupérer.
url
L’URL du dépôt Git à cloner.
commit
Cette chaîne indique soit le commit à récupérer (une chaîne hexadécimale),
soit le tag à récupérer. Vous pouvez aussi utiliser une chaîne de commit «
courte » ou un identifiant dans le style de git describe
comme
v1.0.1-10-g58d7909c97
.
recursive?
(par défaut : #f
)Ce booléen indique s’il faut aller chercher récursivement les sous-modules de Git.
L’exemple ci-dessous indique la balise v2.10
du dépôt GNU Hello
:
(git-reference
(url "https://git.savannah.gnu.org/git/hello.git")
(commit "v2.10"))
C’est équivalent à la référence ci-dessous, qui nomme explicitement le commit :
(git-reference
(url "https://git.savannah.gnu.org/git/hello.git")
(commit "dc7dc56a00e48fe6f231a58f6537139fe2908fb9"))
Pour les dépôts Mercurial, le module (guix hg-download)
définit la
méthode d’origine hg-download
et le type de données
hg-reference
pour la prise en charge du système de contrôle de
version Mercurial.
Renvoie une dérivation à sortie fixe qui va chercher ref, un objet
<hg-reference>
. La sortie est censée avoir un hash récursif
hash de type hash-algo (un symbole). Utilisez name comme
nom de fichier, ou un nom générique si #false
.
Précédent: Référence de package
, Monter: Définition des paquets [Table des matières][Index]