Previous: , Up: Definición de paquetes   [Contents][Index]


8.2.2 Referencia de origin

Esta sección documenta los orígenes. Una declaración de origen (origin) especifica datos que se deben “producir”—descargandose, habitualmente—y el hash de su contenido se conoce de antemano. Los origenes se usan habitualmente para reprensentar el código fuente de los paquetes (see Definición de paquetes). Por esta razón la forma sintáctica origin le permite declarar tanto parches para aplicar al código fuente original como fragmentos de código que para su modificación.

Tipo de datos: origin

Este es el tipo de datos que representa un origen de código fuente.

uri

Un objeto que contiene el URI de las fuentes. El tipo de objeto depende del valor de method (véase a continuación). Por ejemplo, cuando se usa el método url-fetch de (guix download), los valores adecuados para uri son: una cadena que contiene una URL, o una lista de cadenas.

method

A monadic procedure that handles the given URI. The procedure must accept at least three arguments: the value of the uri field and the hash algorithm and hash value specified by the hash field. It must return a store item or a derivation in the store monad (see La mónada del almacén); most methods return a fixed-output derivation (see Derivaciones).

Los métodos habitualmente usados incluyen url-fetch, que obtiene datos a partir de una URL, y git-fetch, que obtiene datos de un repositorio Git (véase a continuación).

sha256

Un vector de bytes que contiene el hash SHA-256 de las fuentes. Es equivalente a proporcionar un objeto SHA256 content-hash en el campo hash descrito a continuación.

hash

El objeto content-hash de las fuentes—véase a continuación cómo usar content-hash.

Puede obtener esta información usando guix download (see Invocación de guix download) o guix hash (see Invocación de guix hash).

