Je l'ai conçue en constatant que ce qui changeait d'un SlackBuild à un autre se réduisait bien souvent à ce qui permet de compiler le logiciel avant de l'installer dans une racine temporaire. Autant donc ne pas s'encombrer avec le reste et gagner ainsi en clarté et en facilité.
Pour le moment, je la mets à disposition ici où il sera plus pratique d'avoir d'éventuels retours. Je ne pense pas que ça affolera la bande passante, mais si ça te gêne, Thomas, vraiment pas de soucis j'irai faire ça ailleurs.
Comment ça s'installe ?
On ne peut pas faire plus bête. Vous téléchargez le fichier attaché à ce post, puis vous le décompressez dans le répertoire de votre choix (ici /usr/local/lib/build) :
Code : Tout sélectionner
bzip2 -dc BUILDPKG-AAMMJJ.bz2 >/usr/local/lib/build/BUILDPKG
Comment ça s'utilise ?
D'abord, il faut créer l'utilisateur système "builder" (remplacez "12345" par le GID/UID libre de votre choix) :
Code : Tout sélectionner
echo builder:x:12345:12345:User for building:/:/bin/false >>/etc/passwd
echo builder:x:12345: >>/etc/group
Code : Tout sélectionner
#!/bin/sh
##
# url: http://vers/le/site/du/projet
##
# NAME= # le nom du paquet.
# VERSION= # la version du paquet.
# ARCH= # l'architecture du paquet.
# BUILD= # le numéro de construction du paquet.
# SIGN= # la signature du paquet.
# NOFIX=X # ne pas uniformiser les permissions dans les sources.
# NOSTRIP=X # ne pas stripper les binaires.
# NOPAGE=X # ne pas compresser les manuels.
# GZIP=X # générer un paquet ".tgz".
# PREPEND=X # ajouter les liens symboliques au début du doinst.sh.
#
##
. "/usr/local/lib/build/BUILDPKG"
##
./configure --prefix=/usr \
--disable-static \
--libdir=/usr/lib64
make
make install DESTDIR="$PKGDIR"
mkdesc <<EODESC
XXX (...)
Du texte comme un pour slack-desc, sur 72 colonnes max.
EODESC
# FdF
Une fois que vous avez votre script, que je vous conseille de mettre en 744 root/root afin de limiter les bêtises, vous téléchargez les sources de votre logiciel, puis vous faites :
Code : Tout sélectionner
/usr/local/lib/build/mon-logiciel.sh /tmp/mon-logiciel-1.00
Code : Tout sélectionner
/usr/local/lib/build/mon-logiciel.sh /tmp/mon-logiciel-1.00 VERSION=1.00custom NOFIX=X
Et si tout ce qu'il faut pour mon logiciel ne tient pas dans un script ?
Pour les patches et autre ajouts, un chemin est automatiquement défini dans la variable AUXDIR. C'est le chemin absolu du script avec une extention ".d" au lieu de ".sh". Il suffit donc de le créer et d'y mettre tout ce dont on a besoin :
Code : Tout sélectionner
mkdir /usr/local/lib/build/mon-logiciel.d
mv un.patch /usr/local/lib/build/mon-logiciel.d
Code : Tout sélectionner
...
patch <"$AUXDIR/un.patch"
...
Comment changer les propriétaires à l'intérieur du paquet ?
C'est effectivement une des choses qu'on doit faire en root. Pour cela, il suffit de générer ou copier à la racine du paquet un script "pre-makepkg" qui contiendra toutes les commandes devant être effectuées en root, ex (notez que les chemins sont relatifs) :
Code : Tout sélectionner
chown service.service var/lib/service \
var/log/service.log
Voili, voilou. Ce n'est rien de bien miraculeux, mais c'est une interface que j'aime bien.