Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
projets:ecole:paquets:packaging_cas_particuliers [Le 18/05/2007, 00:25]
_Enchained reformulation - part2
projets:ecole:paquets:packaging_cas_particuliers [Le 11/09/2022, 13:17] (Version actuelle)
moths-art Suppression des espaces en fin de ligne (détecté et corrigé via le bot wiki-corrector (https://forum.ubuntu-fr.org/viewtopic.php?id=2067892)
Ligne 1: Ligne 1:
-Article mis en forme par ptitdav69 suite à la séance de formation organisée par  [[utilisateurs:​gloubiboulga|gpocentek]] le 17 mai 2007 sur le canal IRC #ubuntu-fr-classroom. Encore merci à lui pour ses excellents cours.+{{tag>​paquet programmation}} 
 + 
 +----
  
 ====== Cas particuliers d'​empaquetage ====== ====== Cas particuliers d'​empaquetage ======
 +
 +//Cette page est le compte-rendu de la session classroom organisée par  [[:​utilisateurs:​gloubiboulga|gpocentek]] le 17 mai 2007 sur le canal IRC #​ubuntu-fr-classroom.//​
 +
 Dans ce cours, nous verrons : Dans ce cours, nous verrons :
   * logiciels ne nécessitant pas de compilation   * logiciels ne nécessitant pas de compilation
Ligne 12: Ligne 17:
 Pour suivre ce cours, vous devez connaître les bases du packaging avec [[:​tutoriel:​creer_un_paquet|debhelper]] et [[:​projets:​paquets:​creer_un_paquet_avec_cdbs|cdbs]]. Nous ne reviendrons donc pas sur ce qui a été vu dans les sessions précédentes sauf sur le fichier ''​debian/​rules''​. Pour suivre ce cours, vous devez connaître les bases du packaging avec [[:​tutoriel:​creer_un_paquet|debhelper]] et [[:​projets:​paquets:​creer_un_paquet_avec_cdbs|cdbs]]. Nous ne reviendrons donc pas sur ce qui a été vu dans les sessions précédentes sauf sur le fichier ''​debian/​rules''​.
  
-{{:​icons:​iconnote.png }} +<note help> 
->**Petit rappel sur le fichier debian/​rules** +**Petit rappel sur le fichier debian/​rules**\\ 
->Le fichier //​debian/​rules//​ est le script (un Makefile) qui permet de construire le paquet. Même si la plupart du temps il passe par une étape de compilation des sources, ce n'est pas une nécessité. Si le logiciel que vous empaquetez n'a pas besoin d'​être compilé, vous n'avez pas besoin que le debian/​rules ne compile quelque chose. C'est le cas pour un script bash, ou pour un programme python par exemple. +Le fichier //​debian/​rules//​ est le script (un Makefile) qui permet de construire le paquet. Même si la plupart du temps il passe par une étape de compilation des sources, ce n'est pas une nécessité. Si le logiciel que vous empaquetez n'a pas besoin d'​être compilé, vous n'avez pas besoin que le debian/​rules ne compile quelque chose. C'est le cas pour un script bash, ou pour un programme python par exemple. 
-> + 
->Le but de ce fichier est en fait d'​installer les fichiers du logiciel dans ''​**debian/​paquet**''​. Par exemple, si vous récupérez sur Internet un script ''​**foo.sh**'', ​ il suffit de copier ce fichier dans ''​**debian/​foo/​usr/​bin/​**''​ pour créer le paquet.+Le but de ce fichier est en fait d'​installer les fichiers du logiciel dans ''​**debian/​paquet**''​. Par exemple, si vous récupérez sur Internet un script ''​**foo.sh**'', ​ il suffit de copier ce fichier dans ''​**debian/​foo/​usr/​bin/​**''​ pour créer le paquet. 
 +</​note>​
  
 ===== Empaqueter un paquet ne nécessitant pas de compilation ===== ===== Empaqueter un paquet ne nécessitant pas de compilation =====
 Tout d'​abord,​ créez un répertoire propre (''​~/​packaging/​classroom''​ par exemple) pour éviter les soucis, placez-vous dedans et récupérez l'​archive suivante : Tout d'​abord,​ créez un répertoire propre (''​~/​packaging/​classroom''​ par exemple) pour éviter les soucis, placez-vous dedans et récupérez l'​archive suivante :
-  wget http://​gauvain.tuxfamily.org/school/​2007-05-17/​packages/​u-script.tar.gz+  wget http://​gauvain.pocentek.net/u-classroom/​2007-05-17/​packages/​u-script.tar.gz
   tar xvf u-script.tar.gz   tar xvf u-script.tar.gz
  
Ligne 37: Ligne 43:
   * d'​installer //​debian/​u-classroom//​ (qui est un wrapper) dans **/​usr/​bin**   * d'​installer //​debian/​u-classroom//​ (qui est un wrapper) dans **/​usr/​bin**
  
-{{:​icons:​iconnote.png }} +<note help>A quoi sert un **wrapper** :\\ 
->A quoi sert un **wrapper** : +Dans le cadre de ce cours, cela ne sert pas à grand chose mais pour beaucoup de script, le script doit être dans le même dossier que les données ce qui signifie l'​installer dans "​**/​usr/​share/<​paquet>​** avec les images ou autre.\\ 
->Dans le cadre de ce cours, cela ne sert pas à grand chose mais pour beaucoup de script, le script doit être dans le même dossier que les données ce qui signifie l'​installer dans "​**/​usr/​share/<​paquet>​** avec les images ou autre. +Dans ce cas, le script n'est pas directement accessible puisqu'​il n'est pas placé dans **/​usr/​bin**. Le wrapper sert juste d'​intermédiaire entre le script original installé ou il faut et "​l'​interface utilisateur"​ (i.e. lancement du script facilement en console) 
->Dans ce cas, le script n'est pas directement accessible puisqu'​il n'est pas placé dans **/​usr/​bin**. Le wrapper sert juste d'​intermédiaire entre le script original installé ou il faut et "​l'​interface utilisateur"​ (i.e. lancement du script facilement en console)+</​note>​
  
 **Comment installer ces 2 fichiers ?**\\ **Comment installer ces 2 fichiers ?**\\
Ligne 77: Ligne 83:
 Le paquet est mis à jour :) Le paquet est mis à jour :)
  
