Esta web utiliza cookies, puedes ver nuestra política de cookies, aquí Si continuas navegando estás aceptándola

Compilación distribuida con gentoo


Hay ocasiones en las que compilar código fuente en la máquina local puede suponer fundir el micro, en mi caso tengo gentoo instalada en un portátil que hecha fuego cuando se compila alguna aplicación gorda como firefox o thunderbird.

Gentoo nos permite compilar el código fuente en un equipo externo, la única restricción es que deben compartir la misma rama de gcc.

Debemos tener la misma rama de gcc en todos los equipos ya sea cliente o servidor, 3.3.x with 3.2.x dará problemas en cambio 3.3.2 3.3.4 funcionará, se puede chequear la versión mediante gcc -v

Los pasos a seguir son:

En el servidor:

emerge -av distcc

vi /etc/conf.d/distccd

DISTCCD_OPTS="${DISTCCD_OPTS} --allow IP_CLIENTE/32"

En FW (en caso de tener alguno):

iptables -t nat -I PREROUTING 1 -p tcp --dport 3632 -j DNAT --to-destination IP_LAN_SERVER:3632

Si no tenemos firewall nos aseguraremos que solo pueden conectar al puerto de distcc el cliente correcto.

En el servidor:

/sbin/iptables -I INPUT 1 -p tcp --dport 3632 -j DROP
/sbin/iptables -I INPUT 1 -p tcp --dport 3632 -s IP_CLIENTE -j ACCEPT

En el cliente:

vi /etc/portage/package.use/distcc
sys-devel/distcc gtk
emerge -av distcc

vi /etc/portage/make.conf

MAKEOPTS="-jN -lM"
FEATURES="distcc"

NOTA: N = Nº de equipos que compilarán código(local y remotos) + 1, M = Nº de cores locales, M se utiliza cuando la compilación sea local.

/usr/bin/distcc-config --set-hosts IP_WAN_FW (o directamente IP_SERVER)

Se podría utilizar también la máquina local para compilar --> /usr/bin/distcc-config --set-hosts IP_WAN_FW localhost

En el servidor y el cliente:

rc-update add distccd default
/etc/init.d/distccd start
export PATH="/usr/lib/ccache/bin:/usr/lib/distcc/bin:${PATH}"

Se puede añadir al bashrc para que lo haga automáticamente:

vi /home/USER/.bashrc
export PATH="/usr/lib/ccache/bin:/usr/lib/distcc/bin:${PATH}"

Ahora cuando ejecutemos emerge la compilación del código se ejecutará en el servidor de compilación y el resto como el linkado en local.

NOTA: Hay un modo de configuración llamado pump que también distribuye el preprocesado entre los servidores de compilación


Autor: Kr0m -- 22/10/2013 09:16:07