[yaourt] evolution de l'option -b

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

[yaourt] evolution de l'option -b

Message par wain »

Finalement je me suis décidé:

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#')
Cette ligne remplace --enable- par --disable- dans le PKGBUILD avant qu'il ne soit compilé.

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')
A terme, j'ai l'espoir d'implémenter le support de la variable USE de gentoo dans yaourt. :twisted:

Voilà, dites-moi ce que vous en pensez :D
Avatar de l’utilisateur
kozaki
Chu Ko Nu
Messages : 422
Inscription : mer. 13 sept. 2006, 22:49
Localisation : London > . < Paris
Contact :

Message par kozaki »

En attendant, la syntaxe à laquelle tu as commencé de penser a le mérite d'etre claire et plus simple à gérer que celle de srcpac.conf.

J'apprécie la lisibilité du fichier, avec l'application/package entre "[]" suivie d'actions clairement identifiables :)
~ Configs ~ PGP Key: 1C2A554EFF0157D9
« Demande un conseil à ton ennemi et fais le contraire (proverbe juif)
SVP intéressé par tout retour d'exp. sur Arch ARM en général, et sur portable (CrOS) en particulier.
Avatar de l’utilisateur
Skunnyk
Maître du Kyudo
Messages : 1137
Inscription : mer. 06 sept. 2006, 21:31
Localisation : IRC
Contact :

Message par Skunnyk »

Tres bonne initiative :p
C'est sur que srcpac est .. limité.
J'espere qu'il y aura des sorties d'erreurs specifique lors des compilation, pas un exit 0; :p
Pour les options de modif a la volée je ne m'en sers actuellement pas, mais ta syntaxe en bcp plus claire ... :)
Bon courage
_alexmyself
Chu Ko Nu
Messages : 405
Inscription : lun. 18 sept. 2006, 16:21
Localisation : france, yvelines 78

Message par _alexmyself »

ça a l'air simple et clair...cherche pas plus loin :)
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 »

Skunnyk a écrit :J'espere qu'il y aura des sorties d'erreurs specifique lors des compilation, pas un exit 0
Un patch de makepkg3 a justement été proposé par Andrew Fyfe sur la ML avec les codes d'erreurs suivants:

Code : Tout sélectionner

	E_OK=0
	E_UNKNOWN=1
	E_USER_ABORT=4
	E_INVALID_BUILD_SCRIPT=8
	E_MISSING_PROGRAM=16
	E_CONFIG_ERROR=32
Sinon, merci à tous pour vos commentaires. Puisque tout le monde semble d'accord, il ne me reste qu'à implémenter ça :D
Avatar de l’utilisateur
Sylphe
Hankyu
Messages : 24
Inscription : dim. 17 sept. 2006, 16:34

Re: [yaourt] evolution de l'option -b

Message par Sylphe »

Hello here,

Ce serait pas possible de limiter le nombre de champs à 4 ?
[mplayer]
removedep=(smbclient dbus-glib)
adddep=()
removeoption=(--runtime-cpudetection --enable-smb --language=all)
addoption=(--disable-smb --language=fr)

Voir à 2 avec + et - ou > et < ?
[mplayer]
dep=( '>smbclient' '>dbus-glib' )
option=( '>--runtime-cpudetection' '>--enable-smb' '>--langage=all' '<--disable-smb' '<--language=fr' )

La syntaxe de srcpac est certe lourde, mais si je me trompe pas elle permet de modifier n'importe quoi, pas seulement les dépendances et options de compilation. Garder un champ à interpréter par sed serait sympa.

Et enfin srcpac peut s'utiliser sans yaourt, pourrais-tu faire de même pour ton outil ? (Unix Way)

Ah puis n'ayant jamais testé gentoo je me demandais si c'est possible de définir des options de compilation pour tous les pkgbuild à la fois. Autrement dit quand on compile avec une option sans rapport, est-elle ignorée ? Si oui un pseudo-paquet [all] serait bien venu.

