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):
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: