Previous: Referencia de package
, Up: Definición de paquetes [Contents][Index]
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.
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.
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.
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.
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
.
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.
<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 #false
.
Previous: Referencia de package
, Up: Definición de paquetes [Contents][Index]