[Création] Paquetage aur programme en python [Resolu]

Mise à jour / Création /debug de paquetages
Répondre
nvitard
newbie
Messages : 8
Inscription : mer. 04 nov. 2015, 09:09

[Création] Paquetage aur programme en python [Resolu]

Message par nvitard »

Bonjour a tous

J'ai développer un petit soft en python et j'essaie de créer un paquet AUR pour pouvoir le distribuer
J'ai essayer tant bien que mal et voila ce que j'ai réussis à faire
https://aur.archlinux.org/packages/nvidiux/

J'ai créer le fichier PKGBUILD et .SRCINFO
et les 2 archives en respectant la hiérarchie des fichiers avec la commande makepkg --source
pour installer nvidiux il suffirait juste de copier les fichiers dans /usr/share et /usr/bin

le paquet existe bien dans aur il s'installe sans erreur avec yaourt
Mais
déjà il a une taille de 0 octet...
et après installation rien n'est installé (aucun message d'erreur)

Donc la je sèche si un mainteneur peut regarder mes différents fichiers et me dire ce qui ne va pas ça serait appréciable

Le code est en ligne https://github.com/RunGp/Nvidiux

Merci
Dernière modification par nvitard le sam. 07 nov. 2015, 14:19, modifié 1 fois.
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17288
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [Création] Paquetage aur programme en python

Message par benjarobin »

Bonjour,
Il manque déjà une description à ton paquet !
De plus ton PKGBUILD ne contient aucune fonction pour construire le paquet. Je ne savais même pas que l'on pouvait soumettre un paquet avec un PKGBUILD dont il manque le plus important.
De plus si ton idée est de garder la même arborescence que sous Github, cela ne va pas vraiment, il y a des conventions à respecter.
As tu lu le Wiki ou tout simplement regardé des exemples de PKGBUILD ?
Zsh | KDE | PC fixe : core i7, carte nvidia
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
nvitard
newbie
Messages : 8
Inscription : mer. 04 nov. 2015, 09:09

Re: [Création] Paquetage aur programme en python

Message par nvitard »

Je comprend pas le principe de construction de paquet
J'ai lu qu'il y a une fonction install ?mais c'est pour les paquets compilé
Sinon faire une fonction pour construire le paquet je veux bien mais il n'y a rien a faire juste faire une copie des fichiers au bon endroit et donc la construction de résume a
mv "l'endroit ou se trouve les fichiers" /usr/share je met ca ou ?
oui j'ai lu le wiki j'ai déjà créer le repo git pour arch mais les exemple sont fais pour les paquet compilé


Sinon il y a un lien vers toute les conventions a respecter la seule chose chose que j'ai trouver dans la doc c'est de mettre les fichiers de conf dans /etc/ et de ne pas utiliser /usr/local

edit c'est bon j'ai rajouter la description
nvitard
newbie
Messages : 8
Inscription : mer. 04 nov. 2015, 09:09

Re: [Création] Paquetage aur programme en python

Message par nvitard »

je respecte ça comme convention (je n'ai pas de fichier de conf donc je n'ai pas mis de répertoire etc)

Répertoires
Les fichiers de configuration doivent être placés dans le répertoire /etc. Si il y a plus d'un fichier de configuration, il est recommandé d’utiliser un sous-répertoire pour conserver /etc le plus sain possible. Utilisez /etc/{pkgname}/ où {pkgname} est le nom du paquet ou de référence (ex, apache utilise /etc/httpd/).

Les fichiers du paquet doivent suivre la structure générale des répertoires :
/etc: Fichiers de configuration indispensables au système.
/usr/bin: Exécutables des applications.
/usr/sbin: Exécutables système.
/usr/lib: Bibliothèques.
/usr/include: Fichiers d’en-tête.
/usr/lib/{pkg}: Modules, plugins, etc.
/usr/share/doc/{pkg}: Documentation d’application.
/usr/share/info: Fichiers du système GNU info.
/usr/share/man: Pages de manuel.
/usr/share/{pkg}: Données des applications.
/var/lib/{pkg}: Stockage persistant de fichiers pour d’application.
/etc/{pkg}: Fichiers de configuration.
/opt/{pkg}: Paquets autonomes comme par exemple 'android-sdk'.

Un paquet ne doit pas contenir les répertoires suivants :
/dev
/home
/media
/mnt
/proc
/root
/selinux
/sys
/tmp
/var/tmp

j'ai trouvé les directives dans la doc sur la page standard paquatage
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17288
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [Création] Paquetage aur programme en python

