Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Création d'un paquet Debian et dépendance vis à vis de Python

3 réponses
Avatar
Francois Lafont
Bonjour à tous,

J'ai une question un peu technique à propos du build
d'un paquet Debian et de la gestion de la dépendance
vis à vis de Python du-dit paquet.

J'ai un paquet que j'ai toujours buildé de la même manière,
à savoir je pars d'une fresh install d'une Debian Jessie dans
une VM et j'ai un makefile que je télécharge sur la Jessie,
qui va chercher les sources du paquet via git, qui installe
toutes build-dépendances etc. et qui builde le paquet (via
un `debuild -b -us -uc --lintian-opts --pedantic -i -I` par
exemple etc).

Bref, tout ça pour dire que, globalement je n'ai jamais vraiment
changé ma façon de builder le paquet.

Ensuite, j'obtiens un paquet qui s'installe parfaitement sous
Jessie et qui s'install*ait* aussi parfaitement sous Wheezy
car les dépendances de paquets étaient telles que sous Wheezy ça
passait sans problème (ce qui était assez commode pour moi).
Seulement voilà, maintenant le paquet ne s'installe plus sous
Wheezy parce que le build me génère des dépendances qui ne
collent plus avec Wheezy. Je ne sais pas ce qui a changé
exactement du côté de Jessie mais avant j'obtenais ceci
comme dépendances :

Depends: python (>= 2.7), python (<< 2.8), python-tk, python-pil | python-imaging, libjs-jquery

Et ça passait très bien sous Jessie comme sous Wheezy, donc
c'était cool. Maintenant, j'obtiens ceci :

Depends: python, python:any (<< 2.8), python:any (>= 2.7.5-5~), python-tk, python-pil | python-imaging, libjs-jquery

Et là, déjà je vois du « python:any », d'où ça sort ce machin ?
Qu'est-ce que c'est ?

Enfin le « >= 2.7.5-5~ » fait que ça ne passe pas sur Wheezy qui
utilise la 2.7.3 (version de Python pour laquelle le paquet marche
sans problème).

Pourtant, mon fichier ./debian/control n'a pas changé (en tout
cas pas au niveau des dépendances) et il correspond à ceci (je
vire simplement les adresses mails pour éviter les spams ;)) :

----------------------------------------------------
Source: xia
Section: misc
Priority: extra
Maintainer: Francois Lafont <xxxxxxxxxx>
Uploaders: Pascal Fautrero <xxxxxxxx>, Michael Nourry <xxxxxxxxxx>
Build-Depends: devscripts,
fakeroot,
debhelper (>= 8.0.0),
quilt,
dh-python,
python,
gettext,
libjavascript-minifier-perl,
Standards-Version: 3.9.6
Homepage: http://xia.dane.ac-versailles.fr/index_en.html
XS-Python-Version: >= 2.7, << 2.8


Package: xia
Architecture: all
Depends: ${misc:Depends}, ${python:Depends},
python-tk,
python-pil | python-imaging,
libjs-jquery
Suggests: python-lxml, inkscape
Description: Convert svg to html5 interactive pictures
Tool to convert svg to html5 interactive pictures.
The package provides too an Inkscape plugin (if the
suggested packages are installed) the to use directly
Xia in the Inkscape GUI interface.
.
For more information, see the online documentation here:
http://xia.dane.ac-versailles.fr/index_en.html
----------------------------------------------------

Que s'est-il passé pour que les dépendances du paquet buildé
aient été modifiées ainsi (rendant l'installation impossible
sur Wheezy) ?

Comment puis-je modifier les sources du paquet afin que le
build me génère un paquet installable sur Wheezy aussi ?
Comment le faire de manière propre et respectueuse de la
Debian policy ? (En effet, je caresse l'espoir de faire intégrer
ce paquet dans les dépôts Debian officiels et donc il faut
que ce soit fait de manière irréprochable ;)).

J'ai bien tenté de lire la Debian Policy (c'est obligatoire
si on veut faire un paquet sans warning lors du build ;)),
mais j'avoue que pour tout ce qui touche aux histoires de
dépendances de différentes versions de Python, c'est assez
compliqué et je m'y perds un peu. J'apprécierais un peu d'aide
si c'est possible.

