[customizepkg] outil de personalisation des PKGBUILD

Annonces, dépannage, évolution du projet yaourt
Répondre
Avatar de l’utilisateur
wain
Maître du Kyudo
Messages : 1854
Inscription : ven. 11 août 2006, 19:15
Localisation : Nancy (54)

[customizepkg] outil de personalisation des PKGBUILD

Message par wain »

Customizepkg est un nouvel outil qui permet de modifier automatiquement un PKGBUILD, c'est à dire changer les dépendances, ajouter ou supprimer des options de compilation etc...

Suite à cette discussion, je vous propose aujourd'hui une première version sur laquelle j'attends vos commentaires :D
Téléchargement: http://archiwain.free.fr/os/i686/custom ... pkg.tar.gz

L'utilisation est simple:
Lancer la commande customizepkg dans un dossier contenant un PKGBUILD.
Si votre paquetage s'appelle 'mplayer', customizepkg ira chercher un fichier "/etc/customizepkg.d/mplayer".
Ce fichier contient la liste des modifications à apporter au PKGBUILD.
Un exemple est fournit dans /etc/customizepkg.d/mplayer.example.
/etc/customizepkg.d/mplayer.example a écrit : remove#depends#smbclient
remove#depends#dbus-glib
remove#depends#jack-audio-connection-kit
remove#depends#aalib
remove#makedepends#lirc-utils
remove#makedepends#libcaca
add#conflicts#mplayer-svn
remove#global#--enable-tv-v4l[0-9]
remove#global#--enable-runtime-cpudetection
replace#global#--enable-smb#--disable-smb
replace#global#--enable-lirc#--disable-lirc
replace#global#--enable-aa#--disable-aa
replace#global#--language=all#--language=fr
La syntaxe est assez parlante:

Code : Tout sélectionner

action  #  contexte #  patron  #  valeur
- l'action peut être: remove (supprimer), add (ajouter) ou replace (remplacer)
- le contexte est un nom de variable (pkgver, depends, conflicts) ou global. Global signifie que la modification sera apportée sur tout le fichier et pas seulement parmi les variables.
- le patron (pattern) est le mot recherché: une expression régulière.
- la valeur n'est utilisée que pour l'action de remplacement. C'est la nouvelle valeur qui sera écrite à la place du patron recherché

Vous vous en doutez, customizepkg est utilisé par yaourt pour modifier à la volée le PKGBUILD d'un programme à installer :wink:
Attention: il vous faudra la version yaourt 0.7.1 minimum.
Avatar de l’utilisateur
wain
Maître du Kyudo
Messages : 1854
Inscription : ven. 11 août 2006, 19:15
Localisation : Nancy (54)

Message par wain »

La version 0.2 est dispo sur AUR:
http://aur.archlinux.org/packages.php?d ... 1&ID=10314

Elle fournit d'autres exemples dans le répertoire /etc/customizepkg.d/ et corrige quelques bugs.
Avatar de l’utilisateur
marc[i1]
Maître du Kyudo
Messages : 1753
Inscription : ven. 27 oct. 2006, 10:48
Localisation : Nantes (44)

Message par marc[i1] »

:dix: :applaudit:

simplement énorme !

à voter ! 8)
Ne vous emmerdez plus, emmerdez les autres.
Avatar de l’utilisateur
warnaud
Maître du Kyudo
Messages : 1640
Inscription : ven. 11 août 2006, 17:05
Localisation : Rolle (CH)

Message par warnaud »

