[Distutils] [Announce] stdeb - Python to Debian source package conversion utility

Andrew Straw strawman at astraw.com
Mon Jun 19 18:13:33 CEST 2006

I would like to announce the initial public release of stdeb, which may
be found at http://stdeb.python-hosting.com/ . The rest of this email is
copied directly from that web-page.

stdeb - Python to Debian source package conversion utility

stdeb_ ("setuptools debian") produces Debian source packages from
Python packages via a new distutils command, ``sdist_dsc``, which
produces a Debian source package of a Python package.  Automatic
defaults are provided for the Debian package, but many aspects of the
resulting package can be customized via a configuration file.

.. _stdeb: http://stdeb.python-hosting.com/


2006-06-19: Version 0.1 Released. See the `download page`_.


All methods eventually result in a call to the ``sdist_dsc`` distutils
command. You may prefer to do so directly::

  python -c "import stdeb; execfile('setup.py')" sdist_dsc

Alternatively, two scripts are provided::

  stdeb_run_setup [options] # calls "python setup.py sdist_dsc [options]"

  py2dsc [options] mypackage-0.1.tar.gz # uses pre-built Python source

In all cases, a Debian source package is produced from unmodified
Python packages. The following files are produced:

 * ``packagename_versionname.orig.tar.gz``
 * ``packagename_versionname-debianversion.dsc``
 * ``packagename_versionname-debianversion.diff.gz``

These can then be compiled into binary packages using the standard
Debian machinery (e.g. dpkg-buildpackage).


Files are available at the `download page`_.

.. _download page: http://stdeb.python-hosting.com/wiki/Download

The subversion repository is available at


For the average Python package, its source distribution
(python_package.tar.gz created with ``python setup.py sdist``)
contains nearly everything necessary to make a Debian source
package. This near-equivalence encouraged me to write this little
distutils extension, which executes the setup.py file to extract
relevant information. This process is made significantly easier
through the use of setuptools_.

.. _setuptools: http://peak.telecommunity.com/DevCenter/setuptools

setuptools is used because of the opportunities it provides, although
many of these features are currently un(der)-utilized. For example,
setuptools could make the job of "Debianizing" python console and gui
scripts much easier.

I wrote this initially to Debianize several Python packages of my own,
but I have the feeling it could be generally useful. It appears
similar, at least in theory, to easydeb_ and `Logilab's Devtools`_.

.. _easydeb: http://easy-deb.sourceforge.net/
.. _Logilab's DevTools: http://www.logilab.org/projects/devtools


 * Python_ 2.3 or greater
 * setuptools_
 * subprocess.py_ (included with Python 2.4, backwards compatible with
Python 2.3)

.. _Python: http://www.python.org/
.. _subprocess.py:

Customizing the produced Debian source package

stdeb will attempt to provide reasonable defaults, but these are only

To customize the Debian source package produced, you may write config
files of the format understood by ConfigParser_. When building each
package, stdeb looks for the existance of a ``stdeb.cfg`` file in the
``.egg-info`` directory. You may specify an additional config file
with the command-line option --extra-cfg-file.

.. _ConfigParser: http://docs.python.org/lib/module-ConfigParser.html

Here's an example .cfg file which builds several packages::

 Debian-Version: 0ads1

 Source: python-setuptools

 Source: python-numpy
 Upstream-Version-Prefix: 0.9.8+
 Build-Depends: python-dev, refblas3-dev, lapack3-dev
 Build-Conflicts: atlas3-base, atlas3-base-dev

 # matplotlib doesn't incorporate its SVN version number into
sdist-built tarballs.
 # Therefore, if building the SVN version, substitute the version into the
 # "Upstream-Version-Suffix" variable and use py2dsc.
 # (For some reason, "debuild -sa" won't build matplotlib because tk.h
isn't found.)
 Source: python-matplotlib
 Upstream-Version-Suffix: .dev2500
 Build-Depends: python-dev, python-numpy, python-numarray,
python-numeric, python-gtk2-dev, tk8.4-dev, libwxgtk2.4-dev
 Depends: python-gtk2, python-numpy, python-numeric, python-numarray
 Suggests: gs-gpl

 Source: python-scipy
 Upstream-Version-Prefix: 0.4.9+
 Build-Depends: python-numpy
 Depends: python-numpy

.. _numpy: http://scipy.org/NumPy

Using stdeb on stdeb

There is a chicken-and-egg problem when trying to make a Debian
package of stdeb with stdeb. Here's a recipe to avoid it::

 # in the stdeb distribution directory (with setup.py)
 python setup.py sdist
 python setup.py build
 PYTHONPATH="build/lib" python stdeb/py2dsc.py dist/stdeb-VERSION.tar.gz


* Make output meet `Debian Python Policy`_ specifications or the `new
  python policy`_. This will include several things, including:

  - the ability to make custom changelogs
  - the ability to patch upstream source
  - the ability to include project-supplied documentation (including
    license information) as a -doc package
  - the ability to include project-supplied examples, tests, and data
    as a separate package
  - much more not listed

* Support python-central_ and/or python-support.

* Create (better) documentation

* Log output using standard distutils mechanisms

* Allow distribution-specific configuration parameters (e.g. numpy-dapper)

.. _debian python policy:
.. _new python policy: http://wiki.debian.org/DebianPython/NewPolicy
.. _python-central:

Call for volunteers

I don't have a lot of time for this. This project stands a very real
chance of being only a shadow of its potential self unless people step
up and contribute. There are numerous ways in which people could
help. In particular, I'd be interested in finding a co-maintainer or
maintainer if the project generates any interest. Secondarily, I would
appreciate advice from Debian developers or Ubuntu MOTUs about the
arcane details of Python packaging.


MIT-style license. Copyright (c) 2006 stdeb authors.

See the LICENSE.txt file provided with the source distribution for
full details.


Andrew Straw, California Institute of Technology <strawman at astraw.com>

More information about the Distutils-SIG mailing list