Message par benjarobin »

Le manuel explique le tout : https://www.archlinux.org/pacman/PKGBUILD.5.html
Mais en gros : Tu as les fonctions
  • prepare pour patcher tes sources, si tu veux faire des modifications sur les sources, par exemple avant de les compiler
  • build pour compiler...
  • package pour créer le paquet : Copier les sources au bon endroit dans le dossier $pkgdir
Ce que tu cites se sont vraiment les bases. Le fichier de licence, ne doit pas se trouver ici, comme les fichiers de lang
En python on met généralement le code python 2 dans /usr/lib/python2.7/site-packages/, tu peux regarder par exemple https://www.archlinux.org/packages/comm ... enu/files/
Zsh | KDE | PC fixe : core i7, carte nvidia
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
nvitard
newbie
Messages : 8
Inscription : mer. 04 nov. 2015, 09:09

Re: [Création] Paquetage aur programme en python

Message par nvitard »

donc si j'ai bien compris
exit la fonction prépare et build je n'ai rien a patcher et a compiler

ensuite dans package je fais un script qui execute
cp -r $pgkdir/usr/share /usr/share
cp -r $pgkdir/usr/bin/nvidiux /usr/bin/nvidiux

Code : Tout sélectionner

pkgname=nvidiux
pkgver=0.99
pkgrel=1
pkgdesc="Interface en pyqt pour overclocker/underclocker les gpu nvidia avec le pilote proprio"
arch=(any)
url="https://github.com/RunGp/Nvidiux"
license=('GPL3')
depends=('gksu'
		 'python-psutil'
		 'tk'
		 'libva-vdpau-driver'
		 'python-pyqt4')
package=(cp -r $pgkdir/usr/share /usr/share;cp -r $pgkdir/usr/bin/nvidiux /usr/bin/nvidiux)
source=($pkgname-$pkgver.tar.gz)
md5sums=('8297da64e39b566fc18282982c8c4db3')
Edit ok pour la convention je ferait les modifications une fois que j'aurais une version qui fonctionne
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17288
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [Création] Paquetage aur programme en python

Message par benjarobin »

Le PKGBUILD c'est du BASH, ce que tu donnes n'en n'es pas. As tu regardé un seul exemple de PKGBUILD ?!
package est une fonction et non un tableau, as tu testé ce que tu fait ? Pourquoi publié quelque chose que tu sais de faux ???!
Zsh | KDE | PC fixe : core i7, carte nvidia
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Avatar de l’utilisateur
FoolEcho
Maître du Kyudo
Messages : 10707
Inscription : dim. 15 août 2010, 11:48
Localisation : Basse-Normandie

Re: [Création] Paquetage aur programme en python

Message par FoolEcho »

nvitard a écrit :Je comprend pas le principe de construction de paquet
PKGBUILD

... et le principe c'est d'avoir un PKGBUILD fonctionnel avant de le publier sur AUR...
«The following statement is not true. The previous statement is true.» :nage:
nvitard
newbie
Messages : 8
Inscription : mer. 04 nov. 2015, 09:09

Re: [Création] Paquetage aur programme en python

Message par nvitard »

Bonjour,

Bon une mise au point je n'arrive pas a me faire comprendre

Jusqu’à maintenant quand je diffuse (installe) mes programmes que ce soit sous win ou sur nux je me contente de copier des sources (ou un binaire compilé) au bon endroit.
Il m'arrive aussi d'utiliser des fonctions/programmes avant ou après la copie pour permettre l’utilisation du dit programme.

Bon a priori sous arch ça ne fonctionne pas exactement comme ça soit.
J'ai beau lire de la doc et des exemples ( qui me parle pour la plupart de truc a compiler ... ce qui n'est pas mon cas mon prog est en python du langage interprété ) ça reste flou sur ce que je dois faire exactement.

Ce que j'ai compris (corriger moi si je me trompe).
Je dois creer un "paquet" ce paquet sera à construire à partir des sources et du PKGBUILD.

Question numéro 1 (qui peut paraître très conne)
C'est quoi exactement ce "paquet" un répertoire ? une archive ? et surtout il contient quoi des sources compile et des scripts ? juste des sources compilé ? A quoi il sert exactement ?.

Question numéro 2
D’après ce que je comprend le paquet contient les sources compilé (le binaire) donc si j'applique a mon cas il contient quoi ? mon arborescence avec mes sources dedans ? Autre chose ?