-{{:​utilisateurs:​enchained:​icones:​stop?​40 }} +<note important>​ 
->**ATTENTION**,​ //uupdate// n'est pas une formule magique ! +**ATTENTION**,​ //uupdate// n'est pas une formule magique !\\ 
->Tout est à revérifier pour une nouvelle version d'un paquet : vérifier que la licence n'a pas changé, que des fichiers n'ont pas été ajoutés...+Tout est à revérifier pour une nouvelle version d'un paquet : vérifier que la licence n'a pas changé, que des fichiers n'ont pas été ajoutés... 
 +</​note>​
  
-{{:​icons:​iconnote.png }} +==== Précisions sur le fichier ''​debian/​watch'' ​==== 
->**Précisions sur le fichier ''​debian/​watch'' ​:** + 
->Il est composé de 2 lignes : +Il est composé de 2 lignes : 
-><​file>​version=3</​file>​ +<​file>​version=3</​file>​ 
->qui doit toujours être à cette valeur, et +qui doit toujours être à cette valeur, et 
-><​file>​http://​gauvain.tuxfamily.org/school/​2007-05-17/​archive/​u-script-(.*)\.tar\.gz+<​file>​http://​gauvain.pocentek.net/u-classroom/​2007-05-17/​archive/​u-script-(.*)\.tar\.gz
 </​file>​ </​file>​
->Le répertoire où se trouvent les sources est donc **http://​gauvain.tuxfamily.org/school/​2007-05-17/​archive** et+Le répertoire où se trouvent les sources est donc **http://​gauvain.pocentek.net/u-classroom/​2007-05-17/​archive** et
 la fin de la ligne est une expression régulière qui laisse le choix pour la version. Les '​**.**'​ dans les regexp sont des caractères particuliers donc ils doivent être "​échappés"​ d'où le '​**\**'​ devant. la fin de la ligne est une expression régulière qui laisse le choix pour la version. Les '​**.**'​ dans les regexp sont des caractères particuliers donc ils doivent être "​échappés"​ d'où le '​**\**'​ devant.
  
