Il y quelques temps que je traine sous Archlinux car j'aime bien la facilité et la simplicité de sa configuration et ses outils. Je n'avais jamais encore été dans sa communauté, FR, francophone ou autre. Mais j'avais envoyé un emissaire parmi vous : Mélodie que j'ai convertie après que Gnunux m'ai parlé de Arch, la distro aussi sympathique que ma distro fétiche, Slackware.
Aujourd'hui je vais vous parler de mon makepkg.conf que j'ai un peu modifié pour pouvoir compiler de façon plus simple pour mes deux machines, dont une EPIA avec CPU C3 qui est incompatible avec Arch. Cette incompatibilité est dûe à GCC qui considère l'instruction CMOV comme faisant partie du jeu d'instructions des CPU de la classe i686. Mais elle est optionnelle, les programmes l'utilisant plantent malheureusement.
Il m'a donc fallu compiler les programmes de base et le kernel sur un machine autre (un pentium-m) et sans que cette instruction illégale sur le C3 soit apportée par une librairie présente sur ma machine de compilation, j'ai donc recompilé tout mon système de base en utilisant l'optimisation pour une classe de CPU (i586) n'ayant pas de CMOV pour ne pas trainer le bug GCC.
Puisqu'il me fallait compiler pour différents CPUs, j'ai modifié etc/makepkg.conf afin de pouvoir passer d'un paramètre de compilation à l'autre sans trop de soucis. J'ai choisi d'utiliser une variable d'enregistrement, CPUNAME pour effectuer ce switch. Cette variable permettra aussi de selectionner le dépôt où sera placé le paquet une fois la compilation faite.
Code : Tout sélectionner
#
# /etc/makepkg.conf
#
# The FTP/HTTP download utility that makepkg should use to acquire sources
export FTPAGENT="/usr/bin/wget --continue --passive-ftp"
export CARCH="i686"
export CHOST="i686-pc-linux-gnu"
case "$CPUNAME" in
"athlon-xp")
export CFLAGS="-march=${CPUNAME} -O2 -pipe"
export CXXFLAGS="-march=${CPUNAME} -O2 -pipe"
export PKGDEST=/home/packages/${CPUNAME}
;;
"pentium3")
export CFLAGS="-march=${CPUNAME} -O2 -pipe"
export CXXFLAGS="-march=${CPUNAME} -O2 -pipe"
export PKGDEST=/home/packages/${CPUNAME}
;;
"c3")
export CFLAGS="-march=${CPUNAME} -Os -pipe -fomit-frame-pointer"
export CXXFLAGS="-march=${CPUNAME} -Os -pipe -fomit-frame-pointer"
export PKGDEST=/home/packages/${CPUNAME}
;;
"pentium-m")
export CFLAGS="-march=${CPUNAME} -O2 -pipe"
export CXXFLAGS="-march=${CPUNAME} -O2 -pipe"
export PKGDEST=/home/packages/${CPUNAME}
;;
*)
export CPUNAME="i486"
export CFLAGS="-march=i486 -mtune=i686 -O2 -pipe"
export CXXFLAGS="-march=i486 -mtune=i686 -O2 -pipe"
export PKGDEST=/home/packages/i486
;;
esac
# j'utilise /var/abs/local uniquement pour les paquets d'origines que j'ai modifié.
# Je ne les mélange pas avec ceux externes
if [ -n "`pwd | grep /var/abs/`" ]; then
export PKGDEST=$PKGDEST"/abs"
fi
# on crée le répertoire des fois que... :)
if [ ! -e $PKGDEST ]; then
mkdir -p $PKGDEST
fi
# Enable fakeroot for building packages as a non-root user
export USE_FAKEROOT="y"
# Enable colorized output messages
export USE_COLOR="y"
# Pour Compilation répartie sur plusieurs serveurs
#export CC="distcc"
#export CXX="distcc gcc"
#export MAKEFLAGS="-j3"
#export DISTCC="y"
export DISTCC_HOSTS="localhost/2 laptop/1,lzo mini/1,lzo"
# Keep doc and info directories
export KEEPDOCS="1"
export CLEANLOCALES="1"
CLEANLOCALES serait le sujet d'un prochain post.
PS: Update du makepkg.conf