Con esto lo que quiero conseguir es que mi AMD64 ayude en los procesos de compilación al instalar o actualizar paquetes en un Pentium II que uso como servidor.
Debemos tener instalado distcc en todas las máquinas que participen en la compilación, tanto la que ejecuta emerge como las que reciben las tareas de compilación ditribuida, y, a ser posible, la misma versión de distcc en todas las máquinas. Ejecutamos en todas las máquinas:
# emerge --sync
# emerge distcc
Equipo que lanza emerge (arquitectura i686):
# cd /usr/lib/distcc/bin
# rm -f cc gcc c++ g++
# echo '#!/bin/bash' >i686-pc-linux-gnu-gcc-wrapper
# echo 'exec /usr/lib/distcc/bin/i686-pc-linux-gnu-g${0:$[-2]} "$@"' \
>> i686-pc-linux-gnu-gcc-wrapper
# chmod a+x i686-pc-linux-gnu-gcc-wrapper
# ln -s i686-pc-linux-gnu-gcc-wrapper cc
# ln -s i686-pc-linux-gnu-gcc-wrapper gcc
# ln -s i686-pc-linux-gnu-gcc-wrapper c++
# ln -s i686-pc-linux-gnu-gcc-wrapper g++- Ver versiones exactas de binutils, gcc, linux-headers, y glibc:
*** Si no tienes el comando eix: emerge eix && update-eix
# eix -c sys-devel/binutils$
# eix -c sys-devel/gcc$
# eix -c sys-kernel/linux-headers$
# eix -c sys-libs/glibc$ - Añadir los equipos que participan en la granja de compilación:
# distcc-config --set-hosts "nombre_equipo_64bits localhost" - Configurar portage para que haga uso de distcc añadiendo “distcc” a FEATURES en /etc/make.conf y ajustar MAKEOPTS para que se lancen más procesos de compilación:
FEATURES="distcc parallel-fetch"
MAKEOPTS="-j6"
Equipo que asiste a la compilación (arquitectura x86_64):
- Instalamos crossdev y creamos el compilador cruzado usando las versiones que vimos del equipo i686 (punto 2 del apartado anterior):
# emerge crossdev
# crossdev -t i686-pc-linux-gnu --b 2.16.1-r3 --g 4.1.2 --k 2.6.17-r2 --l 2.5-r3
Significado de las opciones: –b <versión de binutils> –g <versión de gcc> –k <versión de linux-headers> –l <versión de glibc> - Lanzar distcc siempre que vayamos a ejecutar emerge en el equipo al que asistimos (arquitectura i686):
# /etc/init.d/distccd start
Editar /etc/conf.d/distccd para permitir recibir compilaciones dentro de equipos de nuestra red, por ejemplo:
DISTCCD_OPTS="${DISTCCD_OPTS} --allow 192.168.0.0/24"
Diferencias de tiempo de compilación antes de distcc y después de distcc:
- PHP:
Fri May 11 07:27:57 2007 >>> dev-lang/php-5.2.2-r1
merge time: 1 hour, 25 minutes and 13 seconds.
Mon Jun 11 14:06:41 2007 >>> dev-lang/php-5.2.2-r1
merge time: 59 minutes and 24 seconds. - cURL:
Tue Mar 27 02:17:02 2007 >>> net-misc/curl-7.15.1-r1
merge time: 7 minutes and 26 seconds.
Mon Jun 11 13:07:17 2007 >>> net-misc/curl-7.15.1-r1
merge time: 6 minutes and 41 seconds.
Enlaces de interés: Gentoo Documentation y Gentoo-Wiki.

Entradas (RSS)