FW: Library infrastructure

Isaac Jones ijones@syntaxpolice.org
23 Apr 2003 22:19:07 -0400

Python seems to have a very promising approach to this same issue
which is (IMO) more in line with what SimonPJ and SimonMar have said.
I don't really use Python much, though so don't count on my being 100%
correct here: http://www.python.org/sigs/distutils-sig/doc/

In particular, see the requirements of this system below [1].  Based
on the post I'm replying to, Simon Marlow might disagree with some of
these requirements, and distutils doesn't seem to implement anything
having to do with selecting compilers.  HMake could help fill in the
gap there.

There might be a "bootstrapping" issue here that isn't an issue with
Python since a "Setup.hs" script won't necessarily know which compiler
is installed.  One solution is for the compilers to standardized on
something like "/usr/bin/runhaskell", but then the user would need a
way to choose a default.  "hmake interactive" might get us there, if
there were a way to invoke it like runhugs, and hmake already has the
idea of a default compiler.



[1] "The proposed Module Distribution Utilities for Python, or
distutils for short, are needed to fill a number of long-standing
holes in the Python distribution and culture. In roughly decreasing
order of priority:

* There must be an easy, standardized way for users and
administrators to add new modules (including extension modules) to an
existing Python installation on any platform supported by Python itself.

* There must be an easy, standardized way to characterize
"meta-data" about a module distribution such as its name, version
number, area of applicability, description, and so forth, for the use
of indexing and search tools.

* There must be an easy, standardized way to create "built
distributions" (ready-to-install downloadable resources, with all
compilation and other processing done) for the major platforms.

* Module distributions must have a standardized way to express
their dependencies on other modules (both simple presence/absence and
required version number) and on Python itself (version number), and
these dependencies must be checked at setup/build/install time.

* It must be possible (and preferably easy) to instead download
and build from a source distribution. (Necessary for people who don't
happen to be using one of the major platforms, or who don't trust
built distributions.)

* To aid in installing all modules, and in building extension
modules from C/C++ source, there must be a standardized way to get
Python's configuration data (such as compiler, compiler flags,
platform, default library directory, etc.).

* It must be easy for a module developer to create both source and
built distributions.

* It must be easy for a third party (the "packager") to download a
source distribution, build it on a particular platform, and create a
built distribution for that platform which can then be trivially used
by less sophisticated users of that platform. "