Question numero 3
A quel moment exactement je fais comprendre à Pacman qu'il doit juste copier mes sources dans /usr/share/ sans rien rien compilé ni faire quoi que ce soit avant ou après ? dans la fonction PACKAGE ? après la création du paquet ?

voyons cette fonction package je prend l'exemple de la doc.

Code : Tout sélectionner

package ()
{
  cd "$srcdir/$pkgname-$pkgver"
  make DESTDIR="$pkgdir" install
}
Ce que je comprend dans l'exemple on entre dans le répertoire des sources, on effectue un make install le résultat est dans le répertoire $pkgdir.

Toujours d’après la doc $pkgdir
Répertoire racine de ce qui sera installé dans le paquet. <- je vois pas vraiment a quoi ça correspond ça m'aide pas je ne suis pas plus avancé je veut pas installer mon prog dans un paquet je veut le mettre dans /usr/share/.

mais bon j'applique ça bêtement essayons de faire un paquet avec mes sources dedans.

donc moi si je fais

Code : Tout sélectionner

package ()
{
  cd "$srcdir/$pkgname-$pkgver"
  cp -r * $pkgdir
}
Toute les sources de mon programme seront copié à la racine du "paquet" je me trompe ?
Et maintenant ? Quand pourrai-je copier mes sources la ou je veut ? (installer mon programme en gros) Pour l'instant je devrait avoir juste un "paquet" qui contient mes sources.

Bon quand je me relis je ne sais vraiment pas si je suis clair en tous ça vous aurez compris je ne saisi pas du tous la logique qu'il y a derrière le système et surement pour ça que j'ai l'air de faire n'importe quoi .
... et le principe c'est d'avoir un PKGBUILD fonctionnel avant de le publier sur AUR...
Je suis d'accord mais comment je vérifie que mon PKGBUILD fonctionne sans l'uploader sur AUR ?
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17288
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [Création] Paquetage aur programme en python

Message par benjarobin »

Le système de paquet est vraiment ultra simple sous ArchLinux, tu ne peux pas faire plus simple, créer un .deb est bien plus dur.

Bref, pour tester un PKGBUILD, il suffit que tu le "compiles", tu lances la construction du paquet...
Si pour toi cela veut dire yaourt alors c'est que tu n'as pas pris le temps de lire le Wiki. yaourt ou tout autre outil pour gérer AUR n'est qu'un ensemble de script pour te simplifier la vie.
Il est donc important de savoir compiler / créer un paquet juste à partir des sources, sans aucun script d'aide. La encore tout est décrit dans le Wiki. Une petite aide, la commande se nomme makepkg.

Sinon pour revenir à la création d'un paquet : Tu as 2 dossiers qui sont créés dans le même dossier que le PKGBUILD : src et pkg.
Dans le dossier src ($srcdir) sont extraites les sources, et le dossier pkg ($pkgdir) sera le reflet de ce qui sera installé dans ton système, lors de l'installation du paquet via pacman.

Les différentes étapes de makepkg en simplifiant "un peu" (beaucoup)
  • La première chose que fait makepkg est de récupérer les sources, puis de les extraire dans src.
  • Puis il lance la fonction prepare() qui patch éventuellement les sources.
  • Puis il lance la fonction build() qui fait la compilation des sources.
  • Puis la fonction package() est lancé pour copier les binaires compilés dans le dossier pkg aux emplacement voulus.
  • Puis une moulinette va nettoyer automatiquement le dossier pkg : Supprimer les symboles des binaires, compresser les manuels.
  • Et finalement le dossier pkg est compressé dans une archive .pkg.tar.xz qui sera le paquet installable via pacman
Pour installer ensuite le paquet, il suffit de faire : pacman -U *.pkg.tar.*

Alors oui cela fait beaucoup d'étape et de copie de fichier, mais tout ceci est automatisé et ultra simple à comprendre et à maintenir, il suffit de connaitre 2, 3 lignes de bash...

Bref, dans ton cas c'est ultra simple car il n'y a rien à compiler, donc cela revient à créer les dossier et à copier les fichiers du dossier src dans le dossier pkg aux emplacements voulus.
Zsh | KDE | PC fixe : core i7, carte nvidia
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Avatar de l’utilisateur
papajoke
Elfe
Messages : 781
Inscription : sam. 30 août 2014, 19:54

Re: [Création] Paquetage aur programme en python

Message par papajoke »

bonjour,

