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.
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.
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
.
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.
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.
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
.
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.
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
.
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 the 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.
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
.
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).
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
.
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]