[Distutils] Low Level API for translating distutils/setuptools metatdata to?Debian metadata

Brian Sutherland brian at vanguardistas.net
Thu Jun 4 10:54:48 CEST 2009

On Sat, May 30, 2009 at 07:27:06PM -0400, David Lyon wrote:
> On Fri, 29 May 2009 08:35:16 -0700, Andrew Straw <strawman at astraw.com>
> wrote:
> > Brian Sutherland wrote:
> >> I've just published a very small library that does three things so far:
> >> 
> >>     * Provides a mapping between python project names and Debian
> >>       binary/source package names
> >>     * Converts setuptools versions to Debian versions while maintaining
> >>       sort order
> >>     * Can introspect an .egg-info directory to figure out the Debian
> >>       dependencies for use in the debian/control file. It can also
> >>       handle/understand extras (I Hope!)
> >> 
> >> It's basically an attempt to find a common ground between all the
> >> projects doing automated Python->Debian packaging. I have a feeling
> >> everyone is re-implementing this code all the time.
> Maybe not everybody - but I am sure there are a few...
> at least there are many who would like to do it..
> Recently I posted a suggestion to Andrea Gavana about py2exe on the
> wxPython list about his excellent gui interface for py2exe.
> My use case is this... I'm writing a package manager for python..
> I want it to be deployed to every python platform... I dont have
> all those platforms....
> I want p2exe or distutils (Distribution Utils?? is that what it
> stands for?) to take my program and make it for every platform...
>  - windows
>  - mac
>  - linux (ubuntu,debian,suse,redhat)
> It's actually not so many..
> No, I am not talking jibberish or pie in the sky here..
> Here's specifically what needs doing.....
>  1) create a three page "wizard" style app in wxpython
>  2) the app has checkboxes to allow the user to select the 
>     operating systems that they want to deploy to
>  3) p2app for mac, py2exe for windows.. whichever one
>     for linux is driven.. much like gui2exe
>  4) Cheetah templates are used to create the necessary
>     output scripts from the meta information.
>     (building scripts in code is so 1970s.. we don't
>      want to do it that way again)
>  5) The scripts get run and the user ends up with
>     .debs .rpm... windows installer  
> basic structure...
> for plat in user_selected_platforms:
>     build_for_platform(plat)
> def build_for_platform(platform):
>     if platform == "mac":
>         ..
>     elif ....
> I think distutils has been in a "frozen" state for the
> last few years. With no notable improvements apart
> from bug fixes and internal work.
> Given that the general consensus is largely to leave
> package/application management to the operating 
> system, what I describe above is a more modern way to 
> accomplish what people are trying to do with less 
> effort on the part of all...
> If a user makes a python app... why shouldn't they
> be able to run a distutils script to "distribute"
> to a platform they don't have....
> Building ubuntu or debian packages is no longer
> a black art....

To be honest, it still is;)
> It's 2009 now nearly 2010...
> When was the last time distutils ever got a
> major upgrade....?
> Is this not what "disutils" should be doing?

I would personally be very happy if distutils kept out of the business
of making packages for anything but python to consume.

Making OS level packages is, in my view, something that should be built
on top of, not inside distutils.

So the current distutils development is going in the right direction for
me: Specifying common metadata formats and making APIs to access that.

> in this day and age?
> David

Brian Sutherland

More information about the Distutils-SIG mailing list