Cómo usar "ccache" para compilar en PkgSrc de SmartOS (II)

En Cómo usar "ccache" para compilar en PkgSrc de SmartOS explico cómo utilizar ccache a la hora de compilar paquetes PkgSrc.

Ahí propongo realizar un cambio en el fichero /data/pkgbuild/scripts/run-sandbox [1] para añadir lo siguiente al fichero .bashrc del entorno chroot:

# Ver el comentario en
# https://wiki.netbsd.org/tutorials/pkgsrc/build_ccache_distcc/
export CCACHE_DIR=/root/.ccache/
export PKGSRC_COMPILER=ccache gcc

La segunda línea no funciona correctamente en SmartOS porque ahí el fichero /opt/local/etc/mk.conf dentro del entorno chroot ignora la variable de entorno PKGSRC_COMPILER y fuerza un valor explícito de PKGSRC_COMPILER=gcc a la hora de compilar.

Por tanto, lo mejor es cambiar el fichero /data/pkgbuild/scripts/run-sandbox [1] para que modifique ese fichero a la hora de crear el entorno chroot. Sería cuestión de añadirle una línea como esta poco antes del final del fichero:

sed -i "s/^PKGSRC_COMPILER=/PKGSRC_COMPILER?=/g" ${chrootdir}${PKGBUILD_SYSCONFDIR}/mk.conf

Ese cambio en el fichero /opt/local/etc/mk.conf dentro del entorno chroot mantiene la definición por defecto de PKGSRC_COMPILER cuando no le hemos puesto un valor concreto por variable de entorno, pero la variable de entorno manda si existe. Así debería venir de serie en SmartOS. Usando expansiones shell, modificamos el fichero correcto sea cual sea el branch PkgSrc que estamos utilizando para generar el entorno chroot.

Además, el export estaba mal. Hay que poner el valor entre comillas. Por ejemplo:

export PKGSRC_COMPILER="ccache gcc"
[1] (1, 2) Para estos cambios utilizo Ansible. No los hago a mano, que sería un coñazo cada vez que reprovisiono la zona SmartOS.