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 --localstatedir=/var --sysconfdir=/etc

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

make authenticate

A primeira execução leva alguns minutos, mas as execuções subsequentes são mais rápidas.

Ou, quando a configuração do repositório Git local não corresponder à configuração padrão, você poderá fornecer a referência para a ramificação keyring por meio da variável GUIX_GIT_KEYRING. O exemplo a seguir pressupõe que você tenha um Git remoto chamado ‘myremote’ apontando para o repositório oficial:

make authenticate GUIX_GIT_KEYRING=myremote/keyring

Nota: É aconselhável executar make authenticate após cada invocação de git pull. Isso garante que você continue recebendo alterações válidas no repositório.

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.


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