Si tu ne désires pas trop étudier la doc, il existe des centaines d'exemples dans aur avec git en source (ton cas?) et modification de l’arborescence pour coller au standard (ton cas) comme celui ci par exemple, juste supprimer le build() pour toi.
Arch stable - Kde 5 / zsh - btrfs/mbr - Intel Core i3 - 6Go RAM - GeForce 405 video-nouveau
nvitard
newbie
Messages : 8
Inscription : mer. 04 nov. 2015, 09:09

Re: [Création] Paquetage aur programme en python

Message par nvitard »

benjarobin a écrit :Le système de paquet est vraiment ultra simple sous ArchLinux, tu ne peux pas faire plus simple, créer un .deb est bien plus dur.

Bref, pour tester un PKGBUILD, il suffit que tu le "compiles", tu lances la construction du paquet...
Si pour toi cela veut dire yaourt alors c'est que tu n'as pas pris le temps de lire le Wiki. yaourt ou tout autre outil pour gérer AUR n'est qu'un ensemble de script pour te simplifier la vie.
Il est donc important de savoir compiler / créer un paquet juste à partir des sources, sans aucun script d'aide. La encore tout est décrit dans le Wiki. Une petite aide, la commande se nomme makepkg.

Sinon pour revenir à la création d'un paquet : Tu as 2 dossiers qui sont créés dans le même dossier que le PKGBUILD : src et pkg.
Dans le dossier src ($srcdir) sont extraites les sources, et le dossier pkg ($pkgdir) sera le reflet de ce qui sera installé dans ton système, lors de l'installation du paquet via pacman.

Les différentes étapes de makepkg en simplifiant "un peu" (beaucoup)
  • La première chose que fait makepkg est de récupérer les sources, puis de les extraire dans src.
  • Puis il lance la fonction prepare() qui patch éventuellement les sources.
  • Puis il lance la fonction build() qui fait la compilation des sources.
  • Puis la fonction package() est lancé pour copier les binaires compilés dans le dossier pkg aux emplacement voulus.
  • Puis une moulinette va nettoyer automatiquement le dossier pkg : Supprimer les symboles des binaires, compresser les manuels.
  • Et finalement le dossier pkg est compressé dans une archive .pkg.tar.xz qui sera le paquet installable via pacman
Pour installer ensuite le paquet, il suffit de faire : pacman -U *.pkg.tar.*

Alors oui cela fait beaucoup d'étape et de copie de fichier, mais tout ceci est automatisé et ultra simple à comprendre et à maintenir, il suffit de connaitre 2, 3 lignes de bash...

Bref, dans ton cas c'est ultra simple car il n'y a rien à compiler, donc cela revient à créer les dossier et à copier les fichiers du dossier src dans le dossier pkg aux emplacements voulus.
ENFIN !!!
on pouvais pas commencer par la ? Au lieu de me balancer du RTFM
c'est bon j'ai réussis a faire mon 1er paquet

Sinon pour la création du paquet debian vs arch c'est une question de point de vue

pour faire un deb je suis aller sur la doc debian je suis tomber sur une doc qui explique bien la chose et sans aide externe en une 10 aine de minute le temps de bien tous comprendre mon prog était empaqueter et pret a être distribué

Coté arch je suis tomber sur des doc style puzzle avec chacune un morceau de la méthode et des exemples obscur qui ne correspond pas a ce que je cherchait , aucune explication claire de "quel est la philosophie" de création de paquet. Résultat je ne comprend rien et avec de l'aide il m'a fallut 3 jours avant de générer un paquet potable... ( je ne respecte pas encore le standard au niveau des chemins de fichier)

Merci
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17288
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [Création] Paquetage aur programme en python

Message par benjarobin »

