SLKBUILD, le SlackBuild pour les nuls

Slkbuild est un outil dont le but est de simplifier la construction d’un paquet destiné aux systèmes d’exploitation Slackware et dérivés.

La manière habituelle de réaliser un paquet Slackware est d’écrire un script shell, plus communément appelé slackbuild (monbopaquet.SlackBuild).

Le contenu de ce slackbuild est très répétitif, il doit se charger de :

  • déterminer l’architecture sur laquelle pourra s’installer le paquet
  • la mise en place de la documentation au bon endroit (/usr/doc/)
  • la mise en place des pages man ou info au bon endroit (/usr/man….)
  • la compression de ces pages man/info
  • le nettoyage des fichiers/dossiers dans le répertoire de compilation
  • garder une trace (log) du processus
  • la gestions des droits et permissions des fichiers et répertoires
  • la gestion des fichiers de configuration pour les mises à jour (.new)
  • la gestion des icônes/fichiers .desktop…
  • le stripping des binaires
  • et … la fabrication du dit paquet

L’utilisation d’un squelette, d’un slackbuild modèle peut également se faire, mais il est vrai qu’à la fin toutes ces tâches redondantes sont un peu parasites et font perdre du temps. Car, ce qui nous intéresse n’est autre que ce qui est nécessaire à la compilation, à la fabrication du programme. Le tout a donc été automatisé un peu (beaucoup) à la manière d’ArchLinux, Slkbuild est d’ailleurs très fortement inspiré de makepkg utilisé par cette dernière.

Les avantages à utiliser slkbuild sont nombreux, on peut citer :

  • la conformité du paquet est assurée (vérification slack-desc, .desktop,…))
  • copie des sources de fabrication (slkbuild, patchs, …) dans/usr/src/monbopaquet-1.0
  • gestion des flags de compilation automatique en fonction de l’architecture
  • l’édition du script est très aisée
  • le processus de fabrication du paquet est plus rapide

Typiquement, pour créer facilement un paquet :

$ mkdir monbopaquet-1.0
$ cd monbopaquet
$ slkbuild -g  # vous obtenez un SLKBUILD modèle pour compilation standard (existe aussi en gpython/gperl ...)
$ vim SLKBUILD
--
#Packager: fredg
pkgname=monbopaquet
pkgver=1.0
pkgrel=1fg
#arch=noarch
source=(http://ou/se/trouve/$pkgname-$pkgver.tar.gz)
sourcetemplate=http://people.salixos.org/fredg/packages/$pkgname/$pkgver/
docs=("readme" "install" "copying" "changelog" "authors" "news" "todo")
url=http://maisondupaquet.fr
#dotnew=() # pour gestion des fichiers de configuration .new, laisser tel que si gestion classique
#CFLAGS= # si vous souhaitez autre chose que les options standard de Slackware
#CXXFLAGS= # idem
#doinst() {
# écriture du doinst.sh si nécessaire (à décommenter)
#}
slackdesc=\
(
#|-----handy-ruler------------------------------------------------------|
"écriture de votre slack-desc"
)
build() {
cd $startdir/src/$pkgname-$pkgver
./configure --prefix=/usr --libdir=/usr/lib${LIBDIRSUFFIX} --localstatedir=/var --sysconfdir=/etc --build=$arch-slackware-linux
make -j $numjobs || return 1
make install DESTDIR=$startdir/pkg
#
# si paquet traditionnel, rien à faire
}
:wq # quitte vim ;)
--
$ fakeroot slkbuild -X
$ ls
$ SLKBUILD    monbopaquet-0.1.tar.gz    monbopaquet-0.1-x86_64-1fg.txz
monbopaquet-0.1-x86_64-1fg.md5        monbopaquet-0.1-x86_64-1fg.src
build-monbopaquet-0.1-x86_64-1fg.log
$ su # on passe root
# installpkg monbopaquet-0.1-x86_64-1fg.txz # et voilà

Slkbuild est utilisé activement par Salix OS qui est, je le rappelle, totalement compatible avec Slackware, les dépôts sont les mêmes. Vous pouvez voir ceux de Salix comme un [extra]. De nombreux exemples de SLKBUILD sont disponibles, par exemple sur le répertoire des sources de la version -current.

Quelques liens