[ZCM] [ZC] 2177/ 2 Comment "ZEO server conflict resolution can't find instance-based products"

"Collector: Zope Bugs, Features, and Patches ..." <[email protected]> Fri, 29 Jun 2007 14:14:33 -0400
Newsgroups gmane.comp.web.zope.devel.collector-monitor
Message-ID <[email protected]>
Issue #2177 Update (Comment) "ZEO server conflict resolution can't find instance-based products"
 Status Pending, Database/bug low
To followup, visit:
  http://www.zope.org/Collectors/Zope/2177

==============================================================
= Comment - Entry #2 by mcdonc on Jun 29, 2007 2:14 pm


Uploaded:  "runzeo_localproducts.patch"
 - http://www.zope.org/Collectors/Zope/2177/runzeo_localproducts.patch/view
A patch to make runzeo stitch instance home Products into pythonpath.
________________________________________
= Request - Entry #1 by mcdonc on Aug 27, 2006 4:47 am

I'm not entirely sure what to do about this, but in its "default" configuration, a ZEO server cannot find Zope products that are installed in the Zope $INSTANCE_HOME/Products directory in order to do user-defined conflict resolution.  This directory is stitched into Zope's Products.__path__ at Zope startup in order to provide a more local place to put user-installed products.

ZEO's "runzeo.py" does indeed seem to consult an INSTANCE_HOME envvar (and mkzeoinst makes a runzeo shell script that sets one), which, if found, is presumed to be a path to a Zope instance home.  Unfortunately, because the Products package is a "namespace package", we can't just add INSTANCE_HOME to the PYTHONPATH, we need to fix up Products.__path__.  runzeo.py does not try to compose a Products.__path__ that takes into account the Zope instance-home-based Products despite knowing about INSTANCE_HOME.  It seems awfully nasty to change runzeo.py to do this specially for ZEO-in-Zope, but maybe no more nasty than it already is.
==============================================================