Paquet pisi

De PardusWiki.

Sommaire

Construction d'un paquet PiSi

La structure d'un paquet PiSi 1.1

Un paquet pisi est essentiellement un fichier zippé. On va télécharger un fichier pisi et l'examiner :

$ wget http://paketler.pardus.org.tr/pardus-2007/knazar-0.2-3-3.pisi
$ unzip knazar-0.2-3-3.pisi -d apackage
Archive:  knazar-0.2-3-3.pisi
  inflating: apackage/metadata.xml
  inflating: apackage/files.xml
  inflating: apackage/install.tar.lzma
$ cd apackage
$ ls
files.xml  install.tar.lzma  metadata.xml
  • files.xml contient les traductions, les types, les tailles et les sha1sums de tous les fichiers du paquet.
  • metadata.xml contient les informations générales comme le nom du paquet, le site du projet, le paquageur, ...
  • install.tar.lzma contient les fichiers du logiciel paquagé.

Les fichiers peuvent être extrait avec ces commandes :

$ lzma d install.tar.lzma install.tar
$ tar xvf install.tar

Créer un paquet PiSi

Pour construire un paquet pisi nous avons besoin au minimum des fichiers suivants : pspec.xml et actions.py

pspec.xml

C'est un fichier XML qui contient trois noeuds : Source, Package, History

Il peut contenir plusieurs noeuds Package. En d'autres termes, un paquet source peut générer plusieurs paquets binaires. Pisi est très souple :)

Regardons notre exemple : http://svn.pardus.org.tr/pardus/devel/desktop/kde/knazar/pspec.xml

Comme vous pouvez le voir dans l'exemple :

  • La section Source contient les informations suivantes : nom du paquet (Name), le site du projet (Homepage), des informations sur le paquageur (Packager), des infos sur les sources (Archive : le sha1sum, le type et l'adresse des sources de l'archive), les patchs (Patches) et les dépendences pour la compilation (BuildDependencies).
  • La section Package contient les noeuds suivants : les dépendences pour l'execution (RuntimeDependencies), l'emplacement des différents fichiers du paquet binaire par type (Files), les fichiers supplémentaires (AdditionalFiles) et les scripts Comar (Provides) si nécessaire.
  • La section History contient tout simplement l'hisorique du paquet.

Vous voulez peut être étudier le fichier dtd de pisi; il est disponnible ici : http://www.pardus.org.tr/projeler/pisi/pisi-spec.dtd

Installation de fichiers supplémentaires

Le paquet peut contenir le noeud : AdditionalFiles qui est utilisé pour copier des fichiers depuis le répertoire files du paquet source (exemple : http://svn.pardus.org.tr/pardus/devel/desktop/kde/PyKDE/files/) vers le .pisi.

E.g., supposons que j'ai une structure comme ceci :

myproject/
myproject/files/somefile.config
myproject/actions.py
myproject/pspec.xml

Ensuite, le paquet peut être comme ceci :

   <Package>
       <Name>myproject</Name>
       <Summary>Core of MyProject.</Summary>
       <RuntimeDependencies>
           <Dependency>some-lib</Dependency>
       </RuntimeDependencies>
       <Files>
           <Path fileType="executable">/usr/bin</Path>
       </Files>
       <AdditionalFiles>
           <AdditionalFile target="/etc/path/to/install" permission="0644"                                 
                           owner="root">somefile.config</AdditionalFile>
       </AdditionalFiles>
   </Package>

actions.py

Ce fichier contient du code Python qui compile et installe le paquet source dans un dossier particulier (InstallDIR). Dans notre exemple ca sera : /var/pisi/knazar-0.2-3-3/install/.

Dans ce fichier, nous utilisons Actions API. Actions API a toutes les fonctionnalités don nous avons besoins pour compiler et installer notre package.

Si vous connaissez Python, vous devriez regarder les sources : http://svn.pardus.org.tr/uludag/trunk/pisi/pisi/actionsapi/

Créer le fichier PiSi

Après avoir préparé : pspec.xml et actions.py, vous pouvez facilement créer votre .pisi avec cette commande :

 sudo pisi build pspec.xml

Pour compiler l'exemple sans récupérer les fichiers on peut aussi tapper cette commande :

 sudo pisi bi http://svn.pardus.org.tr/pardus/devel/desktop/kde/knazar/pspec.xml

Finalement, vous pouvez examiner les autres paquets sources officiels : http://svn.pardus.org.tr/pardus/devel/

Autres langues