Próximo: Nível 2: O Repositório como Canal, Anterior: Começando, Acima: Desenvolvimento de software X [Conteúdo][Índice]
Agora que temos uma definição de pacote (veja Começando), por que
não tirar vantagem dela também para que possamos construir o Guile com o
Guix? Deixamos o campo source
vazio, porque o guix shell
acima só se importa com as inputs do nosso pacote—para que ele
possa configurar o ambiente de desenvolvimento—não com o pacote em si.
Para construir o pacote com Guix, precisaremos preencher o campo
source
, desta forma:
(use-modules (guix) (guix git-download) ;para ‘git-predicate’ …) (define vcs-file? ;; Retorna verdadeiro se o arquivo fornecido estiver sob controle de versão. (or (git-predicate (current-source-directory)) (const #t))) ;não em um checkout do Git (package (name "guile") (version "3.0.99-git") ;número da versão funky (source (local-file "." "guile-checkout" #:recursive? #t #:select? vcs-file?)) …)
Aqui está o que mudamos em comparação à seção anterior:
(guix git-download)
ao nosso conjunto de módulos
importados, para que possamos usar seu procedimento git-predicate
.
vcs-file?
como um procedimento que retorna true quando
passado um arquivo que está sob controle de versão. Para uma boa medida,
adicionamos um caso de fallback para quando não estamos em um checkout do
Git: sempre retorna true.
source
como um
local-file
—uma
cópia recursiva do diretório atual ("."
), limitado a arquivos sob
controle de versão (o bit #:select?
).
A partir daí, nosso arquivo guix.scm serve a um segundo propósito: ele nos permite construir o software com Guix. O ponto principal de construir com Guix é que é uma construção “limpa” — você pode ter certeza de que nada da sua árvore de trabalho ou sistema interfere no resultado da construção — e ele permite que você teste uma variedade de coisas. Primeiro, você pode fazer uma construção nativa simples:
guix build -f guix.scm
Mas você também pode compilar para outro sistema (possivelmente após configurar veja offloading em GNU Guix Reference Manual ou veja emulação transparente em Manual de referência do GNU Guix):
guix build -f guix.scm -s aarch64-linux -s riscv64-linux
… ou compilação cruzada:
guix build -f guix.scm --target=x86_64-w64-mingw32
Você também pode usar transformações de pacotes para testar variantes de pacotes (veja Opções de transformação de pacote em Manual de referência do GNU Guix):
# E se construíssemos com Clang em vez de GCC? guix build -f guix.scm \ --with-c-toolchain=guile@3.0.99-git=clang-toolchain # E quanto ao sinalizador configure pouco testado? guix build -f guix.scm \ --with-configure-flag=guile@3.0.99-git=--disable-networking
Útil!
Próximo: Nível 2: O Repositório como Canal, Anterior: Começando, Acima: Desenvolvimento de software X [Conteúdo][Índice]