Si plus d'informations sont nécessaires à propos du paquet
(afin de pouvoir m'aider efficacement), alors voici où se
trouve le paquet :

http://mentors.debian.net/package/xia
http://mentors.debian.net/debian/pool/main/x/xia/xia_1.1-2.dsc

Merci pour votre aide.

--
François Lafont

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers debian-user-french-REQUEST@lists.debian.org
En cas de soucis, contactez EN ANGLAIS listmaster@lists.debian.org
Archive: https://lists.debian.org/mjcmok$g7$1@ger.gmane.org

3 réponses

Avatar
Francois Lafont
Bonjour tout le monde.

Bon, je retente discrètement un petit up de ce fil encore non résolu.
Bonne fin de week-end à tous.

François Lafont


On 18/05/2015 14:43, Francois Lafont wrote:
Bonjour à tous,

J'ai une question un peu technique à propos du build
d'un paquet Debian et de la gestion de la dépendance
vis à vis de Python du-dit paquet.

J'ai un paquet que j'ai toujours buildé de la même manière,
à savoir je pars d'une fresh install d'une Debian Jessie dans
une VM et j'ai un makefile que je télécharge sur la Jessie,
qui va chercher les sources du paquet via git, qui installe
toutes build-dépendances etc. et qui builde le paquet (via
un `debuild -b -us -uc --lintian-opts --pedantic -i -I` par
exemple etc).

Bref, tout ça pour dire que, globalement je n'ai jamais vraiment
changé ma façon de builder le paquet.

Ensuite, j'obtiens un paquet qui s'installe parfaitement sous
Jessie et qui s'install*ait* aussi parfaitement sous Wheezy
car les dépendances de paquets étaient telles que sous Wheezy ça
passait sans problème (ce qui était assez commode pour moi).
Seulement voilà, maintenant le paquet ne s'installe plus sous
Wheezy parce que le build me génère des dépendances qui ne
collent plus avec Wheezy. Je ne sais pas ce qui a changé
exactement du côté de Jessie mais avant j'obtenais ceci
comme dépendances :

Depends: python (>= 2.7), python (<< 2.8), python-tk, python-pil | python-imaging, libjs-jquery

Et ça passait très bien sous Jessie comme sous Wheezy, donc
c'était cool. Maintenant, j'obtiens ceci :

Depends: python, python:any (<< 2.8), python:any (>= 2.7.5-5~), python-tk, python-pil | python-imaging, libjs-jquery

Et là, déjà je vois du « python:any », d'où ça sort ce machin ?
Qu'est-ce que c'est ?

Enfin le « >= 2.7.5-5~ » fait que ça ne passe pas sur Wheezy qui
utilise la 2.7.3 (version de Python pour laquelle le paquet marche
sans problème).

Pourtant, mon fichier ./debian/control n'a pas changé (en tout
cas pas au niveau des dépendances) et il correspond à ceci (je
vire simplement les adresses mails pour éviter les spams ;)) :

----------------------------------------------------
Source: xia
Section: misc
Priority: extra
Maintainer: Francois Lafont <xxxxxxxxxx>
Uploaders: Pascal Fautrero <xxxxxxxx>, Michael Nourry <xxxxxxxxxx>
Build-Depends: devscripts,
fakeroot,
debhelper (>= 8.0.0),
quilt,
dh-python,
python,
gettext,
libjavascript-minifier-perl,
Standards-Version: 3.9.6
Homepage: http://xia.dane.ac-versailles.fr/index_en.html" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://xia.dane.ac-versailles.fr/index_en.html
XS-Python-Version: >= 2.7, << 2.8


Package: xia
Architecture: all
Depends: ${misc:Depends}, ${python:Depends},
python-tk,
python-pil | python-imaging,
libjs-jquery
Suggests: python-lxml, inkscape
Description: Convert svg to html5 interactive pictures
Tool to convert svg to html5 interactive pictures.
The package provides too an Inkscape plugin (if the
suggested packages are installed) the to use directly
Xia in the Inkscape GUI interface.
.
For more information, see the online documentation here:
http://xia.dane.ac-versailles.fr/index_en.html" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://xia.dane.ac-versailles.fr/index_en.html
----------------------------------------------------

