Anterior: Referência do package
, Acima: Definindo pacotes [Conteúdo][Índice]
origin
Esta seção documenta origens. Uma declaração origin
especifica
dados que devem ser “produzidos”—baixados, normalmente—e cujo hash de
conteúdo é conhecido com antecedência. Origens são usados principalmente
para representar o código-fonte de pacotes (veja Definindo pacotes). Por
esse motivo, o formulário origin
permite que você declare remendos
para aplicar ao código-fonte original, bem como trechos de código para
modificá-lo.
Este é o tipo de dado que representa a origem do código-fonte.
uri
Um objeto contendo o URI da fonte. O tipo de objeto depende do method
(veja abaixo). Por exemplo, ao usar o método url-fetch de (guix
download)
, os valores válidos de uri
são: uma URL representada como
uma string, ou uma lista delas.
method
Um procedimento monádico que manipula o URI fornecido. O procedimento deve
aceitar pelo menos três argumentos: o valor do campo uri
e o
algoritmo de hash e o valor de hash especificados pelo campo
hash
. Ele deve retornar um item do armazém ou uma derivação na mônada
do armazém (veja A mônada do armazém); a maioria dos métodos retorna uma
derivação de saída fixa (veja Derivações).
Os métodos comumente usados incluem url-fetch
, que busca dados de uma
URL, e git-fetch
, que busca dados de um repositório Git (veja
abaixo).
sha256
Um bytevector contendo o hash SHA-256 da fonte. Isso é equivalente a
fornecer um objeto SHA256 content-hash
no campo hash
descrito
abaixo.
hash
O objeto content-hash
da fonte — veja abaixo como usar
content-hash
.
You can obtain this information using guix download
(veja Invocando guix download
) or guix hash
(veja Invocando guix hash
).
file-name
(padrão: #f
)O nome do arquivo sob o qual o código-fonte deve ser salvo. Quando for
#f
, um valor padrão sensato será usado na maioria dos casos. Caso a
fonte seja obtida de uma URL, o nome do arquivo da URL será usado. Para
checkouts de controle de versão, é recomendado fornecer o nome do arquivo
explicitamente porque o padrão não é muito descritivo.
patches
(padrão: '()
)Uma lista de nomes de arquivos, origens ou objetos tipo arquivo (veja objetos tipo arquivo) apontando para remendos a serem aplicados à origem.
Esta lista de remendos deve ser incondicional. Em particular, não pode
depender do valor de %current-system
ou
%current-target-system
.
snippet
(padrão: #f
)Uma expressão G (veja Expressões-G) ou expressão S que será executada no diretório de origem. Esta é uma maneira conveniente de modificar a origem, às vezes mais conveniente do que um patch.
patch-flags
(padrão: '("-p1")
)Uma lista de sinalizadores de linha de comando que devem ser passados para o
comando patch
.
patch-inputs
(padrão: #f
)Pacotes de entrada ou derivações para o processo de patching. Quando este é
#f
, o conjunto usual de entradas necessárias para patching é
fornecido, como GNU Patch.
modules
(padrão: '()
)Uma lista de módulos Guile que devem ser carregados durante o processo de
aplicação de remendos e durante a execução do código no campo
snippet
.
patch-guile
(padrão: #f
)O pacote Guile que deve ser usado no processo de patching. Quando este é
#f
, um padrão sensato é usado.
Construa um objeto hash de conteúdo para o algoritmo fornecido, e com
valor como seu valor hash. Quando algoritmo é omitido, presuma
que é sha256
.
valor pode ser uma string literal, nesse caso ela é decodificada em base32, ou pode ser um bytevector.
Os seguintes formulários são todos equivalentes:
(content-hash "05zxkyz9bv3j9h0xyid1rhvh3klhsmrpkf3bcs6frvlgyr2gwilj") (content-hash "05zxkyz9bv3j9h0xyid1rhvh3klhsmrpkf3bcs6frvlgyr2gwilj" sha256) (content-hash (base32 "05zxkyz9bv3j9h0xyid1rhvh3klhsmrpkf3bcs6frvlgyr2gwilj")) (content-hash (base64 "kkb+RPaP7uyMZmu4eXPVkM4BN8yhRd8BTHLslb6f/Rc=") sha256)
Tecnicamente, content-hash
é atualmente implementado como uma
macro. Ele realiza verificações de sanidade no momento da expansão da macro,
quando possível, como garantir que valor tenha o tamanho certo para
algoritmo.
Como vimos acima, como exatamente os dados aos quais uma origem se refere
são recuperados é determinado pelo seu campo method
. O módulo
(guix download)
fornece o método mais comum, url-fetch
,
descrito abaixo.
Retorna uma derivação de saída fixa que busca dados de url (uma string, ou uma lista de strings denotando URLs alternativas), que deve ter hash hash do tipo hash-algo (um símbolo). Por padrão, o nome do arquivo é o nome base de URL; opcionalmente, nome pode especificar um nome de arquivo diferente. Quando executable? é verdadeiro, torna o arquivo baixado executável.
Quando uma das URLs começa com mirror://
, sua parte host é
interpretada como o nome de um esquema de espelho, obtido de
%mirror-file.
Como alternativa, quando a URL começa com file://
, retorne o nome do
arquivo correspondente no armazém.
Da mesma forma, o módulo (guix git-download)
define o método de
origem git-fetch
, que busca dados de um repositório de controle de
versão Git, e o tipo de dados git-reference
para descrever o
repositório e a revisão a serem buscados.
Retorna uma derivação de saída fixa que busca ref, um objeto
<git-reference>
. Espera-se que a saída tenha hash recursivo
hash do tipo hash-algo (um símbolo). Use nome como o nome
do arquivo, ou um nome genérico se #f
.
Esta é uma variante do procedimento git-fetch
que suporta a extensão
Git LFS (Large File Storage). Isso pode ser útil para extrair
alguns dados de teste binários para executar o conjunto de testes de um
pacote, por exemplo.
Este tipo de dado representa uma referência Git para git-fetch
a
recuperar.
url
A URL do repositório Git a ser clonado.
commit
Esta string denota o commit a ser buscado (uma string hexadecimal) ou a tag
a ser buscada. Você também pode usar um ID de commit “curto” ou um
identificador de estilo git describe
como
v1.0.1-10-g58d7909c97
.
recursive?
(padrão: #f
)Este booleano indica se os submódulos do Git devem ser buscados recursivamente.
O exemplo abaixo denota a tag v2.10
do repositório GNU Hello:
(git-reference
(url "https://git.savannah.gnu.org/git/hello.git")
(commit "v2.10"))
Isso é equivalente à referência abaixo, que nomeia explicitamente o commit:
(git-reference
(url "https://git.savannah.gnu.org/git/hello.git")
(commit "dc7dc56a00e48fe6f231a58f6537139fe2908fb9"))
Para repositórios Mercurial, o módulo (guix hg-download)
define o
método de origem hg-fetch
e o tipo de dados hg-reference
para
suporte ao sistema de controle de versão Mercurial.
Retorna uma derivação de saída fixa que busca ref, um objeto
<hg-reference>
. Espera-se que a saída tenha hash recursivo hash
do tipo hash-algo (um símbolo). Use nome como o nome do arquivo,
ou um nome genérico se #f
.
Este tipo de dado representa uma referência Mercurial para hg-fetch
a
recuperar.
url
A URL do repositório Mercurial a ser clonado.
changeset
Esta sequência de caracteres indica a revisão a ser buscado.
Para repositórios Subversion, o módulo (guix svn-download)
define o
método de origem svn-fetch
e o tipo de dados svn-reference
para suporte ao sistema de controle de versão Subversion.
Retorna uma derivação de saída fixa que busca ref, um objeto
<svn-reference>
. Espera-se que a saída tenha hash recursivo
hash do tipo hash-algo (um símbolo). Use nome como o nome
do arquivo, ou um nome genérico se #f
.
Este tipo de dado representa uma referência Subversion para svn-fetch
a recuperar.
url
A URL do repositório Subversion a ser clonado.
revision
Esta sequência de caracteres denota a revisão a ser buscada especificada como um número.
recursive?
(padrão: #f
)Este booleano indica se deve-se buscar recursivamente “externals” do Subversion.
user-name
(padrão: #f
)O nome de uma conta que tem acesso de leitura ao repositório, se o repositório não for público.
password
(padrão: #f
)Senha para acessar o repositório Subversion, se necessário.
Para repositórios Bazaar, o módulo (guix bzr-download)
define o
método de origem bzr-fetch
e o tipo de dados bzr-reference
para suporte ao sistema de controle de versão Bazaar.
Retorna uma derivação de saída fixa que busca ref, um objeto
<bzr-reference>
. Espera-se que a saída tenha hash recursivo
hash do tipo hash-algo (um símbolo). Use nome como o nome
do arquivo, ou um nome genérico se #f
.
Este tipo de dado representa uma referência Bazaar para bzr-fetch
a
recuperar.
url
A URL do repositório Bazaar a ser clonado.
revision
Esta sequência de caracteres denota a revisão a ser buscada especificada como um número.
Para repositórios CVS, o módulo (guix cvs-download)
define o método
de origem cvs-fetch
e o tipo de dados cvs-reference
para
suporte ao Concurrent Versions System (CVS).
Retorna uma derivação de saída fixa que busca ref, um objeto
<cvs-reference>
. Espera-se que a saída tenha hash recursivo
hash do tipo hash-algo (um símbolo). Use nome como o nome
do arquivo, ou um nome genérico se #f
.
Este tipo de dado representa uma referência CVS para cvs-fetch
a
recuperar.
root-directory
O diretório raiz do CVS.
module
Módulo a ser buscado.
revision
Revisão para buscar.
O exemplo abaixo denota uma versão do gnu-standards para buscar:
(cvs-reference
(root-directory ":pserver:anonymous@cvs.savannah.gnu.org:/sources/gnustandards")
(module "gnustandards")
(revision "2020-11-25"))
Anterior: Referência do package
, Acima: Definindo pacotes [Conteúdo][Índice]