Configuring buildout to prefer stable releases
Yesterday morning I came in to work to find that my (previously fine) plone 3 buildout kept failing to rebuild. After much debugging and googling, I tracked it down to the fact that over the weekend a new alpha version of plone.recipe.zope2instance was put up on pypi (4.0a1). Buildout merrily downloaded the new version which, by its own admission, introduces changes which can break plone 3 (see the changelog):
http://pypi.python.org/pypi/plone.recipe.zope2instance/#changelog
Now, you could argue this is my fault for not pinning my versions. In my defence, I had pinned the majority of versions but had left out major recipes like plone.recipe.zope2instance, assuming they were safe.
The upside to this issue was my discovery of buildout's 'prefer-final' option, which causes it to pick older, final releases over newer, alpha ones. You can add this option to the [buildout] section of your buildout file as follows:
[buildout]
parts = zope2
instance
...
prefer-final = true
...
According to the buildout user guide, this option will default to 'true' in future versions of zc.buildout:
http://pypi.python.org/pypi/zc.buildout#preferring-final-releases
