[Zope-dev] Re: [z3-five] RFC: The future of Products.Five(green
eggs and zope)
Daniel Nouri
daniel at infrae.com
Tue Oct 31 12:35:44 EST 2006
Chris McDonough wrote:
>
> On Oct 31, 2006, at 11:30 AM, Daniel Nouri wrote:
>
>> Tres Seaver wrote:
>>> Daniel Nouri wrote:
>>>>> whit wrote:
>>>>> <snap>
>>>>>> We still have to handle the Products issue for add ons(mcdonc, donde
>>>>>> estamos con Basketos?). But if Basket is added to 2.11, this might
>>>>>> not
>>>>>> be such a big deal.
>>>>>> From what I know, Basket has been abandoned and there's even no good
>>>>> reason for using it. Inside a workingenv you can just go and install
>>>>> egged Products without problems.
>>>
>>> Basket gives Zope the framework to tickle the 'initialize' entry point
>>> in eggs, which is *not* unnecessary AFAIK.
>>
>> 'intialize' will be called for eggs that use the Products namespace
>> package. If the Product lives outside of Products, it must use the
>> 'five:registerPackage' directive so that its 'initialize' is called.
>
> I know nothing of five:registerPackage, but Basket's model doesn't care
> whether or not a package is in the Products namespace. It has two
> modes: DWIM mode, which calls "initialize" for all packages in eggs
> which have a "zope2.initialize" entry point, and a non-DWIM mode under
> which you must spell out the packages that should be initialized in a
> separate INI file (this is akin to using ZCML to spell out each of
> them). Note that in the model that basket uses, an egg might contain
> more than one Product as well. The egg contains a 'zope2.initialize'
> entry point for each product which the egg contains. I've pasted the
> Basket readme to the end of this email, which explains all of this.
I've tried out Basket and failed. I think it doesn't work for Zope 2.9
and newer. However, having installed other Python packages through
easy_install before, I also found it a bit unintuitive to use (in theory).
I think Basket is overdoing it. Zope 2 doesn't need such a specialized
egg story. If we can install eggs the normal way (easy_install) and
they work and we can use known techniques (zcml slugs) to include them
in an instance, at least *I* am happy.
Entry points are definitely great and I do hope that they'll replace
zcml slugs soon. That'll have to work for Zope 2 packages too (so
five:registerPackage becomes unnecessary) and I think there we can learn
from Basket.
>>
>> One thing to note is that if you install such an egg that has a Products
>> namespace system-wide, it will be 'initialize'd in every Zope instance.
>> So it's advisable to 1) not use the Products namespace package and rely
>> on 'five:registerPackage' if you need 'initialize' and 2) use workingenv
>> or zc.buildout to install the eggs.
>
> I think the reason that Phillip put entry points in the egg spec is just
> for this sort of thing. I'm not sure if they're being used now for Zope
> 2 eggs (or if there even is such a thing), but imo they probably should be.
AFAIK, for both Zope 2 and Zope 3 you have to put a zcml slug into
package-includes. (For Zope 2 only if you live outside Products though.)
Check out Whit's blog entry [1] if you haven't done so. He explains how
to set up a workingenv inside a Zope 2 instance.
I recently played with a script that installs Plone by setting up a Zope
instance combined with a workingenv, and pulling all necessary Products
and packages in as eggs [2].
[1] http://bfhammer.blogspot.com/2006/09/bootstrapenvironment.html
[2] http://lists.plone.org/pipermail/framework-team/2006-October/000784.html
More information about the Zope-Dev
mailing list