[Distutils] [buildout] RFC: buildout support for distribute
P.J. Eby
pje at telecommunity.com
Wed Oct 14 01:18:21 CEST 2009
At 10:27 PM 10/13/2009 +0200, Tarek Ziadé wrote:
>On Tue, Oct 13, 2009 at 10:07 PM, P.J. Eby <pje at telecommunity.com> wrote:
> >> Ok sure, makes sense. We will return 'distribute' only if 'setuptools'
> >> is from the 0.6.x series
> >> and below.
> >
> > Great. I assume that means you plan to incorporate any further bug fixes
> > that land in 0.6c10 (or, gods forbid, c11) in the release where this change
> > is made.
>
>Yes, as long as we are able to spot them in your commits / issue
>trackers changes.
>
>The latest commit you've made in setuptools package is still cryptic
>to us because
>it fixes many things at once.
Sorry about that, but it was pretty much the only way to get it done
in a weekend, without the overheads of separate commit messages, doc
changes, and backporting killing me. Those overheads were the main
reason I wasn't making changes more often; I dreaded the amount of
work involved.
Also, as it happened, I was able to fix multiple problems with single
changes this way.
>We were able to backport the sandbox violation but that's it at this point.
The __getstate__/__setstate__ stuff in pkg_resources is also sandbox
support; it makes it possible to keep working_set changes by
recursive builds from corrupting the parent build's working set. I
also expect it to support a "reset pkg_resources" API in 0.7a1 -- a
long-requested feature.
> > For versions you don't support emulating, I strongly suggest
> adding an error
> > of some kind, since actually *installing* setuptools with Distribute still
> > present on sys.path would cause a problem.
>
>It is still unclear to me where this exception has to be thrown
>since some APIs
>in WorkingSet can be used just to check things out.
>
>I am guessing WorkingSet.resolve and parse_requirements are enough, but that's
>just from the zc.buildout use case.
One thing you could possibly do is capture Distribution.insert_on(),
which would allow you to detect that setuptools is about to be added
to a working set.
Still another is that you could install a distribute.pth that puts
Distribute on the path first, since 'distribute.pth' is
alphabetically before 'easy-install.pth' and 'setuptools.pth'.
(I'm not suggesting these are complete or risk-free solutions, of course.)
More information about the Distutils-SIG
mailing list