Próximo: Executando a suíte 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 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 degit 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]