Anterior: , Acima: Definindo pacotes   [Conteúdo][Índice]


8.2.2 Referência do 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.

Tipo de dados: origin

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.

Tipo de dados: content-hash valor [algoritmo]

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.

Procedimento: url-fetch url hash-algo hash [nome] [#:executable?? #f]

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.

Procedimento: git-fetch ref hash-algo hash [nome]

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.

Procedimento: git-fetch/lfs ref hash-algo hash [nome]

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.

Tipo de dados: git-reference

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.

Procedimento: hg-fetch ref hash-algo hash [nome]

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.

Tipo de dados: hg-reference

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.

Procedimento: svn-fetch ref hash-algo hash [nome]

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.

Tipo de dados: svn-reference

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.

Procedimento: bzr-fetch ref hash-algo hash [nome]

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.

Tipo de dados: bzr-reference

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

Procedimento: cvs-fetch ref hash-algo hash [nome]

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.

Tipo de dados: cvs-reference

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]