Cross-toolchain and distcc (Español)

From ParabolaWiki
Jump to: navigation, search

1 Utilice un conjunto de cross toolchain (conjunto de herramientas cruzadas) y distcc hasta el port de MIPS64el

Puede crear paquetes para la arquitectura nativa mips64el en su Yeeloong Lemote, pero a veces puede llevar mucho tiempo (libwebkit, por ejemplo, tarda hasta 24 horas para ser compilado). Si usted tiene al menos una computadora en su red con un procesador más rápido, se puede configurar como un demonio distcc para su Yeeloong. Esto va a crear paquetes de forma nativa y también en alta velocidad.

Se necesitan dos cosas en cada máquina con demonio distcc: el cross-toolchain y el demonio distcc ejecutando y que esté configurado correctamente.

1.1 Obtención del cross-toolchain

Puede descargar nuestro cross-mips64el-unknown-linux-gnu para máquinas toolchain de i686. El cross-toolchain para las máquinas de x86_64 está por venir.

Este cross-toolchain se ha generado utilizando crosstool-ng. Estamos trabajando en agrupar el toolchain en un único paquete ¡Estén pendientes!

1.2 Construcción del cross-toolchain

Si desea crear su propio conjunto de herramientas cruzadas (cross-toolchain), se puede usar este [[repo>>mips64el/crosstool-ng.config|config file]] después de instalar el paquete crosstool-ng del repo [libre]. Cambiar el nombre .config y ejecutar: $ ct-ng build

Se tomó todo bien, en pocos minutos tendrás un cross-toolchain en ~/x-tools

1.3 Configurando el demonio distcc

1.3.1 Corregir el PATH

Dado que este demonio distcc en particular se utiliza para compilaciones cruzadas, vamos a tener que engañar el nativo distcc que busca los otros archivos binarios de cross-toolchain en lugar de los que están usualmente en el directorio /usr/bin. Sin embargo, desde que la compilación se pondrá en marcha a partir de un compilador nativo, el demonio distcc también recibirá la orden de utilizar los binarios sin el prefijo de destino. Es decir, en vez de construir con ~/x-tools/mips64el-unknown-linux-gnu/bin/mips64el-unknown-linux-gnu-gcc', va a tratar de encontrar el demonio gcc que será el estándar para el /usr/bin.

Así que gracias a los chicos de plugapps, la solución consiste en vincular los prefijos binarios para los nombres no prefijados dentro del directorio bin x-tools, y colocar isto por primera vez en el 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 Configurar distccd-mips64el

Edite /etc/conf.d/distccd y cambie la bandera --allow para permitir conexiones desde cada máquina en la red/subred, o simplemente a una dirección IP específica. Después de esto, usted tiene que guardar y salir.

Nota: Si usted tiene un firewall que rechaza las conexiones para puertos no especificados, entonces abra la puerta 3632.

Ahora usted puede iniciar el demonio:

   # rc.d start distccd-mips64el

1.4 Configurar el Yeeloong

Edita tu makepkg.conf para permitir la opción distcc, eliminando el signo de admiración (!). También debe configurar el MAKEFLAGS al número de procesadores utilizados. Por ejemplo, para construir sobre Yeeloong y otro ordenador de un solo núcleo, use el -j3.

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

Instala distcc del repositorio.

1.5 Construir!

Obtenga un PKGBUILD y ejecute makepkg-flags en él. Si no ve ningún mensaje de error del distcc después de ejecutar el script de configuración, y ves un montón de mensajes como este en su /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

... y además, si la construcción concluye correctamente y tienes los archivos binarios de MIPS-III N32, significa que ya se hizo, felicidades por llegar hasta aquí!

Nota: Para obtener información sobre binarios basta con ejecutar file sobre ellos.

1.6 Referencias