Working around buildout server down problems

Plone installations may refer to external HTTP hosted files in buildout.cfg. Things go bad when those servers are down, breaking your development and maintenance workflows. Like today: buildout extends = line cannot reach the servers (download.zope.org) where the version pin down definition file, one telling what known good set (KGS) of components your Plone version needs. Even though if the distribution server is up (pypi.python.org) buildout fails badly with very unfriendly error message.

IOError: [Errno socket error] [Errno 60] Operation timed out

(It doesn’t bother to tell that the server which is down is download.zope.org. You need to figure out this by running bin/buildout -D and manually inspect the callstack using Python pdb debugger. What a pain.)

Unified installer based installations do not have this problems as all files are local and internet connection is not required to run buildout.

You can work around your buildout issues by manually downloading required extends files from Plone UnifiedInstaller source code base on Github. Just choose correct branch for your Plone version.

Then:

wget --no-check-certificate https://raw.github.com/plone/Installers-UnifiedInstaller/4.1/base_skeleton/zopeapp-versions.cfg
wget --no-check-certificate https://raw.github.com/plone/Installers-UnifiedInstaller/4.1/base_skeleton/ztk-versions.cfg  
wget --no-check-certificate https://raw.github.com/plone/Installers-UnifiedInstaller/4.1/base_skeleton/versions.cfg

Edit versions.cfg, make pin down references local

[buildout]
extends =
    zopeapp-versions.cfg
    zope-versions.cfg
#    http://download.zope.org/zopetoolkit/index/1.0.7/zopeapp-versions.cfg
#    http://download.zope.org/Zope2/index/2.13.15/versions.cfg

Make sure your buildout.cfg referes to local versions.cfg

extends =
    versions.cfg
    ztk-versions.cfg
    zopeapp-versions.cfg

Also you might need to whitelist allowed download hosts in buildout.cfg. If this list is not comprehensive contribute your fixes here.

allow-hosts =
    github.com
    *.python.org
    *.plone.org
    launchpad.net
#    *.zope.org

Run buildout. Now it should churn happily forward.

\"\" Subscribe to RSS feed Follow me on Twitter Follow me on Facebook Follow me Google+

Leave a Reply

Your email address will not be published. Required fields are marked *