Je suis trop gentil en faite... Tout est expliqué dans les Wiki (https://wiki.archlinux.fr/PKGBUILD) et dans le man, mais tu n'as apparemment pas le courage de les lire. J'ai juste fait une synthèse
Et si tu avais ouvert le moindre exemple tu aurais compris comment cela fonctionne...

Sinon pour les standard au niveau des chemins de fichier, c'est la même pour toutes les distributions, à quelques variantes prêts...
Zsh | KDE | PC fixe : core i7, carte nvidia
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
nvitard
newbie
Messages : 8
Inscription : mer. 04 nov. 2015, 09:09

Re: [Création] Paquetage aur programme en python

Message par nvitard »

Eh beh quel manque cruel de pédagogie moi j'ai l'impression que tu ne lis pas ce que j'ecrit

Ça te parait insensé a quel point que j'ai lu cette doc (ainsi que d'autre doc page de man ou d'exemple ) mais que je n'ai pas compris le fonctionnement avant que toi tu me l'explique ?
Si il suffisait de lire de la doc ce forum ne servirait a rien..
Donc je te le répète j'ai lu votre doc je n'ai rien compris.

Mais bon j'ai réussis a faire ma 1ere maj de paquet j'ai compris le fonctionnement le problème est résolu
Avatar de l’utilisateur
FoolEcho
Maître du Kyudo
Messages : 10707
Inscription : dim. 15 août 2010, 11:48
Localisation : Basse-Normandie

Re: [Création] Paquetage aur programme en python

Message par FoolEcho »

nvitard a écrit :Coté arch je suis tomber sur des doc style puzzle avec chacune un morceau de la méthode et des exemples obscur qui ne correspond pas a ce que je cherchait , aucune explication claire de "quel est la philosophie" de création de paquet. Résultat je ne comprend rien et avec de l'aide il m'a fallut 3 jours avant de générer un paquet potable... ( je ne respecte pas encore le standard au niveau des chemins de fichier)
Standard_paquetage ... je ne vois pas ce qui n'est pas clair côté philosophie... et oui, c'est du puzzle car tous les programmes ne s'installent pas de la même façon... :|
Et il y a des spécifités... et des exemples... selon le type de paquets voulu. (cf. bas de page Arch_packaging_standards).
Avec exemple à la clé: Python_package_guidelines
Et donc https://projects.archlinux.org/abs.git/ ... thon.proto fourni par abs (et donc ton installation ne paraît pas bonne à vue de nez: le nom du paquet ne respecte pas le standard si tu fournis effectivement du python, tu ne fais pas vraiment d'installation, etc.).

En outre, tu ne dois pas déposer sur le git d'aur les sources du programme, ça n'est pas sa vocation (sauf fichiers textes ou équivalents comme des scripts shell, des .desktop, etc.).
Il te faut donc indiquer une url où télécharger les sources de ton programme et non directement une installation locale ( source=($pkgname-$pkgver.tar.gz n'est donc pas correct ; il est des cas différents (comme un paquet commercial/acheté) mais tu ne rentres pas dans ce cas de figure a priori).

:chinois:

On peut t'aider à faire des PKGBUILDs spécifiques sur le forum et c'est même conseillé plutôt que tatonner et publier directement... :mrgreen:
«The following statement is not true. The previous statement is true.» :nage:
nvitard
newbie
Messages : 8
Inscription : mer. 04 nov. 2015, 09:09

Re: [Création] Paquetage aur programme en python [Resolu]

Message par nvitard »

Bonjour

Si je regarde la doc pour python l'exemple me parle python setup.py etc... c'est pas ce que je veut faire mais je comprend ce qui est fais tout de même
Je suis pas un programmeur pro (c'est pas mon metier)
Mon installation je faire juste du copier coller aux bon emplacement

Si je renomme mon apli en python-nvidiux ça pose pas de problème pour les Maj le changement de nom ?

Pour les sources mon serveur web auto-hébergé pourrais convenir mais il n'est pas 100% du temps en ligne je préférerais avoir un serveur plus fiable arch en préconise un ? ou la j'ai vraiment le choix ?
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17288
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [Création] Paquetage aur programme en python [Resolu]

Message par benjarobin »

Euh, pourquoi ne pas utiliser github ?
Zsh | KDE | PC fixe : core i7, carte nvidia
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Avatar de l’utilisateur
FoolEcho
Maître du Kyudo
Messages : 10707
Inscription : dim. 15 août 2010, 11:48
Localisation : Basse-Normandie

Re: [Création] Paquetage aur programme en python [Resolu]

Message par FoolEcho »

nvitard a écrit :Si je renomme mon apli en python-nvidiux ça pose pas de problème pour les Maj le changement de nom ?
Il suffirait de créer le nouveau paquet et de demander une requête de merge (via «requête de fichiers» dans l'interface de aur) de manière à fusionner l'ancien sur le nouveau. :chinois:
benjarobin a écrit :Euh, pourquoi ne pas utiliser github ?
+1.
Dans ce cas, tu as besoin d'un autre paquet (cf. standard en -git, comment récupérer les sources, etc.)

Si tu t'en tiens à la version 0.99 (c'est bon aussi hein), tu devrais récupérer le code tel que fourni et donc dans le .deb ou mieux, directement à partir des sources (et donc là, à voir ce que demande la compilation -- j'y connais rien en python). https://github.com/RunGp/Nvidiux/releases

Retravaille donc ton PKGBUILD et présente-le nous. :chinois:
«The following statement is not true. The previous statement is true.» :nage:
Répondre