Voici le premier billet d'une série sur les ports FreeBSD. Au sommaire
aujourd'hui: l'amélioration des performances des ports avec
fastest_sites, ccache et
cpuflags.
fastest_sites: améliorer le téléchargement des fichiers
fastest_sites est un petit script python qui trie les MASTER_SITEs en
fonction de leur temps de réponse, ce qui permet de redéfinir l'ordre
d'utilisation des mirroirs pour utiliser les plus rapides en priorité.
Comme il doit se connecter à chaque mirroir, son éxécution prend un
certain temps, n'hésitez pas à continuer la lecture de cet article
pendant ce temps.
cd /usr/ports/ports-mgmt/fastest_sites
make install clean
fastest_sites > /usr/local/etc/ports_sites.conf
echo '.include "/usr/locale/etc/ports_sites.conf"' >> /etc/make.conf
ccache: améliorer la compilation des ports
ccache, comme son nom l'indique, garde en cache les compilations de
programmes C ou C++, et permet donc de ne pas recompiler quelque chose
qui a déjà été compilé auparavant ce qui améliore grandement le temps de
compilation.
Il est disponible dans le port devel/ccache. Une fois installé, on lit
le fichier /usr/local/share/doc/ccache/ccache-howto-freebsd.txt comme
indiqué. Dans mon cas, il faut donc ajouter ceci à /etc/make.conf:
.if (!empty(.CURDIR:M/usr/src*) || !empty(.CURDIR:M/usr/obj*)) && !defined(NOCCACHE)
CC=/usr/local/libexec/ccache/world-cc
CXX=/usr/local/libexec/ccache/world-c++
.endif
ainsi que ceci dans le /etc/profile (attention, j'utilise mksh comme shell
root mais le shell par défaut pour est un csh, à adapter donc):
export PATH=/usr/local/libexec/ccache:$PATH
export CCACHE_PATH=/usr/bin:/usr/local/bin
On peut aussi adapter CCACHE_DIR qui contient le dossier où ccache stockera
ses données (/root/.ccache/ par défaut), et CCACHE_LOGFILE qui contient le
chemin vers le fichier de log. On peut finalement adapter la taille maximale du
cache via l'option -M:
# ccache -M 5G
Set cache size limit to 5242880k
cpuflags: améliorer l'éxécution des ports
cpuflags est un script shell qui vous donne les CFLAGS adaptés à
votre processeur. Cepandant il n'est pas encore disponible dans les
ports FreeBSD, bien qu'il soit compatible avec FreeBSD. Néanmoins, il
est disponible dans
pkgsrc, voici donc
une démarche plus ou moins propre pour l'installer via les ports.
Tout d'abord, on récupère les fichiers le concernant depuis le cvs de pkgsrc:
export CVSROOT=anoncvs@anoncvs.de.netbsd.org:/cvsroot
export CVS_RSH=ssh
cvs checkout -PA pkgsrc/devel/cpuflags
Il faut ensuite convertir ce pkgsrc en un port, pour pouvoir
l'installer via les ports:
cd pkgsrc/devel/cpuflags
mv PLIST pkg-plist
mv DESCR pkg-descr
wget http://awesom.eu/~acieroid/files/ports/cpuflags/Makefile.diff
patch -p1 Makefile < Makefile.diff
rm Makefile.diff
make install clean
Il suffit ensuite d'ajouter ce que nous sort cpuflags aux CFLAGS, dans
le make.conf:
echo "CFLAGS+=`cpuflags`" >> /etc/make.conf
