Solution: créer une version hors source
- Comme suggéré dans les commentaires, vous pouvez effectuer une génération hors source.
- Le principe est le suivant: créer un autre répertoire, une "arborescence de construction", exécuter le script de configuration à partir de ce répertoire (avec un chemin relatif ou absolu).
Exemple avec vérification automatisée
Par exemple, cela va chercher et construire GNU bonjour et vérifier que l'arborescence source n'est pas modifiée un tout petit peu.
Préparation de l'arbre source
Cette partie récupère et prépare les répertoires.
{
wget -S http://ftp.gnu.org/gnu/hello/hello-2.10.tar.gz
tar zxvf hello-2.10.tar.gz
mv hello-2.10 hello-2.10-pristine
tar zxvf hello-2.10.tar.gz
diff -urq hello-2.10 hello-2.10-pristine && echo "Before build, directories are identical."
cd hello-2.10
}
Partie générique: réutilisez cela dans votre projet
Cette partie peut être utilisée avec d'autres projets basés sur l'autoconf. Insérez simplement votre projet dans votre projet avant de l'exécuter. Attention: cela fonctionne rm
, si vous jouez avec des variantes soyez prudent, vous êtes en tout cas responsable.
export MYPREFIX="${PWD}.installtree"
(
set -eu # abort on error
ls configure # make sure it aborts if not in correct directory
export SRCTREE="${PWD}"
export BUILDTREE="${PWD}.buildtree"
rm -rf "$BUILDTREE" "$MYPREFIX"
mkdir "$BUILDTREE" "$MYPREFIX"
cd "$BUILDTREE"
"${SRCTREE}"/configure --prefix="${MYPREFIX?}"
time make -k || time make
time make install
)
Vérifier la pièce
Cela vérifie si la construction est parfaitement hors source.
{
ls "$MYPREFIX"/bin/hello && echo "Okay, build generated the target."
cd "$MYPREFIX"/..
diff -urq hello-2.10 hello-2.10-pristine && echo "No change at all. Perfect out-of-source build success."
}
Ici, il génère ceci:
/tmp/hello-2.10.installtree/bin/hello
Okay, build generated the target.
No change at all. Perfect out-of-source build success.
Bonus: installation non root
La --prefix="${MYPREFIX?}"
partie ci-dessus est facultative. Il permet de faire un "make install" local sur votre compte. Si vous souhaitez que "sudo make install" soit installé sur l'ensemble du système, vous pouvez le supprimer --prefix="${MYPREFIX?}"
.