Faudrait le prêter aux devs d'arch pour la migration d'abs vers pacman3 :french: :shock:
Plus ça rate, plus ça a de chance de réussir. En somme, un succès n'est qu'une erreur qui a finit par réussir (même par erreur). Ne déséspérez donc pas et perseverez. Utilisez La Rache™
Patientia quod lard quod barrus planto diligo ut licentia
—¤÷(`[¤*Powered By *¤]´)÷¤—
Archlinux ~ Fvwm ~ Irssi ~ URxvt
Avatar de l’utilisateur
mimas
Elfe
Messages : 559
Inscription : sam. 30 sept. 2006, 22:30
Localisation : Toulouse

Message par mimas »

Vraiment sympa comme outil.

Je pense qu'avec quelques petites lignes en plus on pourrait y lui permettre de lancer automatiquement makepkg si on n'utilise pas yaourt (ce qui est mon cas mais je n'en pense pas pour autant du mal :p).

Juste une idée en l'air. ;)
Anarchy for the triple A.
Avatar de l’utilisateur
wain
Maître du Kyudo
Messages : 1854
Inscription : ven. 11 août 2006, 19:15
Localisation : Nancy (54)

Message par wain »

mimas a écrit :Je pense qu'avec quelques petites lignes en plus on pourrait y lui permettre de lancer automatiquement makepkg si on n'utilise pas yaourt (ce qui est mon cas mais je n'en pense pas pour autant du mal :p).

Juste une idée en l'air. ;)
oui ça serait un peu comme versionpkg qui modifie le PKGBUILD puis lance la compilation. Encore faut-il décider des options qu'on souhaite passer à makepkg, et la liste est longue selon qu'on utilise sudo ou pas, qu'on souhaite installer le paquetage ou pas, supprimer les dépendances ou pas etc... etc...

Je te propose d'ajouter une option -o="options" qui te laisse le choix.
example:

Code : Tout sélectionner

customizepkg --modify -o="--usesudo --syncdeps --builddeps --clean --install --force --rmdeps"
ou

Code : Tout sélectionner

customizepkg -m -o="-Ssbcifr"
:D

Mais personnellement, je ne vois l'intérêt de modifier un PKGBUILD avec customizepkg que pour les paquetages issus d'ABS. Ainsi lorsqu'une mise à jour est détectée par yaourt, celui-ci déclenche l'upgrade du paquet à partir du PKGBUILD modifié.
Mais bon chacun fait comme il veut et je suis très content déjà que ça vous plaise :lol:
Avatar de l’utilisateur
mimas
Elfe
Messages : 559
Inscription : sam. 30 sept. 2006, 22:30
Localisation : Toulouse

Message par mimas »

Oups, je suis tête en l'air. Il est sûrement possible de lancer customizepkg à partir de makepkg le mettant dans /etc/makepkg.conf, qui est un script shell.

Désolé pour le bruit. :|

As-tu prévu quelque chose pour changer les sources à la volée, et ce de façon générique donc potentiellement sur tous les paquets ? Je m'explique, les sources des PKGBUILD pointent parfois (heu.. souvent) vers des fichiers hébergés sur les sites principaux et surchargés. Il serait sympa de pouvoir réécrire les addresses pour qu'elles pointent vers des mirroirs.

Voilà un vraie idée. :)

Enfin, je crois. :?: :?:
Anarchy for the triple A.
Avatar de l’utilisateur
wain
Maître du Kyudo
Messages : 1854
Inscription : ven. 11 août 2006, 19:15
Localisation : Nancy (54)

Message par wain »

mimas a écrit :Oups, je suis tête en l'air. Il est sûrement possible de lancer customizepkg à partir de makepkg le mettant dans /etc/makepkg.conf, qui est un script shell.

Désolé pour le bruit. :|
Pas du tout, j'ai déjà implémenté cette fonction, dans la prochaine release il sera possible de lancer customizepkg comme ceci:

Code : Tout sélectionner

customizepkg --build="-Sci"
mimas a écrit :As-tu prévu quelque chose pour changer les sources à la volée, et ce de façon générique donc potentiellement sur tous les paquets ? Je m'explique, les sources des PKGBUILD pointent parfois (heu.. souvent) vers des fichiers hébergés sur les sites principaux et surchargés. Il serait sympa de pouvoir réécrire les addresses pour qu'elles pointent vers des mirroirs.

Voilà un vraie idée. :)

Enfin, je crois. :?: :?:
Pour la modif des urls de téléchargement des sources, tu peux déjà le faire paquetage par paquetage avec le regexp adéquat.
Pour ce qui est des modifications globales sur l'ensemble des paquetages, j'ai plein d'idées mais cela nécessite encore un peu de travail et beaucoup de réflexion.
Pour faire une implémentation "propre", il faut absoluement faire évoluer la syntaxe du fichier PKGBUILD. Vu les commentaires sur le forum anglais, c'est mal barré.
_alexmyself
Chu Ko Nu
Messages : 405
Inscription : lun. 18 sept. 2006, 16:21
Localisation : france, yvelines 78

Message par _alexmyself »

un truc qui passe,
les "#" comme séparateur ça fait pas chier si je veut commenter une ligne ?

ah oui, j'oubliais:
mortel wain, mortel !!! ça bute encore ce truc !! :D

et aussi pour les options générales, est-ce qu'un simple fichier all-packs utilisant la meme syntaxe ne serait pas suffisant/super simple a gérer ?

et enfin des interrogations:
je fait un fichier pour mplayer
qu'est-ce qui va se passer si je fait yaourt -S mplayer ?

yaourt 7.1 il utilise quel pacman ? (non, c'est faux, je n'ai pas peur de pacman 3)
Avatar de l’utilisateur
wain
Maître du Kyudo
Messages : 1854
Inscription : ven. 11 août 2006, 19:15
Localisation : Nancy (54)

Message par wain »

_alexmyself a écrit :un truc qui passe,
les "#" comme séparateur ça fait pas chier si je veut commenter une ligne ?
En fait un dièse vaut un séparateur, mais deux dièses valent un dièse.
donc "replace#global#make###make" va commenter la ligne "make"
_alexmyself a écrit :ah oui, j'oubliais:
mortel wain, mortel !!! ça bute encore ce truc !! :D
merci :)
_alexmyself a écrit :et aussi pour les options générales, est-ce qu'un simple fichier all-packs utilisant la meme syntaxe ne serait pas suffisant/super simple a gérer ?
oui et non, c'est difficile de dire prévoire l'impact que pourrait avoir un remplacement global dans tous les PKGBUILDs. Je bosse toujours sur la question.
_alexmyself a écrit :et enfin des interrogations:
je fait un fichier pour mplayer
qu'est-ce qui va se passer si je fait yaourt -S mplayer ?
Si tu crée un fichier /etc/customizepkg.d/mplayer (même vide) puis que tu fais un yaourt -S mplayer, ce n'est pas le binaire qui sera téléchargé mais le paquetage sera recompilé.
Idem lors d'un yaourt -Su
_alexmyself a écrit :yaourt 7.1 il utilise quel pacman ? (non, c'est faux, je n'ai pas peur de pacman 3)
eh oui la version 7 (actuellement 0.7.5) ne fonctionne qu'avec pacman3. Si t'es un aventurier, n'hésites pas à tester 8)
Avatar de l’utilisateur
Tebo
Chu Ko Nu
Messages : 368
Inscription : sam. 17 mars 2007, 23:24

Message par Tebo »

Très partique cet outil.
Seulement la gestion des orphelins est douteuse avec makepkg -s.
Exemple:
Je compile avec l'aide d'abs customizepkg et makepkg claws-mail.
Je compile "makepkg -sc" il installe "vte" avec pacman. Mais le paquet est installer explicitement donc si je supprime claws-mail, vte ne sera pas considéré comme orphelin.

C'est très chiant, très chaint aussi d'avoir user/mpd pour Aur et le bugtrack. Wain en à parler ici.

Mais la solution arrive quelqu'un à proposé quelque chose hier.
Avatar de l’utilisateur
wain
Maître du Kyudo
Messages : 1854
Inscription : ven. 11 août 2006, 19:15
Localisation : Nancy (54)

Message par wain »

oui plus que douteuse la gestion des dépendances...
Ce bug introduit dans makepkg par pacman 3.0 sera corrigé dans la version 3.1
Patience donc :lol:
Répondre