Cross-toolchain and distcc (Português)

From ParabolaWiki
Jump to: navigation, search

1 Use um cross toolchain (conjunto de ferramentas cruz) e distcc para o port de MIPS64el

Você pode criar pacotes para a arquitetura nativa mips64el em seu Yeeloong Lemote, mas às vezes pode ser demorado (libwebkit, por exemplo, leva até 24hs para ser compilado). Se você tiver pelo menos um computador em sua rede com um processador mais rápido, você pode configurá-lo como um daemon distcc para o seu Yeeloong. Isto irá criar pacotes de forma nativa e também em velocidade rápida.

Você vai precisar de duas coisas em cada máquina daemon distcc: o cross-toolchain e um daemon distcc em execução e que esteja configurado corretamente.


1.1 Obtendo o cross-toolchain

Você pode baixar o nosso cross-mips64el-unknown-linux-gnu para máquinas toolchain de i686. O cross-toolchain para hosts x86_64 está chegando.

Este cross-toolchain foi gerado usando crosstool-ng. Estamos trabalhando em agrupar o toolchain em um único pacote. Fique ligado!

1.2 Construção do cross-toolchain

Se você quiser criar o seu próprio cross-toolchain, você pode usar isto [[repo>>mips64el/crosstool-ng.config|config file]] depois de instalar o pacote crosstool-ng do [libre]. Renomeá-lo como .config e execute: $ ct-ng build

É se deu tudo certo, em alguns minutos você terá um cross-toolchain no ~/x-tools

1.3 Configurando o daemon distcc

1.3.1 Corrigir o PATH

Uma vez que este particular daemon distcc será utilizado para as compilações cruz, nós vamos ter que enganar o distcc nativo para que procure os outros arquivos binarios de cross-toolchain em vez dos que estão por costume no diretorio /usr/bin. Mas desde que a compilação será iniciada a partir de um compilador nativo, o daemon distcc também receberá a ordem de usar os binários sem o prefixo meta. Ou seja, em vez de construir usando ~/x-tools/mips64el-unknown-linux-gnu/bin/mips64el-unknown-linux-gnu-gcc ele vai tentar encontrar o daemon gcc que será o padrão para o /usr/bin.

Assim, graças aos caras da plugapps, a correção é ligar os binários prefixos para os nomes não prefixados dentro do diretorio bin x-tools, e colocar isso em primeiro lugar no PATH.

   # cp /etc/rc.d/distcc{,-mips64el} # <= we rename it so we can still run natively
   # $EDITOR /etc/rc.d/distcc-mips64el
        (Add this line just after the shebang (#!))
   export PATH="/path/to/x-tools/mips64el-unknown-linux-gnu/bin:$PATH"
   $ pushd /path/to/x-tools/mips64el-unknown-linux-gnu/bin
   # for _bin in mips64el-*; do
       ln -s -v $_bin ${_bin##*gnu-}
   done

1.3.2 Configure distccd-mips64el

Edite /etc/conf.d/distccd e mude a bandeira --allow para permitir conexões a partir de cada máquina em sua rede/sub-rede, ou apenas a um endereço IP específico. Despois disto, você tem que salvar e sair.

Nota: Se você tem um firewall que rejeita conexões para portas não especificadas, então abre a porta 3632.

Agora você pode iniciar o daemon:

   # rc.d start distccd-mips64el

1.4 Configure o Yeeloong

Edite o seu makepkg.conf para ativar a opção distcc, removendo o signo de exclamação [!]. Também defina o seu MAKEFLAGS com a quantidade de processadores usados. Por exemplo, para construir sobre o Yeeloong e outro computador de núcleo único, use -j3.

   MAKEFLAGS="-jX"
   BUILDENV=(fakeroot distcc color !ccache check) 

Instale distcc do repositorio.

1.5 Construir!

Consigue um PKGBUILD e rode o makepkg-flags nele. Se você não vê nenhuma mensagem de erro do distcc após a execução do script de configuração, e vê um monte de mensagens como este em seu /var/log/messages.log:

   May 28 04:15:08 localhost distccd[29238]: (dcc_job_summary) client: 10.0.0.3:36060 COMPILE_OK exit:0 sig:0 core:0 ret:0 time:237ms gcc spawnattr_getschedparam.c

... e além disso, se a compilação termina corretamente e você obteve os binários MIPS-III N32, significa que ja ficou pronto, meus parabéns por chegar até aqui!


Nota: Para obter a informação sobre binários, basta executar file sobre eles.

1.6 Referências