[Zope-dev] Egg install bot results
Chris McDonough
chrism at plope.com
Wed Nov 14 00:29:24 EST 2007
I've created a variant of the script I used to generate the results
referenced in my original message within this thread.
http://svn.repoze.org/playground/trunk/chris/zopesvnchecker/releasechecker.py
The new variant attempts to "easy_install" each cheeseshop project
that has 'zope' in its author metadata (found via the cheeseshop's
search XML-RPC interface) into a "pristine" virtualenv. This mimics
what end-users would see if they attempted to install Zope-related
packages from the cheeseshop without using zc.buildout.
I'll set this up to run every few days. I'll attempt to send its
output to zope-coders.
- C
On Nov 13, 2007, at 4:29 PM, Chris McDonough wrote:
> I've created a bot process (see
> http://svn.repoze.org/playground/trunk/chris/zopesvnchecker/
> checker.py)
> that:
>
> - checks out the "trunk" subdir of each top-level directory in
> svn.zope.org
>
> - if the resulting directory does not have a "setup.py", we skip the
> directory
>
> - if the resulting directory does have a setup.py, we create a
> temporary virtualenv with setuptools installed and run the
> virtualenv's bin/python passing it "setup.py install".
>
> - We capture the results of the install, and print a summary.
>
> The "summary" results are at
> http://www.plope.com/static/misc/checker_results.txt . The "details"
> pickle generated by the script is at
> http://www.plope.com/static/misc/results.pickle .
>
> My analysis of the results are these:
>
> - A version conflict exists in a low-level dependency between a
> requirement for zope.traversing 3.4.0 and a requirement for
> zope.traversing>=3.5.0a1.dev-r78730 when installing many zope.*
> eggs using "setup.py install" (and easy_install), making it
> impractical for non-Zope people to actually install most of the
> interesting and released zope.* modules. This conflict needs to
> get fixed. Additionally, some modules (like zope.pagetemplate)
> should not fail with this dependency error in the first place;
> instead their dependencies need to become less conservative.
>
> - The only 10 packages (out of 80) in the zope.app namespace can be
> easy_installed. All the others fail with the above dependency
> error.
>
> Suggestions:
>
> - Find and fix the zope.traversing easy_install conflict. I'll try
> to debug this.
>
> - Institute a policy that all distributions that are released to the
> cheeseshop should be installable via "easy_install". IMO, if they
> are not installable this way, they should not be released to the
> cheeseshop, given the larger Python community's expectations.
>
> - Figure out why buildout can (apparently) qsuccesfully install
> dependencies of currently failing zope.* eggs while easy_install
> can't. I probably won't be able to do this.
>
> - An automated test should ensure that easy_install does something
> reasonable with the latest release of each distribution. If the
> test fails, a new release should be made, or the dependency bug
> tracked down and fixed. My checker script could be made to do
> this, and I'd provide the work if someone told me which
> distributions to test, and how to maintain the list of
> distributions to test over time.
>
> - Ditch the idea of releasing separate distributions for each
> package in zope.app. The individual eggs typically can't be used
> outside of a zope appserver installation (and if they can, they
> probably shouldn't be in "zope.app", they should be in "zope" or
> they should be their own top-level package), and the
> "namespaciness" of zope.app is suspect when it's unlikely that
> anyone who is not a Zope committer will release a distribution
> which makes use of that namespace package. Their current
> overgranularity makes distributing them as separate eggs and
> releasing them to the cheeseshop a form of "cheeseshop pollution",
> especially given that so few of them can actually currently be
> installed using easy_install or "setup.py install". If cheeseshop
> is going to continue to be used as the index, I'd suggest creating
> a zope.app top-level svn module with a single setup.py in
> containing all the packages that are meant to go into zope.app.
> Version the resulting "zope.app" distribution as necessary instead
> of versioning many more granular "zope.app.*" distros. It's OK if
> some people don't use some of the functionality in the resulting
> egg, just toss everything in. There is precedent here in the
> Paste distribution. It has many submodules and does many things,
> but it comes in the form of a single egg. Yes, you lose the
> ability to make a bugfix in one subpackage and release it, but
> IIRC the intent is to trim zope.app down anyway, pushing
> libraryish things out to top-level or zope.* packages.
>
> Issues:
>
> - Who's in charge? Whomever you might be, to what extent do you
> agree/disagree with the above suggestions? If you agree with any,
> how can I help fix things?
>
> - I'm unsure how anybody is able to install Zope 3 right now using
> eggs, unless there's some fundamental difference in the way
> easy_install resolves dependencies vs. buildout. I have not looked
> at how Stephan's KGS works yet, though, so I'm sure I'm just
> missing some magic.
>
> - We should consider fixing setuptools install to detect conflicts
> before attempting to install anything. The current regime of "find
> conflicts halfway through an install" is IMO untenable in the long
> term for using eggs as a distribution mechanism. This may mean a
> very invasive change to both the package index and the client
> software, though.
>
> _______________________________________________
> Zope-Dev maillist - Zope-Dev at zope.org
> http://mail.zope.org/mailman/listinfo/zope-dev
> ** No cross posts or HTML encoding! **
> (Related lists - http://mail.zope.org/mailman/listinfo/zope-announce
> http://mail.zope.org/mailman/listinfo/zope )
>
More information about the Zope-Dev
mailing list