Ligne 96: Ligne 103:
 ===== Empaqueter un logiciel en Python ===== ===== Empaqueter un logiciel en Python =====
  
-En fait, empaqueter du python c'est comme empaqueter n'​importe quoi mais il y a quelques règles à respecter : la fameuse [[http://wiki.debian.org/​DebianPython/NewPolicy|Python Policy]]. +En fait, empaqueter du python c'est comme empaqueter n'​importe quoi mais il y a quelques règles à respecter : la fameuse [[http://www.debian.org/​doc/​packaging-manuals/​python-policy/|Python Policy]]. 
-Pour suivre ce cours, ​récupérer ​l'​archive suivante : + 
-<​code>​ +Pour suivre ce cours, ​récupérez ​l'​archive suivante : 
-wget http://​gauvain.tuxfamily.org/school/​2007-05-17/​packages/​pyhw.tar.gz +  wget http://​gauvain.pocentek.net/u-classroom/​2007-05-17/​packages/​pyhw.tar.gz 
-</​code>​ + 
-Il y a 4 versions du même paquet dans ce paquet source et nous allons commencer avec la version 1, pour cela : +Il y a 4 versions du même paquet dans ce paquet source et nous allons commencer avec la version 1.\\ 
-<​code>​ +Pour cela : 
-tar zxvf pyhw.tar.gz +  tar zxvf pyhw.tar.gz 
-cd pyhw/v1 +  cd pyhw/v1 
-dpkg-source -x *dsc +  dpkg-source -x *dsc 
-</code>+ 
 +Tout va se passer dans les fichiers ​//control//, //rules// et //​pycompat//​. 
 + 
 +==== pycompat ====
  
-Donc tout va se passer dans les fichiers //​control//,​ //rules// et //​pycompat//​. 
 Le fichier //​debian/​pycompat//​ contient juste "​2",​ tout comme //​debian/​compat//​ contient "​5"​. Ceci est juste une indication de compatibilité. Le fichier //​debian/​pycompat//​ contient juste "​2",​ tout comme //​debian/​compat//​ contient "​5"​. Ceci est juste une indication de compatibilité.
  
-Pour ce qui concerne le fichier //debian/control//, c'est un peu plus "​compliqué"​. Nous allons construire un module public (module python) et nous allons avoir besoin de python-dev et de python-central pour construire le paquet. +==== control ​====
-Ces deux dépendancess n'ont rien à voir avec les sources, c'est vraiment propre au packaging. +
-C'est pour cela, en simplifiant,​ qu'​elles sont listées dans **Build-Depends-Indep**.+
  
-La ligne "​**XS-Python-Version:​ current**" ​permet de dire que l'on construit ce module pour la version courante de python, c'est à dire 2.5 depuis feisty.+Pour ce qui concerne le fichier //​debian/​control//,​ c'est un peu plus "compliqué"​. Nous allons construire un module publique (module python) et nous allons avoir besoin des paquets **python-dev** et **python-central** pour construire le paquet. Il faut donc qu'ils soient [[:​tutoriel:​comment_installer_un_paquet|installés]] sur votre système. 
 + 
 +Ces deux dépendances n'ont rien à voir avec les sources, c'est vraiment propre au packaging avec Python. 
 + 
 +C'est pour cela (en simplifiant) qu'​elles sont listées dans **Build-Depends-Indep**. 
 + 
 +**XS-Python-Version:​ current** permet de dire que l'on construit ce module pour la version courante de python, c'est à dire la version ​2.5 depuis feisty.
  
 **XB-Python-Version:​ ${python:​Versions}** est un champ qui va être utilisé pour savoir avec quelle(s) version(s) de python va être compatible le paquet binaire. **XB-Python-Version:​ ${python:​Versions}** est un champ qui va être utilisé pour savoir avec quelle(s) version(s) de python va être compatible le paquet binaire.
Ligne 121: Ligne 134:
 **Depends: ${python:​Depends}** permet de calculer les dépendances python (en incluant la version) et pycentral. **Depends: ${python:​Depends}** permet de calculer les dépendances python (en incluant la version) et pycentral.
  
-**ATTENTION** : python:​Depends ne calcule pas tout (pas comme shlibs:​Depends). Si votre paquet a besoin de python-gtk2,​ il faudra l'​ajouter.+<​note>​ 
 +**python:​Depends** ne calcule pas tout (pas comme **shlibs:​Depends** dans les paquets "​courants"​). Si votre paquet a besoin de **python-gtk2** (par exemple), il faudra l'​ajouter. 
 +</​note>​
  
-**${python:​Provides}** : Dans notre exemple, cela ne sert à rien car que notre paquet est arch: all mais pour les modules privés de python (des .so), cela permet de définir des paquets virtuels. +**${python:​Provides}** : Dans notre exemple, cela ne sert à rien car notre paquet est **arch: all** (fonctionnel pour toutes les architectures) ​mais pour les modules privés de python (des .so), cela permet de définir des paquets virtuels.\\ 
-Par exemple si le module est compatible python 2.4 et 2.5 nous obtiendrons Provides: python2.4-foopython2.5-foo. L'​utilisateur pourra utiliser ces paquets virtuels comme n'​importe quel autre paquet.+Par exemple si le module est compatible python 2.4 et 2.5 nous obtiendrons Provides: ​**python2.4-foo** et **python2.5-foo**. L'​utilisateur pourra utiliser ces paquets virtuels comme n'​importe quel autre paquet. 
 + 
 +Essayons maintenant de compiler le paquet ([[:​tutoriel:​comment_installer_un_paquet|installez les paquets]] **python-dev python-central** si nécessaire) : 
 + 
 +  cd pyhw-1.0 
 +  debuild -us -uc
  
-Essayons maintenant de compiler le paquet (Installer les python-dev python-central si nécessaire) : 
-<​code>​ 
-cd pyhw-1.0 
-debuild -us -uc 
-</​code>​ 
 Nous obtiendrons une erreur : Nous obtiendrons une erreur :
-<code> +<file>​install:​ ne peut créer le répertoire `/​usr/​lib/​python2.4/​site-packages/​HelloWorld':​ Permission non accordée 
-install: ne peut créer le répertoire `/​usr/​lib/​python2.4/​site-packages/​HelloWorld':​ Permission non accordée +</file>
-</code>+
  
-Et cela est tout à fait normal et éditer ​le Makefile pour comprendre. +Le problème se situe dans le Makefile. Ouvrez ce fichier ​pour comprendre ​pourquoiVous voyez alors :\\ 
-Nous avons "install -d /​usr/​lib/​python2.4/​site-packages/​HelloWorld" ​qui permet de créer un dossier mais "/​usr/​lib/​python2.4/​site-packages/​HelloWorld" ​est inaccessible puisque nous ne sommes pas "​root"​ et nous essayons de créer le dossier dans "debian/​python-helloworld"...+<​file>​ 
 +install -d /​usr/​lib/​python2.4/​site-packages/​HelloWorld</​file>​ 
 +qui permet de créer un dossier mais ///​usr/​lib/​python2.4/​site-packages/​HelloWorld// est inaccessible puisque nous ne sommes pas "​root"​ et nous essayons de créer le dossier dans //debian/​python-helloworld//...
  
-Cela ne peut pas marcher et l'​astuce sera de modifier le Makefile pour utiliser ​"$(DESTDIR)/​usr/​lib/​python2.4/​site-packages/​HelloWorld" ​(où DESTDIR sera en fait debian/​python-helloworld).+Cela ne peut pas marcher et il faudra donc modifier le Makefile pour utiliser ​**$(DESTDIR)/​usr/​lib/​python2.4/​site-packages/​HelloWorld** (où DESTDIR sera en fait **debian/​python-helloworld**).
  
 +Comme tout bon packageur, vous savez qu'il __ne faut pas modifier les sources__ de upstream. Nous allons donc **patcher** le Makefile...
  
 ===== Patcher des sources ===== ===== Patcher des sources =====
  
-==== Avec la méthode ​Debhelper ====+==== Paquet utilisant ​Debhelper ====
  
-Nous venons de voir ci-dessus qu'il était nécessaire de patcher le //​Makefile//​ (et non modifier directement le fichier) et pour cela nous allons utiliser la v2 du paquet pyhw précedement ​téléchargé : +Nous venons de voir ci-dessus qu'il était nécessaire de patcher le //​Makefile//​ (et non modifier directement le fichier) et pour cela nous allons utiliser la v2 du paquet pyhw précédemment ​téléchargé : 
-<​code>​ +  cd pyhw/v2 && dpkg-source -x *.dsc
-cd pyhw/v2 && dpkg-source -x *.dsc +
-</​code>​+
  
-Regarder ensuite dans le dossier ​//debian///, nous avons un dossier ​//patches/// qui contient ​les patches déjà faits (//01-makefile.dpatch//) et //00list//, qui est en fait la liste des patchs ​à appliquer. On utilise ici '//​dpatch//'​ comme système de patch.+Dans le dossier ​**debian**, nous avons un dossier ​**patches** qui contient ​le patch **01-makefile.dpatch** et le fichier **00list**, qui est en fait la liste des patches ​à appliquer.
  
-Regarder maintenant le fichier debian/​rules ​qui contient : +On utilise ici **dpatch** comme système de patch. 
-<code>+ 
 +Le fichier ​**debian/​rules** contient : 
 +<file>
 # Include dpatch stuff. # Include dpatch stuff.
 include /​usr/​share/​dpatch/​dpatch.make include /​usr/​share/​dpatch/​dpatch.make
-</code>+</file> 
 + 
 +Ceci permet d'​inclure des règles toute faites qui automatisent le "​patchage/​dépatchage"​. 
 + 
 +Bien sûr, le paquet **dpatch** doit être [[:​tutoriel:​comment_installer_un_paquet|installé]] sur votre système. 
 + 
 +Pour la cible ''​**build:​**''​ on ajoute **patch** et **unpatch** pour la cible ''​**clean :​**'',​ de façon à patcher les sources avant la compilation/​installation et remettre les sources en l'​état après la construction du paquet source.
  
-Nous ajoutons cela pour inclure des règles toute faites qui automatisent ​le "​patchage/dépatchage"​.+<note important>​Si dans le **debian/rules** il y a une cible ''​**configure:​**'',​ c'est là qu'il faudra appliquer **patch**.</​note>​
  
-Pour la cible "​build:​ " on ajoute "​patch"​ et pour la cible "clean :" unpatch.+Maintenant que vous savez appliquer les patches, voyons comment en créer !
  
-__Précision__ : Si dans le debian/rules il y a une cible "​configure"​ c'est là qu'il faudra appliquer "​patch"​.+Pour ce faire, nous allons repartir de zéro, et supprimer le patch déja présent ​dans le paquet : 
 +  rm debian/patches/*
  
-Il faut maintenant effectuer le plus dur : le patch proprement dit ! +Pour créer un patch, il existe un outil très pratique: ​''​dpatch-edit-patch''​
-Pour ce faire, nous allons repartir de zéro : +
-<​code>​ +
-rm debian/​patches/​* +
-</​code>​ +
-Pour créer un patch, il existe un outil très pratique: ​//dpatch-edit-patch// (Vérifier que le paquet dpatch est installé sur votre système).+
  
 Exécuter la commande suivant pour créer le patch : Exécuter la commande suivant pour créer le patch :
-<​code>​ +  ​dpatch-edit-patch 01-makefile
-dpatch-edit-patch 01-makefile +
-</​code>​+
  
-Nous nous retrouvons dans un __nouveau shell__. +<note tip> 
-Les patchs sont appliqués dans l'​ordre alphabétique ​quand il y en a plusieurs. Commencer leur nom par un chiffre permet de savoir dans quel ordre ils seront appliqués ​(lorsque ​l'on se retrouve avec 15-20 patchs, c'est assez pratique). C'est le même principe que le rc.d.+Quand il y a plusieurs ​patchs, ils sont appliqués dans l'​ordre alphabétique.\\ 
 +Commencer leur nom par un chiffre permet de savoir dans quel ordre ils seront appliqués. Lorsque ​l'on se retrouve avec 15-20 patches, c'est assez pratique.
  
-Dans le nouveau shell, faire les modifications, ​c'est à dire ajout du $(DESTDIRdans le //Makefile// : +le nom du patch est arbitraire. Ici nous nommons le patch **01-makefile** car c'​est ​le premier patch crée (à appliqueret qu'il agit sur le Makefile... 
-<​code>​ +</note>
-        install -d $(DESTDIR)/​usr/​lib/​python2.4/​site-packages/​HelloWorld +
-devient install -m 644 src/*py $(DESTDIR)/​usr/​lib/​python2.4/​site-packages/​HelloWorld/​ +
-</code>+
  
-Taper '//​exit 0//' lorsque c'est terminé.+Nous nous retrouvons dans un **nouveau shell**.
  
-Il ne reste plus qu'​à ​créer un fichier ​//00list// dans //debian/patches//. Dans le fichier ​//00list//, il faut ajouter ​la ligne "​01-makefile" (sans les guillemets).+Faites alors les modifications voulues, c'est à dire ajoutez **$(DESTDIR)** dans le //Makefile//, ce qui donne : 
 +<​file>​ 
 +install -d $(DESTDIR)/usr/lib/python2.4/site-packages/HelloWorld 
 +install -m 644 src/*py $(DESTDIR)/​usr/​lib/​python2.4/site-packages/HelloWorld/ 
 +</file> 
 + 
 +Enregistrez le fichierpuis lorsque ​la modification pour ce patch est terminée, tapez : 
 +  exit 0 
 +pour quitter le shell "spécial"​ et revenir à votre shell habituel. 
 + 
 +Vous pouvez vérifier le contenu de **debian/​patches** et vous y trouverez le patch **01-makefile** qui vient d'​être crée. 
 + 
 +Il ne reste plus qu'à [[:​tutoriel:​comment_editer_un_fichier|créer un fichier]] **debian/​patches/​00list** qui contient la liste des patches à appliquer. Le contenu sera alors ici : 
 +<​file>​01-makefile</​file>​ 
 + 
 +Vous venez de patcher le makefile :) 
 + 
 +Vous pouvez ensuite construire le paquet source : 
 +  debuild -us -uc
  
-Nous pouvons ensuite compiler le paquet avec : +Un Warning ​apparaîtra, nous reviendrons dessus plus bas : 
-<​code>​ +<file>
-debuild -us -uc +
-</​code>​ +
-Un Warning ​apparaitra, nous reviendrons dessus plus bas :  +
-<code>+
 W: python-helloworld:​ script-not-executable W: python-helloworld:​ script-not-executable
 ./​usr/​share/​pycentral/​python-helloworld/​site-packages/​HelloWorld/​HelloWorld.py ./​usr/​share/​pycentral/​python-helloworld/​site-packages/​HelloWorld/​HelloWorld.py
-</code> +</file>
-Pour voir le travail et le résultat de pycentral, lancer : +
-<​code>​ +
-dpkg -f *deb +
-</code>+
  
-Au départ, dans le //​Makefile//​, il installait dans "/​usr/​lib/​python2.4" ​et au final le script //​HelloWorld.py//​ se trouvera dans "/​usr/​share/​pycentral/​python-helloworld/​site-packages/​HelloWorld/​".+En lançant la commande 
 +  dpkg -f *deb 
 +vous verrez que pycentral a correctement remplacé les dépendances par les paquets appropriés :\\ 
 +Le //​Makefile//​ installait dans **/​usr/​lib/​python2.4** et au final le script //​HelloWorld.py//​ se trouvera dans **/​usr/​share/​pycentral/​python-helloworld/​site-packages/​HelloWorld/​**.
  
-C'est donc //python-central// qui a complètement géré les problèmes de version de python (Depends: python, python-central (>= 0.5.8)).+**Python-central** donc complètement géré les problèmes de version de python (Depends: python, python-central (>= 0.5.8)).
  
-==== Avec la méthode ​CDBS ====+==== Paquet utilisant ​CDBS ====
  
-Nous allons passer directement à la version 4 du paquet pyhw (la v3 étant la même que la 2 mais version cdbs)+Nous allons passer directement à la version 4 de notre paquet ​**pyhw** (la v3 étant la même que la 2 mais version cdbs)
  
-<​code>​ +  ​cd pyhw/v4 && dpkg-source -x *.dsc
-cd pyhw/v4 && dpkg-source -x *.dsc +
-</​code>​+
  
-Aller ensuite dans "debian/​patches", le fichier ​//00list// a disparu, et les extensions des patchs sont 'patch', et non plus 'dpatch' ​(cdbs peut gérer n'​importe quelle extension mais c'est '​patch'​ par défaut). +Dans **debian/​patches**, le fichier ​**00list** a disparu, et les extensions des patchs sont **.patch**, et non plus **.dpatch** (cdbs peut gérer n'​importe quelle extension mais c'est '​patch'​ par défaut). 
-Regardons maintenant le fichier ​//rules// + 
-<code>+Le fichier ​**debian/rules** contient la ligne : 
 +<file>
 include /​usr/​share/​cdbs/​1/​rules/​simple-patchsys.mk include /​usr/​share/​cdbs/​1/​rules/​simple-patchsys.mk
-</code+</file
-Cette ligne permet d'inclure tout le système de patch et tout fichier avec extension .patch ​dans "debian/​patches" sera appliqué.+qui sert à inclure tout le système de patch de CDBS qui traitera tous fichier avec extension .patch ​du répertoire **debian/​patches**. 
 + 
 +Nous allons refaire le 2ème patch du paquet. Celui-ci corrigera le //Warning// que nous avons eu plus haut. 
 + 
 +Supprimer donc le fichier **debian/​patches/​02-shebang.patch** et exécutez : 
 +  cdbs-edit-patch 02-shebang 
 + 
 +Ce //Warning// est assez courant avec tous les scripts et les modules python sont pas destinés à être exécutés et donc le shebang (#​!/​usr/​bin/​env python) n'a pas à sa place ici. 
 + 
 +Il faut donc supprimer la première ligne du fichier **src/​HelloWorld.py** 
 + 
 +Une fois la modification effectuée, tapez 
 +  exit 0 
 +pour quitter cdbs-edit-patch. 
 + 
 +Votre patch est créé.
  
-Nous allons refaire le 2ème patch, celui-ci corrigera le Warning que nous avons eu lors de la précédente compilation (pyhw version 2). +===== Liens =====
-Pour cela, supprimer le fichier //​02-shebang.patch//​ uniquement. Executer ensuite : +
-<​code>​$ cdbs-edit-patch 02-shebang</​code>​+
  
-Ce warning est assez courant avec tous les scripts et les modules python sont pas destinés à être exécutés et donc le shebang (#!/usr/bin/env pythonn'est pas à sa place. +  * [[https://wiki.ubuntu.com/MOTU/​School/​PatchingSources|(enPatching Ubuntu packages (session donnée par Martin Pitt aka pitti qui est l'​auteur de {cdbs,​dpatch}-edit-patch)]] 
-Il faut donc supprimer la première ligne du fichier ​//src/​HelloWorld.py// +  * [[http://wiki.debian.org/DebianPython/NewPolicy|(en) Debian Python NewPolicy]]
  
-Une fois que c'est fait, entrer '//​exit 0//' pour quitter cdbs-edit-patch.+----
  
-Lien pour les patchs ​https://wiki.ubuntu.com/​MOTU/​School/​PatchingSources (session donnée par Martin Pitt aka pitti qui est l'​auteur de {cdbs,​dpatch}-edit-patch)+ //​Contributeurs[[:utilisateurs:​ptitdav69]],​ [[:​utilisateurs:​_Enchained]]//
  • projets/ecole/paquets/packaging_cas_particuliers.1179440715.txt.gz
  • Dernière modification: Le 18/05/2007, 00:28
  • (modification externe)