Que s'est-il passé pour que les dépendances du paquet buildé
aient été modifiées ainsi (rendant l'installation impossible
sur Wheezy) ?

Comment puis-je modifier les sources du paquet afin que le
build me génère un paquet installable sur Wheezy aussi ?
Comment le faire de manière propre et respectueuse de la
Debian policy ? (En effet, je caresse l'espoir de faire intégrer
ce paquet dans les dépôts Debian officiels et donc il faut
que ce soit fait de manière irréprochable ;)).

J'ai bien tenté de lire la Debian Policy (c'est obligatoire
si on veut faire un paquet sans warning lors du build ;)),
mais j'avoue que pour tout ce qui touche aux histoires de
dépendances de différentes versions de Python, c'est assez
compliqué et je m'y perds un peu. J'apprécierais un peu d'aide
si c'est possible.

Si plus d'informations sont nécessaires à propos du paquet
(afin de pouvoir m'aider efficacement), alors voici où se
trouve le paquet :

http://mentors.debian.net/package/xia
http://mentors.debian.net/debian/pool/main/x/xia/xia_1.1-2.dsc

Merci pour votre aide.





--
François Lafont

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: https://lists.debian.org/mmpbft$71f$
Avatar
valentin OVD
Hello,

Le 28 juin 2015 à 19:39, "Francois Lafont" a écrit :

Bonjour tout le monde.

Bon, je retente discrètement un petit up de ce fil encore non résolu.
Bonne fin de week-end à tous.

François Lafont


On 18/05/2015 14:43, Francois Lafont wrote:
Bonjour à tous,

J'ai une question un peu technique à propos du build
d'un paquet Debian et de la gestion de la dépendance
vis à vis de Python du-dit paquet.

J'ai un paquet que j'ai toujours buildé de la même manière,
à savoir je pars d'une fresh install d'une Debian Jessie dans
une VM et j'ai un makefile que je télécharge sur la Jessie,
qui va chercher les sources du paquet via git, qui installe
toutes build-dépendances etc. et qui builde le paquet (via
un `debuild -b -us -uc --lintian-opts --pedantic -i -I` par
exemple etc).




Je crois me souvenir qu'un paquet source debian d'après la policy doit pouvoir se compiler hors ligne sans accès a un truc extérieur. Après c'est différent si c'est un système de snapshot qui copie un snapshot du git dans un paquet source. (J'aurais p-têtre du regarder le paquet avant de faire un commentaire sur cela).

Bref, tout ça pour dire que, globalement je n'ai jamais vraiment
changé ma façon de builder le paquet.

Ensuite, j'obtiens un paquet qui s'installe parfaitement sous
Jessie et qui s'install*ait* aussi parfaitement sous Wheezy
car les dépendances de paquets étaient telles que sous Wheezy ça
passait sans problème (ce qui était assez commode pour moi).
Seulement voilà, maintenant le paquet ne s'installe plus sous
Wheezy parce que le build me génère des dépendances qui ne
collent plus avec Wheezy. Je ne sais pas ce qui a changé
exactement du côté de Jessie mais avant j'obtenais ceci
comme dépendances :

Depends: python (>= 2.7), python (<< 2.8), python-tk, python-pil | python-imaging, libjs-jquery

Et ça passait très bien sous Jessie comme sous Wheezy, donc
c'était cool. Maintenant, j'obtiens ceci :

Depends: python, python:any (<< 2.8), python:any (>= 2.7.5-5~), python-tk, python-pil | python-imaging, libjs-jquery

Et là, déjà je vois du « python:any », d'où ça sort ce machin ?
Qu'est-ce que c'est ?




Any signifie toutes les architectures.
Enfin le « >= 2.7.5-5~ » fait que ça ne passe pas sur Wheezy qui
utilise la 2.7.3 (version de Python pour laquelle le paquet marche
sans problème).

Pourtant, mon fichier ./debian/control n'a pas changé (en tout
cas pas au niveau des dépendances) et il correspond à ceci (je
vire simplement les adresses mails pour éviter les spams ;)) :

