[Zope3-dev] Re: RFC: Known working sets
Philipp von Weitershausen
philipp at weitershausen.de
Mon Sep 3 19:26:38 EDT 2007
On 4 Sep 2007, at 01:21 , Tres Seaver wrote:
> Philipp von Weitershausen wrote:
>> Wichert Akkerman wrote:
>>>> The only problem is that distributing grok-0.11.cfg is a bit
>>>> tedious.
>>>> How about if buildout could get it from the web?
>>> How about making it available from an egg, through a hook in egg-
>>> info
>>> perhaps?
>>
>> This is a very good point. So good in fact that I thought of it
>> myself
>> :) I was already writing the email when your message came in.
>>
>>
>> Martijn and I discussed the known working set problem over IRC this
>> afternoon. He brought up a few good points which suggest that the
>> version data could be associated with the egg:
>>
>> The approach that I described in my original posting (and which
>> actually
>> works *today*, as I found out!) has some disadvantages. For instance,
>> the discoverability and release mechanism of the known working set
>> configuration file differs a lot from our normal packages.
>> Releasing a
>> package is a well-known routine by now. How and where would we
>> release
>> the working set configuration file? SVN?
>
> Why not just release a meta-egg with hard-wired dependencies, plus the
> scripts required to set up and run the application? If the other
> components are as relaxed as possible about their dependencies,
> then it
> shouldn't matter that the meta-egg nails them down: it isn't going to
> be possilbe to re-use the meta-egg anyway (and I for one wouldn't want
> to -- I'd be creating a new environment to run it in).
I think the use case of being able to override a particular version
of a package is valid. Let's say I'm on Zope 3.5.0 (meta egg or
whatever) and I'd like to get the newest ZODB because it has a really
cool feature. Sure, the warranty is void now, but I'd still like to
be able to do it *without* having to reproduce all the version
dependencies that the meta egg specifies.
>> Another problem are dependencies and how we'd like to depend on other
>> working sets. Let's say we made a 'Zope' working set that
>> contained the
>> stable versions of the zope.* packages. It would make sense for
>> grok to
>> depend on this information. And packages using grok should depend on
>> that. It'll be complicated to maintain such a chain in separate text
>> files, especially across version updates. It only seems natural to
>> use
>> the egg dependency mechanism for this.
>
> Depending on another WS would basically Just Work (TM) if we used egg
> dependencies.
It would, but setuptools doesn't allow us to specify "overrides" in
case of version conflicts. Perhaps zc.buildout could be taught how.
Then I suppose I could settle for using '==' in a meta egg's setup.py.
>> When EGG-INFO is written, a custom writer will then take this
>> information and generate 'known_working_versions.txt' or whatever in
>> EGG-INFO. The only problem is that this custom writer needs to be
>> installed when setup.py is called to create egg, in other words to
>> generate the right kind of eggs you'd need to have something
>> installed
>> first. Not sure if this is better than maintaining .egg-info
>> directories
>> in SVN...
>
> I guess I don't get the usecase for maintaining "known good"
> dependencies outside of setup.py (for the "meta" egg).
I don't mind maintaining them in setup.py, but the "install_requires"
mechanism is insufficient. Sooner or later you're going to end up
with a version conflict.
More information about the Zope3-dev
mailing list