[Zope3-dev] Building standalone ZPT from Zope 3 using zpkgtools

Shane Hathaway shane at hathawaymix.org
Fri Apr 22 12:25:47 EDT 2005


Jim Fulton wrote:
> Shane Hathaway wrote:
>> I'm sure Fred is doing excellent work, but I'm having trouble seeing why
>> we need zpkgtools.  Is it not sufficient to just "python setup.py
>> install" all of Zope 3? 
> 
> I hope so.  What zpkgtools does is to:
> 
> - Build our setup.py script (which we name install.py) for us based
>   on meta data.  In that sense, it is a setup.py-development tool.
> 
> - Allow us more flexibility in deciding what a release is by allowing
>   us to specify what to include in a release and make sure other things
>   are included to make sure we distribute what we need.
> 
> Also, by providing dependincies as meta-data files, we:
> 
> - We are making design-level commitments about interdependencies, and

These are great use cases--thanks for listing them.  Zope definitely
needs these things.

> - We are taking a step towards being able to have an automated package
>   system that will someday allow releases and updates to be smaller,
>   more automated, and easier to keep up to date.

Automated package dependency management always seems to pull in
dependencies on the entire system.  For example, Twisted might one day
start using the new cross-platform libevent library. [1]  But libevent
on Linux wants Linux 2.6 and a glibc compiled for Linux 2.6, so Twisted
would need to indicate a dependency on a host of non-Python packages.  I
don't think zpkgtools wants to manage dependencies on the whole system,
yet that's what users need.

.. [1] http://www.monkey.org/~provos/libevent/

I once thought innovation in system libraries and utilities would slow
down and eventually stabilize, but from all appearances, the innovation
is actually speeding up.  As a result, whole-system dependency
management is becoming more important.

When a complete package management system is available, tools that
manage only some of the dependencies become a nuisance.  Take Perl's
CPAN-based dependency management tool, for instance.  I used it once,
and it downloaded and installed all the Perl libraries I needed.
However, the application I was trying to run wouldn't work, and it took
me hours to figure out I needed a version of glibc that took advantage
of the kernel's event API.  CPAN couldn't have known that because it's
not aware of the whole system.  I solved the problem using Portage.

So zpkgtools sounds like a great tool for ensuring high-quality
releases, but I don't think it should also manage package installation.
 Generating something like setup.py, and doing little more, is the best
thing for zpkgtools to do.

Shane


More information about the Zope3-dev mailing list