Précédent: , Monter: Définition des paquets   [Table des matières][Index]


8.2.2 Référence de 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.

Type de données : origin

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.

Data Type : content-hash value [algorithm]

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.

Procédure Scheme : url-fetch url hash-algo hash [name] [#:executable ? #f] Renvoie une dérivation à sortie fixe qui récupère

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.

Procédure Scheme : git-fetch ref hash-algo hash

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.

Type de données : git-reference

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 commit SHA1 complet ou une chaîne de commit "courte" ; cette dernière n’est pas recommandée), soit le tag à récupérer.

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"))

Précédent: , Monter: Définition des paquets   [Table des matières][Index]