Packaging avec les outils de DevTools
=====================================

:Author: Sylvain Thnault
:Organization: Logilab
:Version: $Revision: 1.3 $
:Date: $Date: 2003-09-19 11:50:08 $
:Abstract:
    Ce document comment effectuer facilement la distribution des
    packages Python et Zope sous forme de tarball et de paquets
    debian,  l'aide des utilitaires fournis par ce paquet.

.. contents::


Empaquetage d'un paquet conforme au "Standard Source Tree"
----------------------------------------------------------

Pour commencer, il est important de voir la documentation du fameux 
`standard source tree`_ avant de passer  la suite de ce document.


Cration d'un tarball avec distutils
````````````````````````````````````
La premire tape de la distribution d'un paquet Python est de rendre celui-ci
distribuable  l'aide de Distutils_ (cela n'est pas ncessaire pour les produits
Zope). Ce paquet fournit un fichier *setup.py* gnrique, tirant les
informations ncessaire du fichier *__pkginfo__.py*. Vous n'avez donc
thoriquement qu' copier le setup.py gnrique et  crire un fichier
*MANIFEST.in*. Pour en savoir plus ou si vous avez des besoins un peu exotique,
e vous laisse lire la documentation_ de distutils. Une fois cela effectu, il
est de bon ton de tester que a marche...

1. **python setup.py sdist**  la racine du paquet.

2. vrifier que l'archive gnre (dans le sous-rpertoire *dist*) contient les
   fichiers dsirs.  

3. extraire l'archive (tarball) dans un rpertoire temporaire.

4. **python setup.py install** dans le rpertoire extrait de l'archive
   (voir les options d'installation avec **python setup.py install --help**).

5. vrifier que les tests / xcutables installs fonctionnent correctement.

L'utilitaire preparedistrib_ vous aide en faisant des vrifications et diverses
actions prparant la distribution. Il est donc fortement conseill de l'xcuter
avant d'effectuer une distribution. Une fois le tarball gnr et vrifi,
utiliser l'utilitaire tagpackage_ pour mettre un tag dans le CVS correspondant
 la distribution que vous venez d'effectuer.

Test du paquet debian
`````````````````````
Pour tester rapidement votre paquet debian utilisez buildpackage_.
(**buildpackage logilab/pyreverse deb** si on reprend l'exemple).

Une fois le paquet construit, il faut vrifier :

1. son contenu avec **dpkg --contents <monpackage.deb>**

2. son installation avec **dpkg -i <monpackage.deb>** 

3. que les tests / xcutables installs fonctionnent correctement

4. sa dinstallation avec **dpkg -r <monpackage.deb>** 


Construction du paquet final
````````````````````````````

Une fois que tout marche, vous devez utiliser makedistrib_ pour construire le
tarball et le paquet debian. Il est important d'utiliser ensuite l'utilitaire
tagpackage_ pour mettre les tags dans le gestionnaire de source.


.. _Distutils: http://www.python.org/sigs/distutils-sig/  
.. _documentation: http://www.python.org/sigs/distutils-sig/doc/
.. _`standard source tree`: standard_source_tree.html
.. _`__pkginfo__.py`: pkginfo_variables.html
.. _preparedistrib: preparedistrib.html
.. _makedistrib: makedistrib.html
.. _buildpackage: buildpackage.html
.. _tagpackage: tagpackage.html