file-name (predeterminado: #f)

El nombre de archivo bajo el que el código fuente se almacenará. Cuando este es #f, un valor predeterminado sensato se usará en la mayor parte de casos. En caso de que las fuentes se obtengan de una URL, el nombre de archivo de la URL se usará. Para copias de trabajo de sistemas de control de versiones, se recomienda proporcionar el nombre de archivo explícitamente ya que el predeterminado no es muy descriptivo.

patches (predeterminados: '())

Una lista de nombres de archivos, orígenes u objetos tipo-archivo (see objetos “tipo-archivo”) apuntando a parches que deben ser aplicados a las fuentes.

La lista de parches debe ser incondicional. En particular, no puede depender del valor de %current-system o %current-target-system.

snippet (predeterminado: #f)

Una expresión-G (see Expresiones-G) o expresión-S que se ejecutará en el directorio de fuentes. Esta es una forma conveniente de modificar el software, a veces más que un parche.

patch-flags (predeterminadas: '("-p1"))

Una lista de opciones de línea de órdenes que deberían ser pasadas a la orden patch.

patch-inputs (predeterminada: #f)

Paquetes o derivaciones de entrada al proceso de aplicación de los parches. Cuando es #f, se proporciona el conjunto habitual de entradas necesarias para la aplicación de parches, como GNU Patch.

modules (predeterminados: '())

Una lista de módulos Guile que debe ser cargada durante el proceso de aplicación de parches y mientras se ejecuta el código del campo snippet.

patch-guile (predeterminado: #f)

El paquete Guile que debe ser usado durante la aplicación de parches. Cuando es #f se usa un valor predeterminado.

Tipo de datos: content-hash valor [algoritmo]

Construye un objeto del hash del contenido para el algoritmo proporcionado, y con valor como su valor. Cuando se omite algoritmo se asume que es sha256.

valor puede ser una cadena literal, en cuyo caso se decodifica en base32, o un vector de bytes.

Las siguientes opciones equivalentes entre sí:

(content-hash "05zxkyz9bv3j9h0xyid1rhvh3klhsmrpkf3bcs6frvlgyr2gwilj")
(content-hash "05zxkyz9bv3j9h0xyid1rhvh3klhsmrpkf3bcs6frvlgyr2gwilj"
              sha256)
(content-hash (base32
               "05zxkyz9bv3j9h0xyid1rhvh3klhsmrpkf3bcs6frvlgyr2gwilj"))
(content-hash (base64 "kkb+RPaP7uyMZmu4eXPVkM4BN8yhRd8BTHLslb6f/Rc=")
              sha256)

Técnicamente, content-hash se implementa actualmente con un macro. Realiza comprobaciones de seguridad en tiempo de expansión, cuando es posible, como asegurarse de que valor tiene el tamaño adecuado para algoritmo.

Como se ha visto previamente, la forma exacta en la que un origen hace referencia a los datos se determina por su campo method. El módulo (guix download) proporciona el método más común, url-fetch, descrito a continuación.

Procedimiento: url-fetch url algo-hash hash [nombre] [#:executable? #f]

Devuelve una derivación de salida fija que obtiene datos desde url (una cadena o una lista de cadenas indicando URL alternativas), la cual se espera que tenga el hash hash del tipo algo-hash (un símbolo). De manera predeterminada el nombre de archivo es el identificador final de la URL; de manera opcional se puede usar nombre para especificar un nombre de archivo diferente. Cuando executable? es verdadero se proporciona el permiso de ejecución al archivo descargado.

Cuando una de las URL comienza con mirror://, la parte de la máquina se interpreta como el nombre de un esquema de espejos, obtenido de %mirror-file.

De manera alternativa, cuando URL comienza con file://, devuelve el nombre de archivo del almacén correspondiente.

De igual modo el módulo (guix git-download) define el método de origen git-fetch, que descarga datos de un repositorio de control de versiones Git, y el tipo de datos git-reference, que describe el repositorio y la revisión que se debe obtener.

Procedimiento: git-fetch ref algo-hash hash [nombre]

Devuelve una derivación de salida fija que obtiene ref, un objeto <git-reference>. El hash recursivo de la salida se espera que tenga el valor hash del tipo algo-hash (un símbolo). Se usa nombre para el nombre de archivo, o un nombre genérico si su valor es #f.

Procedimiento: git-fetch/lfs ref algo-hash hash [nombre]

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.

Tipo de datos: git-reference

Este es el tipo de datos que representa una referencia de Git que debe obtener el módulo git-fetch.

url

La URL del repositorio Git que debe clonarse.

commit

This string denotes either the commit to fetch (a hexadecimal string), or the tag to fetch. You can also use a “short” commit ID or a git describe style identifier such as v1.0.1-10-g58d7909c97.

recursive? (predeterminado: #f)

Este valor booleano indica si se obtienen los sub-modulos de Git de manera recursiva.

El siguiente ejemplo representa la etiqueta v2.10 del repositorio de GNU Hello:

(git-reference
  (url "https://git.savannah.gnu.org/git/hello.git")
  (commit "v2.10"))

Es equivalente a la siguiente referencia, la cual nombra de manera explícita la revisión:

(git-reference
  (url "https://git.savannah.gnu.org/git/hello.git")
  (commit "dc7dc56a00e48fe6f231a58f6537139fe2908fb9"))

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

Procedure: 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 the 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]

Devuelve una derivación de salida fija que obtiene ref, un objeto <svn-reference>. El hash recursivo de la salida se espera que tenga el valor hash del tipo algo-hash (un símbolo). Se usa nombre para el nombre de archivo, o un nombre genérico si su valor es #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 the revision to fetch specified as a number.

recursive? (predeterminado: #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 (predeterminada: #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]

Devuelve una derivación de salida fija que obtiene ref, un objeto <bzr-reference>. El hash recursivo de la salida se espera que tenga el valor hash del tipo algo-hash (un símbolo). Se usa nombre para el nombre de archivo, o un nombre genérico si su valor es #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]

Devuelve una derivación de salida fija que obtiene ref, un objeto <cvs-reference>. El hash recursivo de la salida se espera que tenga el valor hash del tipo algo-hash (un símbolo). Se usa nombre para el nombre de archivo, o un nombre genérico si su valor es #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"))

Previous: Referencia de package, Up: Definición de paquetes   [Contents][Index]