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

Procedure :git-fetch/lfs ref hash-algo hash

This is a variant of the git-fetch procedure that supports the Git LFS (Large File Storage) extension. This may be useful to pull some binary test data to run the test suite of a package, for example.

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 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.

Procédure :hg-fetch ref hash-algo hash [name]

Return a fixed-output derivation that fetches ref, a <hg-reference> object. The output is expected to have recursive hash hash of type hash-algo (a symbol). Use name as the file name, or a generic name if #f.

Data Type :hg-reference

This data type represents a Mercurial reference for hg-fetch to retrieve.

url

The URL of the Mercurial repository to clone.

changeset

This string denotes changeset to fetch.

For Subversion repositories, the module (guix svn-download) defines the svn-fetch origin method and svn-reference data type for support of the Subversion version control system.

Procedure :svn-fetch ref hash-algo hash [name]

Renvoie une dérivation à sortie fixe qui va chercher ref, un objet <svn-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.

Data Type :svn-reference

This data type represents a Subversion reference for svn-fetch to retrieve.

url

The URL of the Subversion repository to clone.

revision

This string denotes revision to fetch specified as a number.

recursive? (par défaut : #f)

This Boolean indicates whether to recursively fetch Subversion “externals”.

user-name (default: #f)

The name of an account that has read-access to the repository, if the repository isn’t public.

password (par défaut : #f)

Password to access the Subversion repository, if required.

For Bazaar repositories, the module (guix bzr-download) defines the bzr-fetch origin method and bzr-reference data type for support of the Bazaar version control system.

Procedure :bzr-fetch ref hash-algo hash [name]

Renvoie une dérivation à sortie fixe qui va chercher ref, un objet <bzr-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.

Data Type :bzr-reference

This data type represents a Bazaar reference for bzr-fetch to retrieve.

url

The URL of the Bazaar repository to clone.

revision

This string denotes revision to fetch specified as a number.

For CVS repositories, the module (guix cvs-download) defines the cvs-fetch origin method and cvs-reference data type for support of the Concurrent Versions System (CVS).

Procedure :cvs-fetch ref hash-algo hash [name]

Renvoie une dérivation à sortie fixe qui va chercher ref, un objet <cvs-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.

Data Type :cvs-reference

This data type represents a CVS reference for cvs-fetch to retrieve.

root-directory

The CVS root directory.

module

Module to fetch.

revision

Revision to fetch.

The example below denotes a version of gnu-standards to fetch:

(cvs-reference
  (root-directory ":pserver:anonymous@cvs.savannah.gnu.org:/sources/gnustandards")
  (module "gnustandards")
  (revision "2020-11-25"))

Précédent: Référence de package, Monter: Définition des paquets   [Table des matières][Index]