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


22.1 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

How do you ensure that you obtained a genuine copy of the repository? To do that, run guix git authenticate, passing it the commit and OpenPGP fingerprint of the channel introduction (veja Invoking guix git authenticate):

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

This command completes with exit code zero on success; it prints an error message and exits with a non-zero code otherwise.

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

or even, from within a Git worktree for Guix:

guix shell -CPW

If -C (short for --container) is not supported on your system, try --pure instead of -CPW. Veja Invoking guix shell, for more information on that command.

If you are unable to use Guix when building Guix from a checkout, the following are the required packages in addition to those mentioned in the installation instructions (veja Requisitos).

On Guix, extra dependencies can be added by instead running guix shell:

guix shell -D guix help2man git strace --pure

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

./bootstrap

If you get an error like this one:

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.

Then, run:

./configure --localstatedir=/var --sysconfdir=/etc

... where /var is the normal localstatedir value (veja O armazém, for information about this) and /etc is the normal sysconfdir value. Note that you will probably not run make install at the end (you don’t have to) but it’s still important to pass the right localstatedir and sysconfdir values, which get recorded in the (guix config) Guile module.

Finally, you can build Guix and, if you feel so inclined, run the tests (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.

From there on, you can authenticate all the commits included in your checkout by running:

make authenticate

The first run takes a couple of minutes, but subsequent runs are faster.

Or, when your configuration for your local Git repository doesn’t match the default one, you can provide the reference for the keyring branch through the variable GUIX_GIT_KEYRING. The following example assumes that you have a Git remote called ‘myremote’ pointing to the official repository:

make authenticate GUIX_GIT_KEYRING=myremote/keyring

Nota: You are advised to run make authenticate after every git pull invocation. This ensures you keep receiving valid changes to the repository.

After updating the repository, make might fail with an error similar to the following example:

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

This means that one of the record types that Guix defines (in this example, the origin record) has changed, and all of guix needs to be recompiled to take that change into account. To do so, run make clean-go followed by make.


Próximo: Executando guix antes dele ser instalado, Acima: Contribuindo   [Conteúdo][Índice]