Andrew Kuchling wrote:
On Thu, Jan 04, 2001 at 11:49:06PM -0800, Paul Prescod wrote:
I could have a special case for NumPy and a special case for ZODB and a special case for ... But there are around 600 extensions on the Vaults of Parnassus and about 1800 Perl extensions on CPAN. If I'm going to
The unified ZODB distribution is really several extensions in one: ExtensionClasses, for example, are potentially useful in their own right without the rest of ZODB. But I don't want to make people download seven different packages, so they're wrapped up in a single distribution. The true solution would be a tool like Debian's apt-get to automatically download the dependencies for a package, but that's a long way away. If you're working on a Python package manager for ActiveState and want to package the ZODB, then all the components can just be packaged separately.
I have looked at the ZODB toplevel setup script, and it seems wrong to me. The behaviour you get is very confusing: Try running 'python setup.py --help', the --help option will be 'sent' to every single (sub)setup script, and you will get several screens of help. 'python setup.py bdist_dumb' however, does at least something sensible: it builds xxx.zip archives for every subpackage included in ZODB. Wouldn't it be better to take an approach like this: # create a magic dsitribution instance toplevel_dist = MagicDistribution() # collect all subpackages for package_dir in packages: os.chdir(package_dir) dist = run_setup('setup.py', stop_after='init') toplevel_dist.extend(<some magic code which combines all the properties from 'dist') os.chdir(top_dir) # run the top-level distro toplevel_dist.run() Now, 'python setup.py --help' would print the help only once, and 'python setup.py bdist_dumb' would build a single archive containing _all_ subpackages. There are (currently) some problems with this approach, but maybe they can be sorted out... (Note that I used the term 'package' above while 'distutils unit' would be the correct term nowadays) Regards, Thomas