Une place pour une véritable innovation. Partagez vos propres utilitaires créés avec la communauté Manjaro.
Questions et discussions sur la programmation et le codage.
Répondre

PKGBUILD et pkgver()

#1Messageil y a 8 ans

Bonjour,

J'essaie de rédiger un PKGBUILD pour un logiciel téléchargeable via git (et donc avec un numéro de version variant souvent). Tout va bien, sauf l'étape pour donner automatiquement le numéro de version. J'ai suivi le wiki arch, et j'ai la fonction suivante :

pkgver() { 
  cd "$pkgname"
  git describe --long --tags | sed 's/^v//;s/\([^-]*-g\)/r\1/;s/-/./g'
}


Elle marche correctement, et me renvoie bien 0.3.2.r6.ge5b4210. Sauf qu'elle n'est pas prise en compte par makepkg. Lorsque je lance la construction du paquet, je vois dans les log l'appel à la fonction, mais makepkg construit un paquet avec un numéro de version vide. Et quand je rajoute un numéro de version constant, la fonction n'est même pas appelée.
De plus, si pkgver() renvoie une valeur incorrecte, makepkg s'arrête ; la valeur de retout est quand même prise en compte

Une idée pour générer automatiquement et correctement le numéro de version ? Ou alors j'ai mal compris le fonctionnement de pkgver()

PKGBUILD et pkgver()

#2Messageil y a 8 ans

Essaye plutôt ceci au début de ta fonction pkgver()

cd "$srcdir/$pkgname"


C'est ce qui est utilisé dans la plupart des paquets que je maintiens sur AUR, modulo quelques variations au niveau du nom du répertoire source.

https://aur.archlinux.org/packages/?SeB=m&K=FredBezies

PKGBUILD et pkgver()

#3Messageil y a 8 ans

bonjour,

ce n'est pas parce que les sources viennent de git que tu dois utiliser cette fonction
elle est (uniquement) là pour les mises à jour avec l'option --devel, a ce moment la elle est évaluée (après téléchargement !). MAIS comme personne n'utilise cette option....

mais tu peux utiliser une numérotation classique manuelle, c'est alors elle qui est évaluée avant téléchargement (paquet classique ou -git)

PKGBUILD et pkgver()

#4Messageil y a 8 ans

papajoke a écrit :bonjour,

ce n'est pas parce que les sources viennent de git que tu dois utiliser cette fonction
elle est (uniquement) là pour les mises à jour avec l'option --devel, a ce moment la elle est évaluée (après téléchargement !). MAIS comme personne n'utilise cette option....

mais tu peux utiliser une numérotation classique manuelle, c'est alors elle qui est évaluée avant téléchargement (paquet classique ou -git)


Ah d'accord. Mais dans ce cas, à quoi sert cette fonction ? AUR l'utilise-t-il ?

PKGBUILD et pkgver()

#5Messageil y a 8 ans

comme dit précédemment elle est utilisée avec --devel (normalement la bonne méthode)
ou
par les mainteneurs de -git qui désirent coller au dépot git plus qu'a la version du soft

je me répète, si le mainteneur utilise la fonction pkgver() sans mettre a jour manuellement la version dans pkgbuild alors les utilisateurs ne recevrons JAMAIS de notification même si le git évolue; seul l' option --devel va leur dire si une nouvelle version est présente.

généralement les mainteneurs "-git" (Fred !) mettent à jour la version du PKGBUILD manuellement tous les 15..30 jours si nécessaire calculée par cette fonction histoire de forcer une mise à jour (ou pas). Et l'utilisateur qui désire une version dujour, lui, il utilise pacman -Syua --devel. on a donc les 2 méthodes de mises à jour.

si tu regardes par exemple yaourt-git il indique une version du soft mais avec un --devel tu télécharges (si nécessaire merci la fonction pkgver) la toute dernière version git (1.7...)
perso, je pense que c'est juste plus marquetting d'avoir un numéro de version du soft !

PKGBUILD et pkgver()

#6Messageil y a 8 ans

D'accord !

Merci beaucoup pour les explications, je me suis mépris sur le fonctionnement.

PKGBUILD et pkgver()

#7Messageil y a 8 ans

papajoke a écrit :comme dit précédemment elle est utilisée avec --devel (normalement la bonne méthode)
ou
par les mainteneurs de -git qui désirent coller au dépot git plus qu'a la version du soft


On peut dire cela ainsi.

je me répète, si le mainteneur utilise la fonction pkgver() sans mettre a jour manuellement la version dans pkgbuild alors les utilisateurs ne recevrons JAMAIS de notification même si le git évolue; seul l' option --devel va leur dire si une nouvelle version est présente.


C'est pour cela que des outils comme yaourt propose l'option -a pour voir la liste des paquets récupérés sur AUR pour vérifier d'éventuelles mises à jour.

généralement les mainteneurs "-git" (Fred !) mettent à jour la version du PKGBUILD manuellement tous les 15..30 jours si nécessaire calculée par cette fonction histoire de forcer une mise à jour (ou pas). Et l'utilisateur qui désire une version dujour, lui, il utilise pacman -Syua --devel. on a donc les 2 méthodes de mises à jour.


Mes PKGBUILDs voient la valeur pkgver mise à jour automatiquement lors du makepkg -s. Ensuite, un coup de mksrcinfo, et les commandes git qui vont bien pour informer d'une nouvelle version.

Je vais plus sur 10 jours, car certains logiciels sont assez mouvants. Souvent, il y a un rXX (où XX est un nombre mouvant) indique le nombre de modifications insérées depuis la dernière version stable. Cela permet de voir que le logiciel continue d'être développé.

si tu regardes par exemple yaourt-git il indique une version du soft mais avec un --devel tu télécharges (si nécessaire merci la fonction pkgver) la toute dernière version git (1.7...)
perso, je pense que c'est juste plus marquetting d'avoir un numéro de version du soft !


Pas uniquement, comme je t'ai dit plus haut :)
Répondre