La "Unix way" recommande d'avoir un programme qui ne fait qu'une chose mais qui le fait bien. C'est pour ça que yaourt utilise srcpac pour compiler les paquetages d'abs à partir des sources.
Mais voilà, srcpac semble complètement mort depuis des mois et des mois. Aucun des patchs soumis n'a été intégré et voilà que srcpac est carrément inutilisable avec pacman3.
Alors voilà, j'ai viré srcpac et Yaourt prend dorénavant en charge la partie compilation des paquetages à partir des sources. Le fonctionnement est différent de celui de srcpac car j'ai complètement abandonné l'utilisation de l'arborescence ABS, trop longue à mettre à jour et qui nécessite des droits root pour compiler. yaourt va désormais chercher les PKGBUILDs sur l'interface web http://cvs.archlinux.org/ et effectue ensuite le même travail que pour les paquetages provenant d'AUR.
Le résultat est une compilation plus rapide et plus sûre, avec la possibilité d'éditer au vol les PKGBUILDs, et le support des paquetages de la branche [testing] qui n'existe pas dans ABS.
Voilà pour la partie déjà réalisée.
Je voudrais maintenant prendre le temps de réfléchir avec vous sur un point très important: la modification à la volée des PKGBUILD.
Ceux qui utilisent déjà le fichier /etc/srcpac.conf savent de quoi je parle. Ce fichier de configuration permet (difficilement) de modifier automatiquement le PKGBUILD avant qu'il ne soit compilé.
Prenons un exemple:
Je souhaite installer mplayer à partir des sources sans l'option --runtime-cpudetection. Pour cela j'ajoute cette ligne dans /etc/srcpac.conf:
Code : Tout sélectionner
conf_mplayer=('#--enable-runtime-cpudetection#--disable-runtime-cpudetection#')
La syntaxe est évidemment très lourde et ne permet de faire qu'une seule modification par paquetage.
J'aimerai avoir votre avis sur la manière dont vous souhaiteriez que yaourt modifie les options d'un PKGBUILD ou plutôt la façon d'inscrire ça dans un fichier de configuration.
Yaourt doit pouvoir ajouter/supprimer des dépendances et ajouter/modifier/supprimer des options de compilation.
Moi je pensais à une syntaxe du type:
Code : Tout sélectionner
[mplayer]
removedep=('smbclient' 'dbus-glib')
removeoption=('--runtime-cpudetection')
modifyoption=(' --enable-smb' ' --disable-smb')
modifyoption=(--language=all' '--language=fr')
Voilà, dites-moi ce que vous en pensez