Python Distutils-SIG

Charter

The Distutils-SIG exists to discuss the design and implementation of a suite of module distribution utilities for Python. These utilities will take the form of some standard modules, probably grouped in the 'distutils' package, for building, packaging, and installing third-party modules. This includes both modules written purely in Python and extension modules written in C/C++.

The main deliverable will be the following core modules (in the distutils package):

  • build:provides code for building a module, which might include copying .py files into a staging area, compiling and linking .c files, processing documentation to an installable form, etc.
  • dist: create a source distribution
  • bdist: create a 'built distribution' (the equivalent of a 'binary distribution', except that binaries won't necessarily be present
  • install: install a built library on the local machine
  • gen_make: generate a Makefile to do some of the above tasks (mainly 'build', for developer convenience and efficiency)

I will tentatively put forward March 1999 as a target for a working release to run on top of Python 1.5.2, which might require a patch-and-rebuild-Python step (or might find ways to work with the information available under 1.5). For a complete, tested, documented suite ready to bundle with Python 1.6, let's shoot for June 1999.

Other topics of interest:

  • encouraging module developers to write test suites by having a standard place for them in module distributions
  • ditto for documentation -- although this is probably the job of the doc-sig, it would be nice to tie the two together at some point
  • a standard for representing and comparing version numbers
  • social engineering in general, ie. convincing module developers to start using the system
  • the possible need for tweaks to the configure/build process for Python itself, and a place to hold configuration information (possibly a new built-in module, 'sys.config')
  • possibly rewriting the configure/build/install process for Python 1.6 -- especially useful if the distutils are bundled with 1.6!
  • ties to Trove -- any module distribution scheme must include a way to describe the package metadata, and there will need to be hooks between any future Trove archive for Python and this metadata
  • recognizing SWIG-assisted extensions in addition to "ordinary" C extensions