[Distutils] Updated TODO list

Greg Ward gward@python.net
Sat, 24 Jun 2000 22:39:31 -0400


Hey, this to-do list is looking pretty good: lots of "done" items as of
today.  Highest priority:
  * bdist_wininst
  * auto-configuration; currently has enough to support mxDateTime,
    probably needs some more to support PIL, and then I need to
    find some other distributions with auto-configuration needs
    to play with

Medium priority:
  * Cygwin GCC support, Borland C++ support
  * AIX, OSF/1 support

Here's the list...

GENERAL
-------

* think about how to support distribution-specific "configure" commands --
  eg. how can they push option values (include/library directories, that
  sort of thing) onto the "build_ext" command?
  [see also "AUTO-CONFIGURATION" section below, and the "config" command]

* need a good, general-purpose, portable-if-you-want-it, unportable-if-
  you-need-control, way for the builder/installer to specify compiler
  and linker flags (lots of people expect CFLAGS and LDFLAGS to work,
  so they probably should; but options to either command and/or
  build are the right way, so those should be preferred)

* install_data should install to $prefix by default, not $prefix/share
  (and should warn if developer doesn't supply any dir component:
  installing right to $prefix is almost always the wrong thing
  to do)
  [done 2000/06/24 GPW]

DOCS
----

* write write write

* include a standard blurb for README files somewhere


PATCH REVIEW/INTEGRATION
------------------------

* review Rene Liebscher's patch for help options: he changed
    archive_util.py
    ccompiler.py
    command/bdist.py
    command/build.py
    command/build_clib.py
    command/build_ext.py
    command/sdist.py
    dist.py
  ...and I checked 'em all in without review because I want
  other people to try it out and I don't have time to review
  it right now (and he fixed a stupid bug in bdist.py for me)
  [done 2000/06/23 GPW]

* review Rene Liebscher's cygwinccompiler.py contribution
  [started and aborted, 2000/06/24 GPW; asked Rene to resubmit patch
   with stylistic changes]


COMMAND-LINE PARSING
--------------------

* I think fancy_getopt needs to get fancier to properly support the
  -I, -D, -l, -L, etc. options of "build_ext": need to be able
  to accumulate multiple options in a list, should be able to
  split a string on a given delimiter, probably want to specify if
  repetitions of the same option will accumulate or replace, etc.

* do the above options even work at all?  seem to recall hearing
  reports of dismal failure, but I never looked into it
  [knowing how FancyGetopt works, there's no way these options
  can work: damn]


COMPILER MODEL & CLASSES
------------------------

* add pre-processor interface to CCompiler (needed to support
  Autoconf-style 'try_cpp', 'search_cpp', 'search_headers' in config
  commands)
  [done, but only UnixCCompiler implements that interface]

* fix UnixCCompiler so it doesn't depend on sysconfig (ie. cc must
  be passed in)
  [done 2000/06/24 GPW]

* allow user to supply cc (compiler executable) in addition to
  compiler type
  [done 2000/06/24 GPW]

* radically simplify CCompiler method signatures: drop most of the
  per-invocation customization, and just use the instance
  attributes for eg. include_dirs, libraries, ...
  [NB. should probably hold off integrating Cygwin and Borland
   support until this is done, *if* that is it is the right thing
   to do...]
  [update 2000/06/24: I'm cooling to this idea; it turns out the
   extra complex interface that's been there all along is useful
   for the "config" command, which has to do lots of little
   temporary compile and link steps]

* Cygwin/Mingw32 support
  [Rene Liebscher is working on this]

* Borland C++ support
  [Lyle Johnson is working on this]


AUTO-CONFIGURATION
------------------

* add more goodies to the standard "config" command, and finish
  hacking up the example mxDateTime setup script to take
  advantage of them
  [partly done: at least enough is there to auto-configure mxDateTime;
   need to work on PIL's auto-configuration next]

EXTENSION BUILDING
------------------

* extension building on AIX
  [update 2000/06/24: Rene Liebscher has a patch for this, which
   I have asked him to refine]

* support for SWIG -- should just have to specify the .i file and
  have Distutils take care of running SWIG and knowing what the
  output is (to be really clever: make sure SWIG's output is included
  in source distributions, so builders-from-source don't need to
  have SWIG installed)
  [update 2000/06/24: Thomas Heller and I have gone back and forth
   on this a couple times: sounds like Thomas has the right idea,
   I'll let him work on it]

* support for PyFort (lower priority than SWIG!)

* OSF/1 problem: ld command has "*" in it, which is appropriate when
  a shell is involved, but there isn't one here, so we need to
  strip the quotes (and, ideally, put them back on again when
  spawn() prints out the command run!)


INSTALLATION
------------

* if Distutils installs the first third-party modules in an installation
  (and creates site-packages), then "install" needlessly warns about
  having installed to a location not on sys.path -- presumably because
  site-packages isn't in sys.path at startup, since it doesn't exist
  until we create it!  (I think this is only a problem with 1.5.2,
  since site-packages is now created when Python is installed -- check!)

* need a mechanism for specifying pre-install and post-install hooks,
  which will be run when installing from a smart built distribution
  (RPM, wininst, etc.); also, "install" needs to run these hooks
  *except* for "fake" installs done solely to create a built distribution

* bdist_dumb should grow a little intelligence: let packager choose whether
  to make archive relative to prefix or the root (prefix is essential
  for proper Windows support )



DISTRIBUTION FORMATS
--------------------

* figure out why bdist_rpm doesn't work with RPM 2.x, and make it work if
  possible
  [punt: I don't care anymore, if anyone else does, let them fix it]

* make "bdist" take multiple formats (both for convenience
  and consistency with "sdist"); should be doable now that we can
  reinitialize, refinalize, and (presumably) rerun commands
  [done 2000/06/06 GPW]

* Solaris pkgtool, HP depot
  [Mark Alexander is working on these]

* minimal Windows installer ("bdist_wininst")
  [Thomas Heller is working on this]

* Wise installer for Windows ("bdist_wise")
  [Thomas Heller said he will work on this when "bdist_wininst" is done]


$Id: TODO,v 1.5 2000/06/25 02:37:09 gward Exp $

-- 
Greg Ward - Linux geek                                  gward@python.net
http://starship.python.net/~gward/
No problem is so formidable that you can't just walk away from it.