Próximo: , Anterior: , Acima: Contribuindo   [Conteúdo][Índice]


22.2 Compilando do git

Se você quiser hackear o próprio Guix, é recomendado usar a versão mais recente do repositório Git:

git clone https://git.savannah.gnu.org/git/guix.git

Como você garante que obteve uma cópia genuína do repositório? Para fazer isso, execute guix git authenticate, passando a ele o commit e a impressão digital OpenPGP do Introdução ao canal (veja Invoking guix git authenticate):

git fetch origin keyring:keyring
guix git authenticate 9edb3f66fd807b096b48283debdcddccfea34bad \
  "BBB0 2DDF 2CEA F6A8 0D1D  E643 A2A0 6DF2 A33A 54FA"

Este comando é concluído com o código de saída zero em caso de sucesso; ele imprime uma mensagem de erro e sai com um código diferente de zero, caso contrário.

Como você pode ver, existe um problema de ovo e galinha: você precisa primeiro ter o Guix instalado. Normalmente, você instalaria o Guix System (veja Instalação do sistema) ou o Guix sobre outra distribuição (veja Instalação de binários); em ambos os casos, você verificaria a assinatura OpenPGP no meio de instalação. Isso "inicializa" a cadeia de confiança.

A maneira mais fácil de configurar um ambiente de desenvolvimento para o Guix é, obviamente, usando o Guix! O comando a seguir inicia um novo shell no qual todas as dependências e variáveis de ambiente apropriadas são configuradas para hackear o Guix:

guix shell -D guix -CPW

ou mesmo, de dentro de uma árvore de trabalho Git para Guix:

guix shell -CPW

Se -C (abreviação de --container) não for compatível com seu sistema, tente --pure em vez de -CPW. Veja Invoking guix shell, para obter mais informações sobre esse comando.

Se você não conseguir usar o Guix ao criar o Guix a partir de um checkout, a seguir estão os pacotes necessários, além daqueles mencionados nas instruções de instalação (veja Requisitos).

No Guix, dependências extras podem ser adicionadas executando guix shell:

guix shell -D guix help2man git strace --pure

From there you can generate the build system infrastructure using Autoconf and Automake:

./bootstrap

Se você receber um erro como este:

configure.ac:46: error: possibly undefined macro: PKG_CHECK_MODULES

provavelmente significa que o Autoconf não conseguiu encontrar o pkg.m4, que é fornecido pelo pkg-config. Certifique-se de que pkg.m4 esteja disponível. O mesmo vale para o conjunto de macros guile.m4 fornecido pelo Guile. Por exemplo, se você instalou o Automake em /usr/local, ele não procuraria arquivos .m4 em /usr/share. Nesse caso, você tem que invocar o seguinte comando:

export ACLOCAL_PATH=/usr/share/aclocal

Veja Macro Search Path em The GNU Automake Manual, para mais informações.

Então, execute:

./configure

... onde /var é o valor normal de localstatedir (veja O armazém, para obter informações sobre isso) e /etc é o valor normal de sysconfdir. Observe que você provavelmente não executará make install no final (não é necessário), mas ainda é importante passar os valores localstatedir e sysconfdir corretos, que são registrados no (guix config) Módulo Guile.

Finalmente, você pode construir o Guix e, se desejar, executar os testes (veja Executando a suíte de testes):

make
make check

If anything fails, take a look at installation instructions (veja Instalação) or send a message to the mailing list.

A partir daí, você pode autenticar todos os commits incluídos no seu checkout executando:

guix git authenticate \
  9edb3f66fd807b096b48283debdcddccfea34bad \
  "BBB0 2DDF 2CEA F6A8 0D1D  E643 A2A0 6DF2 A33A 54FA"

The first run takes a couple of minutes, but subsequent runs are faster. On subsequent runs, you can run the command without any arguments since the introduction (the commit ID and OpenPGP fingerprints above) will have been recorded43:

guix git authenticate

When your configuration for your local Git repository doesn’t match the default one, you can provide the reference for the keyring branch via the -k option. The following example assumes that you have a Git remote called ‘myremote’ pointing to the official repository:

guix git authenticate \
  -k myremote/keyring \
  9edb3f66fd807b096b48283debdcddccfea34bad \
  "BBB0 2DDF 2CEA F6A8 0D1D  E643 A2A0 6DF2 A33A 54FA"

Veja Invoking guix git authenticate, for more information on this command.

Nota: By default, hooks are installed such that guix git authenticate is invoked anytime you run git pull or git push.

Após atualizar o repositório, make pode falhar com um erro semelhante ao exemplo a seguir:

error: failed to load 'gnu/packages/linux.scm':
ice-9/eval.scm:293:34: In procedure abi-check: #<record-type <origin>>: record ABI mismatch; recompilation needed

Isso significa que um dos tipos de registro que o Guix define (neste exemplo, o registro origin) foi alterado e todo o guix precisa ser recompilado para levar essa mudança em consideração. Para fazer isso, execute make clean-go seguido de make.

Should make fail with an Automake error message after updating, you need to repeat the steps outlined in this section, commencing with ./bootstrap.


Notas de Rodapé

(43)

This requires a recent version of Guix, from May 2024 or more recent.


Próximo: Executando a suíte de testes, Anterior: Requisitos, Acima: Contribuindo   [Conteúdo][Índice]