La plus simple et la plus rapide à mettre en oeuvre consiste à rajouter la variable MAKE_JOBS_NUMBER
dans /etc/make.conf
, afin de profiter de la parallélisation de make
sur les processeurs multi-coeurs pour la compilation des ports
qui sont capable de le faire:
echo 'MAKE_JOBS_NUMBER=6' >> /etc/make.conf
Il est à noter que l'ajout de cette ligne n'est pas obligatoire pour profiter de cette fonctionnalité, puisque le niveau de parallélisation est défini par défaut au nombre de cœurs dont dispose votre micro-processeur.
Si vous êtes téméraire, vous pouvez forcer l'utilisation de la parallélisation pour tous les ports, indépendament du fait qu'il l'a supporte :
echo 'DISABLE_MAKE_JOBS=yes' >> /etc/make.conf
Il est également possible de la désactiver, même si cela n'a strictement aucun intêret :
echo 'DISABLE_MAKE_JOBS=yes' >> /etc/make.conf
La mise en œuvre de l'utilitaire ccache
est une autre méthode, parfaitement compatible avec la première, pour accélérer la compilation.
Le principe de cet utilitaire est simple puisqu'il met tout simplement en cache le résultat de chaque compilation pour le réutiliser lors des prochaines compilations, s'il y a lieu.
Son installation est simple :
cd /usr/ports/deve/ccache && make install clean
Il suffit ensuite de rajouter les directives adéquates dans le fichier /etc/make.conf à l'aide de votre éditeur favori :
.if !defined(NO_CACHE)
CC= /usr/local/libexec/ccache/world-cc
CCX= /usr/local/libexec/ccache/world-c++
.endif
.if ${.CURDIR:M*/ports/devel/ccache}
NO_CCACHE= yes
.endif
Il faut également ajouter les lignes suivantes dans votre fichier ~/.bashrc, si vous utilsez bash
et sudo
:
export PATH=/usr/local/libexec/ccache:$PATH
export CCACHE_PATH=/usr/bin:/usr/local/bin
export CCACHE_DIR=/var/tmp/ccache
export CCACHE_LOGFILE=/var/log/ccache.log
if [[ -x /usr/local/bin/ccache ]];
then
/usr/local/bin/ccache -M 4GB > /dev/null
fi
Une fois votre fichier ~/.bashrc
rechargé, vous disposerez d'un cache de compilation de 4GB dans /var/tmp/ccache
.
Vous pourrez consulter l'état de votre cache avec la commande suivante :
ccache -s
Vous pourrez également connaître l'activité de votre cache et notamment son contenu avec la commande suivante :
tail -f /var/log/ccache.log
Enfin, vous pouvez utilisez le script buildflags
des bsdadminscripts
pour rendre vos compilations plus conviviales en définissant un certain nombre de directives de compilation une fois pour toute.
Encore une fois, l'installation se fait de la façon la plus traditionnelle qui soit :
cd /usr/ports/sysutils/bsdadminscripts && make install clean
Une fois l'installation terminée, il faut rajouter les lignes suivantes dans votre fichier /etc/make.conf
:
BUILDFLAGS=/usr/local/share/bsdadminscripts/buildflags.mk
.if exists(${BUILDFLAGS})
.include "${BUILDFLAGS}"
.endif
Il ne vous reste plus qu'à renommer le fichier /usr/local/etc/buildflags.conf.sample
en /usr/local/etc/buildflags.conf
et à en modifier le contenu en fonction de vos besoins, comme par exemple définir la directive FORCE_MAKE_JOBS
en fonction du ports que vous voulez compiler, ou bien pour définir des arguments de compilation une bonne fois pour toute.
Si par hasard vous avez des difficultés à comprendre le format du fichier, la commande man buildflags.conf
est votre amie.
Enfin, pour encore accélérer la compilation, il est possible d'utiliser distcc
mais sa mise en oeuvre fera l'objet d'un autre billet.