Bonjour,

Voici ma première version du paquet pour SimpleCV (cette bibliothèque réarange les bindings python de OpenCV de façon beaucoup plus conviviale et simple à utiliser : http://simplecv.org).

Résumé du test : python-SimpleCV

Résumé de la description : Open source framework for building computer vision applications

URL Spec : http://jenselme.perso.centrale-marseille.fr/visible/SPECS/python-SimpleCV.spec

URL SRPM : http://jenselme.perso.centrale-marseille.fr/visible/SRPMS/python-SimpleCV-1.3-1.fc20.src.rpm

Description :
SimpleCV is a framework for Open Source Machine Vision, using OpenCV and the
Python programming language.

J'ai un warning rpmlint :
python-SimpleCV.noarch: W: no-manual-page-for-binary simplecv
Donc rien à faire de ce côté.

J'ai aussi fait le paquet pour svgwrite la seule dépendance qui n'est pas dans les dépôts :

Résumé du test : python-svgwrite

Résumé de la description : A Python library to create SVG drawings

URL Spec : http://jenselme.perso.centrale-marseille.fr/visible/SPECS/python-svgwrite.spec

URL SRPM : http://jenselme.perso.centrale-marseille.fr/visible/SRPMS/python-svgwrite-1.1.3-1.fc20.src.rpm

Description :
A Python library to create SVG drawings.

Rien du côté de rpmlint.

Qu'en pensez-vous ?
11 jours plus tard
Salut !
tu peux virer la ligne rm -rf au début de la section %%install
%install
rm -rf $RPM_BUILD_ROOT
tu peux aussi virer la ligne defattr dans la section %%files
%files
%defattr (-,root,root,-)
Pourrais-tu être plus précis sur cette ligne dans la section %%files ? C'est un peu trop "large"
%{python_sitelib}/*
Salut,

Merci pour ta réponse. Je viens de supprimer les lignes defattr et rm -rf $RPM_BUILD_ROOT.

Par contre, pour %files, tu peux me donner un peu plus de précisions ou un exemple correct ? Je me suis basé sur les specs de pyserial et de python-request pour écrire les miens. Pour python-request, c'est comme ça sans plus et pour pyserial, on a :
%{python_sitelib}/*.egg-info
%dir %{python_sitelib}/requests
%{python_sitelib}/requests/*
Ce qui ne m'a pas l'air d'apporter beaucoup d'éléments en plus.
Ton exemple est correct, et justement fait comme dans l'exemple 🙂
Juste pour pas te donner la réponse trop vite, je vais essayer de te poser des question, leurs réponses te donneront la réponse à ton problème (%{python_sitelib}/* englobe trop de fichiers)
  1. Quels sont les fichiers/répertoires que ton RPM apporte au système en dehors de ceux déjà présents ?
  2. Quels fichiers/rép système ton RPM doit possèder en dehors de ceux qu'il apporte ?
  3. Quels sont les fichiers/rép présents dans /usr/lib/python2.7/site-packages/ que ton RPM apporte ?
  4. Quels sont les fichiers/rép présents dans /usr/lib/python2.7/site-packages/ que ton RPM doit possèder ?
La résultante de ces 4 questions donne une solution correcte pour remplacer la ligne %{python_sitelib}/* de ton spec 😉
N'oublie pas que la section %files est là pour dire « tel fichier m'appartient, tel répertoire aussi ». Il faut donc être très précis avec les répertoires car il y a la récursivité en plus.
Pour voir les fichiers contenus dans un paquet, tu as toujours la commande rpm à ta disposition :
$ rpm -qpl ~/rpmbuild/RPMS/noarch/python-SimpleCV-1.3-1.fc20.noarch.rpm
C@sp€r wrote: Quels sont les fichiers/répertoires que ton RPM apporte au système en dehors de ceux déjà présents ?
Les fichiers contenus dans le rpm.
C@sp€r wrote: Quels fichiers/rép système ton RPM doit possèder en dehors de ceux qu'il apporte ?
Aucun je suppose. Dans le cas contraire, je ne vois pas pourquoi.
C@sp€r wrote: Quels sont les fichiers/rép présents dans /usr/lib/python2.7/site-packages/ que ton RPM apporte ?
SimpleCV-1.3-py2.7.egg-info/*
SimpleCV/*
C@sp€r wrote: Quels sont les fichiers/rép présents dans /usr/lib/python2.7/site-packages/ que ton RPM doit possèder ?
Ceux qu'ils apportent.

Du coup, ce qui suit est mieux, non ?
%{python_sitelib}/SimpleCV-1.3-py2.7.egg-info/*
%{python_sitelib}/SimpleCV/*
Vu que normalement mon paquet est le seul qui touche au fichiers dans %{python_sitelib}/SimpleCV. Par contre, je n'ai pas compris l'utilité de la commande %dir (du coup je ne l'utilise pas). D'après ce que j'ai compris, elle permet de dire le dossier m'appartient tout en ignorant les fichiers contenus dans ce dossier. Mais du coup, pourquoi faire comme ça, si juste après on ajoute tout ? On en prendrait qu'une partie des fichiers, je comprendrais, mais là…

Petite question en passant : qu'est-ce qui se passe si on englobe trop de fichiers ? Des conflits peuvent apparaître ? On risque de supprimer les fichiers d'autres paquets ?
T'as tout bon aux questions 1, 2 et 4.
Jujens wrote:
C@sp€r wrote: Quels sont les fichiers/rép présents dans /usr/lib/python2.7/site-packages/ que ton RPM apporte ?
SimpleCV-1.3-py2.7.egg-info/*
SimpleCV/*
Avec les étoiles, tu inclus tous les fichiers/rép contenus dans le répertoire, mais pas le répertoire lui-même
SimpleCV-1.3-py2.7.egg-info/*

est égale à:

/usr/lib/python2.7/site-packages/SimpleCV-1.3-py2.7.egg-info/PKG-INFO
/usr/lib/python2.7/site-packages/SimpleCV-1.3-py2.7.egg-info/SOURCES.txt
/usr/lib/python2.7/site-packages/SimpleCV-1.3-py2.7.egg-info/dependency_links.txt
[...]
Or, le plus haut répertoire que ton RPM apporte est :
/usr/lib/python2.7/site-packages/SimpleCV-1.3-py2.7.egg-info/
Si je veux que mon RPM possède ce répertoire (et par récursivité tous les fichiers/rép qu'il contient) :
%{python_sitelib}/SimpleCV-1.3-py2.7.egg-info/
Du coup, ce qui suit est mieux, non ?
%{python_sitelib}/SimpleCV-1.3-py2.7.egg-info/*
%{python_sitelib}/SimpleCV/*
Sans les étoiles, ça sera parfait. Par convention on laisse un slash à la fin des rép comme repère visuel (ça permet de distinguer en un coup d'œil les fichiers des répertoires).
Vu que normalement mon paquet est le seul qui touche au fichiers dans %{python_sitelib}/SimpleCV. Par contre, je n'ai pas compris l'utilité de la commande %dir (du coup je ne l'utilise pas). D'après ce que j'ai compris, elle permet de dire le dossier m'appartient tout en ignorant les fichiers contenus dans ce dossier. Mais du coup, pourquoi faire comme ça, si juste après on ajoute tout ? On en prendrait qu'une partie des fichiers, je comprendrais, mais là…
Effectivement il y a plusieurs solutions possible :
%{python_sitelib}/SimpleCV/

est équivalent à :

%dir %{python_sitelib}/SimpleCV/
%{python_sitelib}/SimpleCV/*
Mais ça sert à rien de faire en 2 lignes ce qu'on peut faire en une seule ligne.
Petite question en passant : qu'est-ce qui se passe si on englobe trop de fichiers ? Des conflits peuvent apparaître ? On risque de supprimer les fichiers d'autres paquets ?
Ça peut générer un conflit (au niveau du gestionnaire de paquet (yum)), du fait qu'il peut y avoir des fichiers/rép sous la propriété de plusieurs paquets. Le risque étant qu'un paquet modifie/supprime des fichiers d'un autre paquet, ce comportement anarchiste porte un risque à la stabilité du système tout entier. Il est donc du devoir du packageur de contrôler les fichiers contenus dans le paquet, et les fichiers que le paquet possède (cette metadonnée est inscrite dans la rpmdb).