Próximo: Executando o conjunto de testes, Anterior: Requisitos, Acima: Contribuindo [Conteúdo][Índice]
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ê executargit pull
ougit 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
.
Próximo: Executando o conjunto de testes, Anterior: Requisitos, Acima: Contribuindo [Conteúdo][Índice]