Bon codage anyway ! :wink:
Avatar de l’utilisateur
wain
Maître du Kyudo
Messages : 1854
Inscription : ven. 11 août 2006, 19:15
Localisation : Nancy (54)

Re: [yaourt] evolution de l'option -b

Message par wain »

Sylphe a écrit :Hello here,

Ce serait pas possible de limiter le nombre de champs à 4 ?
[mplayer]
removedep=(smbclient dbus-glib)
adddep=()
removeoption=(--runtime-cpudetection --enable-smb --language=all)
addoption=(--disable-smb --language=fr)

Voir à 2 avec + et - ou > et < ?
[mplayer]
dep=( '>smbclient' '>dbus-glib' )
option=( '>--runtime-cpudetection' '>--enable-smb' '>--langage=all' '<--disable-smb' '<--language=fr' )

La syntaxe de srcpac est certe lourde, mais si je me trompe pas elle permet de modifier n'importe quoi, pas seulement les dépendances et options de compilation. Garder un champ à interpréter par sed serait sympa.

Et enfin srcpac peut s'utiliser sans yaourt, pourrais-tu faire de même pour ton outil ? (Unix Way)

Ah puis n'ayant jamais testé gentoo je me demandais si c'est possible de définir des options de compilation pour tous les pkgbuild à la fois. Autrement dit quand on compile avec une option sans rapport, est-elle ignorée ? Si oui un pseudo-paquet [all] serait bien venu.

Bon codage anyway ! :wink:
Merci pour ton commentaire Sylphe. La syntaxe que tu propose avec "<" et ">" est intéressante même si j'ai peur qu'elle rende le fichier plus difficile à lire. Je vais essayer d'implémenter les deux et voir ensuite quelle méthode est la plus appropriée. Pour l'externalisation du code dans un programme séparé, je vais voir si c'est faisable sans avoir à doubler la moitié du code de yaourt.

Sinon, voilà comment je vois à présent la partie configuration:
- un répertoire /etc/yaourt.d/
- dans ce répertoire, un fichier de configuration pour chaque paquetage (je laisse tomber l'idée d'un seul gros fichier). Ce sera plus simple à parser/supprimer et modifier un jour avec un gui séparé.
- dans le fichier de configuration on pourra utiliser les éléments suivants:
*des actions: remove, replace et add
*des contextes: depends, makedepends, options, conflicts, replaces, pkgname, pkgver, pkgdesc, backup, source, install => toutes les variables d'un PKGBUILD, mais aussi un contexte "global" qui permet d'agir sur l'ensemble du fichier.
*des valeurs: soit un pattern recherché soit une valeur qui le remplace
==> cela nous donne une syntaxe du type:

Code : Tout sélectionner

ACTION CONTEXT PATTERN VALUE
exemples pour mplayer:
remove depends "smbclient*" "dbus-glib"
remove makedepends "*"
replace global "--enable-runtime-cpudetection" "--disable-runtime-cpudetection"
replace global "--enable-smb" "--disable-smb"
add backup "etc/mplayer.conf"
remove pkgdesc "*"
add pkgdesc "mplayer recompilé par moi-même"
En plus d'un fichier de configuration pour chaque paquetage, il faut une configuration globale (cela rejoint la remarque de Sylphe) qui permettrait en fonction de certains critères de recompiler les paquetages qui le nécessitent. Par exemple, je n'ai pas d'imprimante et donc je souhaite que tous les paquetages binaires qui nécessitent CUPS soient recompilés avec l'option --disable-cups. Ca c'est la variable USE de gentoo. Cette partie là ne sera pas évidente ! Je vais jetter encore un coup d'oeil à Sourcemage pour voir comment sorcery s'en sort avec ça. :wink:
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 »

Bon une semaine est passée, il est temps pour moi de rendre ma copie :D

Voici customizepkg: http://forums.archlinux.fr/post4100.html

et la nouvelle version de yaourt qui remplace désormais srcpac: http://forums.archlinux.fr/post4101.html
Répondre