BUILDPKG ou « Chérie, j'ai rétréci les SlackBuilds »

Forum de discussion libre. Venez discuter de tout et de rien ! Attention, risque de troll :-)
Seb
Messages : 36
Inscription : 22 février 2017, 19:07

BUILDPKG ou « Chérie, j'ai rétréci les SlackBuilds »

Message par Seb » 23 juin 2017, 19:43

Chose promise, chose due, je poste ma petite bibliothèque à construire des paquets Slackware (enfin, don't panic!, ça reste le bon vieux makepkg en fin de course).

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
Le tout est de ne surtout pas changer le nom de la bibliothèque (du moins pas sans changer l'auto-référence qu'elle contient).


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
Ensuite, le mieux est de commencer avec cette trame de script (ajustez /usr/lib64 si vous n'êtes pas en 64bits), qui indique toutes les options disponibles pour altérer le processus automatique (PKGDIR correspond à un dossier sécurisé généré à la volée) :

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
Tout ce qui est situé après la ligne .../BUILDPKG sera exécuté dans les sources avec l'utilisateur "builder" (c'est pour cela qu'il est déconseillé de changer le nom de la bibliothèque).

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
Si celui-ci n'a pas été défini en dur dans le script, le nom du paquet sera celui du script sans son extension. De même, si le champ de version est indéfini, celui-ci sera le dernier champ du nom des sources qui soit séparé par un "-" et, si rien d'autre n'est indiqué, le numéro de construction sera déduit de ce qui est installé dans le système. Il reste cependant toujours possible de redéfinir toutes les définitions utilisées sur la ligne à la suite du dossier source :

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
Ce qui donne dans le script associé :

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
C'est en fait le même principe que le doinst.sh, mais appliqué à la racine d'un paquet. Une fois le script exécuté, celui-ci est supprimé automatiquement.

Voili, voilou. Ce n'est rien de bien miraculeux, mais c'est une interface que j'aime bien. ;)
Pièces jointes
BUILDPKG-170623.bz2
(2.37 Kio) Téléchargé 5 fois

Vigen
Messages : 56
Inscription : 01 mai 2017, 11:32

Re: BUILDPKG ou « Chérie, j'ai rétréci les SlackBuilds »

Message par Vigen » 23 juin 2017, 21:58

Merci pour ton travail !! :)

Et hop !! En favori !! ;)

Merci.

Avatar de l’utilisateur
Incognito
Messages : 16
Inscription : 16 juillet 2017, 14:14

Re: BUILDPKG ou « Chérie, j'ai rétréci les SlackBuilds »

Message par Incognito » 22 juillet 2017, 23:20

Wooooo ! Ca va m'être bien utile je pense, je vais tester ça sur ma tour qui est aussi sur Slackware, vu comment j'ai galéré pour compiler LGI avec Lua 5.3 et Awesome 4.1.... :mrgreen:

Seb
Messages : 36
Inscription : 22 février 2017, 19:07

Re: BUILDPKG ou « Chérie, j'ai rétréci les SlackBuilds »

Message par Seb » 23 juillet 2017, 10:39

Attention, il n'y a aucune magie dans le biniou. Ça laisse juste dans ton script ce qui est particulier au paquet en t'économisant tout ce qui est correction des permissions, compression de manuels, stripping des binaires, … on va dire 50-80% d'un SlackBuild classique. Les Makefiles qui n'en font qu'à leur tête, hélas, ils continuent. ;)

Avatar de l’utilisateur
Incognito
Messages : 16
Inscription : 16 juillet 2017, 14:14

Re: BUILDPKG ou « Chérie, j'ai rétréci les SlackBuilds »

Message par Incognito » 23 juillet 2017, 23:55

J'avais passé une semaine sur GitHub à aider un mec sous Gentoo à résoudre le même problème tout ça à cause d'un Makefile qui faisait la gueule, je suppose qu'on finit par prendre l'habitude... :P

Répondre