----------------------------------------------------
Source: xia
Section: misc
Priority: extra
Maintainer: Francois Lafont <xxxxxxxxxx>
Uploaders: Pascal Fautrero <xxxxxxxx>, Michael Nourry <xxxxxxxxxx>
Build-Depends: devscripts,
fakeroot,
debhelper (>= 8.0.0),
quilt,
dh-python,
python,
gettext,
libjavascript-minifier-perl,
Standards-Version: 3.9.6
Homepage: http://xia.dane.ac-versailles.fr/index_en.html" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://xia.dane.ac-versailles.fr/index_en.html
XS-Python-Version: >= 2.7, << 2.8


Package: xia
Architecture: all
Depends: ${misc:Depends}, ${python:Depends},
python-tk,
python-pil | python-imaging,
libjs-jquery
Suggests: python-lxml, inkscape
Description: Convert svg to html5 interactive pictures
Tool to convert svg to html5 interactive pictures.
The package provides too an Inkscape plugin (if the
suggested packages are installed) the to use directly
Xia in the Inkscape GUI interface.
.
For more information, see the online documentation here:
http://xia.dane.ac-versailles.fr/index_en.html" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://xia.dane.ac-versailles.fr/index_en.html
----------------------------------------------------

Que s'est-il passé pour que les dépendances du paquet buildé
aient été modifiées ainsi (rendant l'installation impossible
sur Wheezy) ?




Le fautif doit être ${python:Depends}.

Comment puis-je modifier les sources du paquet afin que le
build me génère un paquet installable sur Wheezy aussi ?




Methode 1 : En précisant manuellement les dépendances python ou Methode 2 : de rebuild le paquet sous wheezy.
Comment le faire de manière propre et respectueuse de la
Debian policy ? (En effet, je caresse l'espoir de faire intégrer
ce paquet dans les dépôts Debian officiels et donc il faut
que ce soit fait de manière irréprochable ;)).




Avec la deuxième méthode. Et checker avec le magnifique lintian si il n'y a pas d'autre problèmes. Je rappel aussi que ton paquet ne pourra malheureusement pas être intégré à Jessie ou Wheezy.
J'ai bien tenté de lire la Debian Policy (c'est obligatoire
si on veut faire un paquet sans warning lors du build ;)),
mais j'avoue que pour tout ce qui touche aux histoires de
dépendances de différentes versions de Python, c'est assez
compliqué et je m'y perds un peu. J'apprécierais un peu d'aide
si c'est possible.

Si plus d'informations sont nécessaires à propos du paquet
(afin de pouvoir m'aider efficacement), alors voici où se
trouve le paquet :

http://mentors.debian.net/package/xia
http://mentors.debian.net/debian/pool/main/x/xia/xia_1.1-2.dsc




J'espère avoir pu apporter de l'aide.
J'espère aussi ne pas avoir était trop rude, c'est la fatigue qui commence à se sentir :-)

Merci pour votre aide.




--
François Lafont

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: https://lists.debian.org/mmpbft$71f$

Avatar
Francois Lafont
Bonjour, :)

On 29/06/2015 03:55, valentin OVD wrote:

Je crois me souvenir qu'un paquet source debian d'après la policy doit pouvoir se compiler hors ligne sans accès a un truc extérieur.



Oui, absolument... Enfin, ils disposent tout de même *en* *local*
des sources du paquet (forcément) et aussi d'un dépôt Debian pour
pouvoir installer les dépendances.

Personnellement, je ne dispose pas de toute l'infra de build de
Debian alors, dans mon cas, j'ai une petite VM Jessie isssue d'une
« fresh install », je télécharge via git les sources du paquet (pas
trop le choix) et j'installe les build-dépendances du paquet via
Internet (pas trop le choix n'ont plus n'ayant pas de miroir Debian
sur mon réseau local). Et enfin, il y a le build. Et là, effectivement,
si durant le build il y a le moindre accès à Internet, c'est très
mal. Ce n'est pas le cas avec mon paquet donc tout va bien. ;)

