Esta pagina se ve mejor con JavaScript habilitado

Compilación distribuida con gentoo

 ·  🎃 kr0m

Hay ocasiones en las que compilar código fuente en la máquina local puede suponer fundir el microprocesador, 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


Servidor:

emerge -av distcc
vi /etc/conf.d/distccd
DISTCCD_OPTS="${DISTCCD_OPTS} -\-allow IP_CLIENTE/32"

Si tenemos el tráfico filtrado mediante Iptables, añadiremos la siguiente regla:

/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


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_SERVER

Se puede utilizar tanto la máquina local como el servidor para compilar:

/usr/bin/distcc-config --set-hosts IP_SERVER localhost


Servidor/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

Si te ha gustado el artículo puedes invitarme a un RedBull aquí