[Distutils] More documentation for setup meta-data

M.-A. Lemburg mal@lemburg.com
Sat Mar 1 07:56:03 2003


Richard Jones wrote:
> On Sat, 1 Mar 2003 11:00 pm, M.-A. Lemburg wrote:
>>>>Perhaps it needs to be renamed to 'download_spec_url'.
>>>
>>>Hurm - we could just accept that a download url with a specific suffix is
>>>a spec (eg. .pkgspec)? We could go as far as say that if it's an XML file
>>>(ie. .xml), then it's a download spec. I'm pre-supposing XML, of course,
>>>when the INI format would probably be enough. Again, I think I'd like to
>>>see some more flesh on your proposal (especially the bits about making it
>>>as simple as possible for the package maintainer) before I jump on the
>>>band-wagon :)
>>
>>Have a look at the ActiveState PPD format (used by their PPM
>>system to find the right download files):
>>
>>"""
>><SOFTPKG NAME="egenix-mx-base" VERSION="2,1,0">
>>         <TITLE>eGenix mx Extensions for Python - Base Distribution</TITLE>
>>         <ABSTRACT>The eGenix mx Extension Series are a collection of
>>Python extensions written in ANSI C and Python
>>which provide a large spectrum of useful additions
>>to everyday Python programming.
>>
>>The Base Distribution includes the Open Source subpackages
>>of the series and is needed by all other add-on
>>packages of the series.
>>
>>This software is brought to you by eGenix.com and
>>distributed under the eGenix.com Public License.
>></ABSTRACT>
>>         <AUTHOR>Marc-Andre Lemburg (mal@egenix.com)</AUTHOR>
>>         <IMPLEMENTATION>
>>                 <PYTHONCORE VERSION="2.1.3" />
>>                 <OS VALUE="linux-i686" />
>>                 <ARCHITECTURE VALUE="i686-linux-thread-multi" />
>>                 <CODEBASE
>>HREF="http://www.egenix.com/files/python/egenix-mx-base-2.1.0.linux-i686.gz
>>tar" /> </IMPLEMENTATION>
>></SOFTPKG>
>>"""
>>
>>I think we can build on that.
> 
> 
> Hopefully by making it significantly simpler. Preferrably with no hand-editing 
> of XML. One of my goals with PyPI registration was to make the operation as 
> simple and transparent as possible.
> 
> Hurm. I suppose the download spec file generation could be automated at the 
> time the dist (either source or binary) file is generated, or perhaps using a 
> switch to the dist command. At a minimum, we could produce a skeleton that 
> the package maintainer needs to edit. Again, not necessarily XML, as that 
> requires - well, editing XML, which I see as an unreasonable barrier to 
> entry.

The above XML-snippet is generated from the meta information
given in the setup.py and the distribution build information
generated by distutils during the bdist_xxx process (note that
this has all the naming information needed including the
possible name extensions added by the package author).

There is no hand-editing of XML required :-) The specification
of alternative download URLs could be made in the setup.py file
as well (or setup.cfg for that matter), including a reference
to the mirror farm if there should ever be one.

Still to do is find a list of aspects which are needed
in order to make automatic binary download selection
robust:

  * Python version string
  * distutils platform string
  * type of bdist/sdist
  * list of external dependencies (these will most likely be lib names
    which distutils can check prior to installation; needs to be
    spec'ed out); alternatively, distutils could do trial-and-error
    here, by calling a predefined command for checking compatibility
    prior to installing the package but after having downloaded it

Anything else ?

-- 
Marc-Andre Lemburg
eGenix.com

Professional Python Software directly from the Source  (#1, Mar 01 2003)
 >>> Python/Zope Products & Consulting ...         http://www.egenix.com/
 >>> mxODBC, mxDateTime, mxTextTools ...        http://python.egenix.com/
________________________________________________________________________
Python UK 2003, Oxford:                                     31 days left
EuroPython 2003, Charleroi, Belgium:                       115 days left