[Python-checkins] CVS: python/nondist/peps pep-0229.txt,NONE,1.1

Barry Warsaw python-dev@python.org
Wed, 22 Nov 2000 11:17:08 -0800


Update of /cvsroot/python/python/nondist/peps
In directory slayer.i.sourceforge.net:/tmp/cvs-serv21415

Added Files:
	pep-0229.txt 
Log Message:
PEP 229, Using Distutils to Build Python, Andrew Kuchling


--- NEW FILE ---
PEP: 229
Title: Using Distutils to Build Python
Version: $Revision: 1.1 $
Author: akuchlin@mems-exchange.org (A.M. Kuchling)
Status: Draft
Type: Standards
Created: 16-Nov-2000
Post-History:


Introduction

    The Modules/Setup mechanism has some flaws:

    * People have to remember to uncomment bits of Modules/Setup in
      order to get all the possible modules.

    * Moving Setup to a new version of Python is tedious; new modules
      have been added, so you can't just copy the older version, but
      have to reconcile the two versions.

    * Users have to figure out where the needed libraries, such as
      zlib, are installed.


Proposal

    Use the Distutils to build the modules that come with Python.

    The changes can be broken up into several pieces:

    1. The Distutils needs some Python modules to be able to build
       modules.  Currently I believe the minimal list is posix, _sre,
       and string.

       These modules will have to be built before the Distutils can be
       used, so they'll simply be hardwired into Modules/Makefile and
       be automatically built.

    2. A top-level setup.py script will be written that checks the
       libraries installed on the system and compiles as many modules
       as possible.

    3. Modules/Setup will be kept and settings in it will override
       setup.py's usual behavior, so you can disable a module known
       to be buggy, or specify particular compilation or linker flags.
       However, in the common case where setup.py works correctly,
       everything in Setup will remain commented out.  The other
       Setup.* become unnecessary, since nothing will be generating
       Setup automatically.


Unresolved Issues
 
    Do we need to make it possible to disable the 3 hard-wired modules
    without manually hacking the Makefiles?  If yes, perhaps a
    configure switch is sufficient.

    The Distutils always compile modules as shared libraries.  How do
    we support compiling them statically into the resulting Python
    binary?
   
    makesetup and the other contents of $(LIBPL)/config need to be
    preserved for compatibility with existing modules; for how many
    versions do we need to keep them around?


Copyright

    This document has been placed in the public domain.



Local Variables:
mode: indented-text
indent-tabs-mode: nil
End: