Cross-toolchain and distcc (Galego)

From ParabolaWiki
Jump to: navigation, search

1 Use un cross toolchain (conxunto de ferramentas cruz) e distcc para o port de MIPS64el

Vostede pode crear paquetes para a arquitectura nativa mips64el no seu Yeeloong Lemote, pero as veces pode demorar (libwebkit, por exemplo, leva até 24hs para ser construido). Se vostede tivera polo menos un computador na súa rede cun procesador máis rápido, vostede pode configuralo como un daemon distcc para o seu Yeeloong. Isto creara paquetes de forma nativa e tamén cunha velocidade rápida.

Vostede vai precisar de dúas cousas en cada máquina daemon distcc: o cross-toolchain e un daemon distcc en execución que estea configurado correctamente.


1.1 Obtendo o cross-toolchain

Vostede pode descargar o noso cross-mips64el-unknown-linux-gnu para máquinas toolchain de i686. O cross-toolchain para hosts x86_64 está chegando.

Este cross-toolchain foi xerado utilizando crosstool-ng. Estamos traballando para agrupar o toolchain nun único paquete. Esten atentos!

1.2 Construción do cross-toolchain

Se vostede quixera crear o seu propio cross-toolchain, vostede pode utilizar isto [[repo>>mips64el/crosstool-ng.config|config file]] depois de instalar o paquete crosstool-ng do [libre]. Renomeao como .config e execute: $ ct-ng build

É se todo funcionou, en algúns minutos vostede terá un cross-toolchain no ~/x-tools'

1.3 Configurando o daemon distcc

1.3.1 Correxir o PATH

Dado que este daemon distcc en particular será utilizado para as compilacións en cruz, vamos ter que enganar o distcc nativo para que procure os outros ficheiros binarios de cross-toolchain en vez dos que están por costume no directorio /usr/bin. Sen embargo, desde que a compilación será iniciada a partir dun compilador nativo, o daemon distcc tamén recibira a orde de usar os binários sen o target prefix (prefixo meta). É decir, en vez de construir usando ~/x-tools/mips64el-unknown-linux-gnu/bin/mips64el-unknown-linux-gnu-gcc el vai tentar atopar o daemon gcc que será o utilizado por defecto para o /usr/bin.

Asi, grazas a xente da plugapps, a solución consiste en vincular os prefixos binarios para os nomes non prefixados dentro do directorio bin x-tools, e colocar isto en 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 troque a bandeira --allow para permitir conexións a partir de cada máquina na súa rede/sub-rede, ou polo menos un enderezo IP específico. Despois disto, vostede ten que gardar e sair.

Nota: Se vostede ten un firewall que rexeita conexións para as portas non especificadas, entón abre a porta 3632.

Agora vostede pode iniciar o daemon:

   # rc.d start distccd-mips64el

1.4 Configure o Yeeloong

Edite o seu makepkg.conf para activar a opción distcc, eliminando o prefixo bang. Tamén defina o seu MAKEFLAGS coa cantidade de procesadores utilizados. Por exemplo, para construir sobre o Yeeloong e outro computador de núcleo único, utilice -j3.

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

Instale distcc do repositorio.

1.5 Construir!

Consigue un PKGBUILD e execute o makepkg-flags nel. Se vostede non ve ningunha mensaxe de erro do distcc despoís de executar o script de configuración, e ve un monte de mensaxes como este no /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 ademais disto, se a compilación termina correctamente e vostede obtivo os binários MIPS-III N32, significa que xa ficou perfecto, meus parabéns por chegar até aquí!


Nota: Para obter a información sobre binários, só ten que executar file sobre eles.

1.6 Referências