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 Invocando 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 um código de saída zero em caso de sucesso; caso contrário, ele imprime uma mensagem de erro e sai com um código diferente de zero.

Como você pode ver, há um problema de ovo e galinha: primeiro você precisa ter o Guix instalado. Normalmente você instalaria o Guix System (veja Instalação do sistema) ou o Guix em cima de outra distro (veja Instalação de binários); em ambos os casos, você verificaria a assinatura OpenPGP na mídia de instalação. Isso “bootstraps” a cadeia de confiança.

A maneira mais fácil de configurar um ambiente de desenvolvimento para Guix é, claro, usando Guix! O comando a seguir inicia um novo shell onde todas as dependências e variáveis de ambiente apropriadas são configuradas para hackear em 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 Invocando 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

A partir daí você pode gerar a infraestrutura do sistema de construção usando Autoconf e 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

Opcionalmente, --localstatedir e --sysconfdir podem também ser providenciados como argumentos. Por padrão, localstatedir é /var (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 módulo (guix config) do Guile.

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

make
make check

Se alguma coisa falhar, dê uma olhada nas instruções de instalação (veja Instalação) ou envie uma mensagem para a a lista de discussão.

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"

A primeira execução leva alguns minutos, mas as execuções subsequentes são mais rápidas. Em execuções subsequentes, você pode executar o comando sem argumentos, já que o introduction (o ID de confirmação e as impressões digitais do OpenPGP acima) terão sido registrados44:

guix git authenticate

Quando sua configuração para seu repositório Git local não corresponde ao padrão, você pode fornecer a referência para o branch keyring via a opção -k. O exemplo a seguir pressupõe que você tenha um Git remoto chamado ‘myremote’ apontando para o repositório oficial:

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

Veja Invocando guix git authenticate, para mais informações sobre este comando.

Nota: Por padrão, os hooks são instalados de forma que guix git authenticate seja invocado sempre que você executar git pull ou 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.

Caso make falhe com uma mensagem de erro do Automake após a atualização, você precisará repetir as etapas descritas nesta seção, começando com ./bootstrap.


Notas de Rodapé

(44)

Isso requer uma versão recente do Guix, de maio de 2024 ou mais recente.


Próximo: Executando o conjunto de testes, Anterior: Requisitos, Acima: Contribuindo   [Conteúdo][Índice]