J'ai déjà été en contact avec un ftpmaster qui m'a indiqué que le
paquet était Ok. J'avais juste fait une chose qui le lui plaisait
pas (et qui a été la raison d'un rejet dans un premier temps) :
j'avais scindé le paquet source en 2 paquets binaires car ça me
semblait plus logique (un paquet pour l'outil en lui-même et un
autre pour le plugin Inkscape wrapper de l'outil en question). Mais
étant donné que les paquets étaient tout petits (en taille), le
ftpmaster a estimé que c'était mieux d'avoir un seul paquet binaire
issu du paquet source. Pour le reste ça semblait ok. Actuellement,
j'attends confirmation.

Après c'est différent si c'est un système de snapshot qui copie un snapshot du git dans un paquet source. (J'aurais p-têtre du regarder le paquet avant de faire un commentaire sur cela).



[...]

Depends: python, python:any (<< 2.8), python:any (>= 2.7.5-5~), python-tk, python-pil | python-imaging, libjs-jquery

Et là, déjà je vois du « python:any », d'où ça sort ce machin ?
Qu'est-ce que c'est ?




Any signifie toutes les architectures.



Oui, et cette chaîne, issue de la substitution de « ${python:Depends} »
dans le fichier "control" est apparue en cours de route sur Jessie.
Lors de mes premiers builds sur Jessie, elle n'apparaissait pas. Et
de plus, cette chaîne n'est pas comprise par une Wheezy lors d'une
installation, hélas.

Le fautif doit être ${python:Depends}.



Oui, j'avais bien vu cela. Ceci étant, je dirais plutôt que « le fautif »
c'est une màj sur Jessie (j'ignore laquelle) qui a fait que cette variable
a été du jour du lendemain remplacée par une chaîne qu'une Wheezy ne sait
pas interpréter correctement.

Après, je mets « le fautif » avec des guillemets car je ne sais pas si
on peut faire le reproche à Debian qu'un paquet buildé sur Jessie ne
soit plus compatible Wheezy. Je constate simplement que dans le cas de
mon paquet, le build sur Jessie me donnait un paquet compatible Wheezy
sans avoir à faire quoi que ce soit et que suite à une màj sur Jessie
ça n'a plus été le cas.

Methode 1 : En précisant manuellement les dépendances python



Alors, c'est pour l'instant la méthode que globalement j'utilise.
Pour le paquet que je propose à Debian, j'ai bien sûr laissé la
variable ${python:Depends} mais ensuite, pour le paquet que je
builde et que je dépose sur notre dépôt, j'ai mis manuellement
la ligne de dépendances python compatible Wheezy *et* Jessie.
Mais je trouve que ce n'est pas super satisfaisant comme méthode.

ou Methode 2 : de rebuild le paquet sous wheezy.



Oui, c'est une autre possibilité. Comme je préfère avoir un seul
paquet qui marche pour Wheezy et Jessie, j'ai opté pour la méthode
1.

Comment le faire de manière propre et respectueuse de la
Debian policy ? (En effet, je caresse l'espoir de faire intégrer
ce paquet dans les dépôts Debian officiels et donc il faut
que ce soit fait de manière irréprochable ;)).




Avec la deuxième méthode.



Ok.

Et checker avec le magnifique lintian si il n'y a pas d'autre problèmes.



J'utilise lintian et il m'a fallu un certain temps avant de n'avoir plus
aucun warning. ;) Ceci étant, c'est du coup super formateur.

Je rappel aussi que ton paquet ne pourra malheureusement pas être intégré à Jessie ou Wheezy.



Oui, tout à fait. Je le savais dès le départ. En fait, il y a d'un côté
le paquet que je propose à Debian. Pour celui-là je laisse les sources
du paquet en l'état et son build donnera très probablement un paquet binaire
qui ne sera pas installable sur Wheezy mais dans ce cas je m'en fiche vu
que le paquet ne sera de toute façon pas dispo sur Wheezy (et sur Jessie
aussi). Mais il y aussi le paquet que je propose sur notre dépôt « maison »,
et celui-là je souhaite qu'il soit installable sur Wheezy et sur Jessie (et
si possible de manière élégante par rapport à mon souci avec la variable
${python:Depends}).

J'espère avoir pu apporter de l'aide.



Oui dans le sens où tu me confortes dans le choix que j'ai fait et dans
l'idée que mon problème ne semble possible à résoudre d'une manière qui
puisse me satisfaire à 100%.

J'espère aussi ne pas avoir était trop rude, c'est la fatigue qui commence à se sentir :-)



Non, non, je n'ai absolument pas ressenti ça dans ta réponse. Pas
de souci. Merci de ton aide.

--
François Lafont

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: https://lists.debian.org/