[Distutils] Proposal for incorporating buildout-versions on buildout (Re: Better version pinning in buildout (buildout-versions))

Marius Gedminas marius at pov.lt
Sun Jan 13 01:38:24 CET 2013

On Sat, Jan 12, 2013 at 11:18:36AM -0500, Jim Fulton wrote:
> On Sat, Jan 5, 2013 at 5:47 PM, Jim Fulton <jim at zope.com> wrote:
> ...
> > I propose that buildout-versions get incorporated into
> > buildout in the following way:
> OK, proposal 1 wasn't accepted.  Here's another stab:
> Proposal 2
> ----------
> 1. The ``allow-picked-versions`` option gets a new allowed value of
>    ``show``. if there are unpicked versions and this option is set to
>    ``show``, then picked/unpinned versions are reported in a way
>    suitable for copying into a versions section, presumably with the
>    same format used by buildout-versions today.

+0.5 (the missing 0.5 is for aesthetic reasons, but I have no better
suggestions at the moment, and besides bikeshedding on this would be

> 2. New buildout option: ``update-versions-file``.  This takes a path
>    (relative to buildout directory) of a file to update with any
>    unpinned versions (in a manner roughly the same as
>    buildout-versions does today).


> 3. New buildout option: ``python-version`` that restricts the Python
>    version, with the same semantics as buildout-version provides now.


> 4. Change: develop eggs found in the buildout's develop-eggs directory
>    will be used even if their version conflicts with a pinned version.

+1 for the intent, -1 for the implementation.

To me develop-eggs was always some kind of mystical implementation
detail that sometimes broke things (leftover egg-link files even after I
removed those names from my 'develop =' list and re-ran bin/buildout;
which always occurred at a point in time when my internal stack was full
and I couldn't investigate/file bugs and just rm-rf'ed develop-eggs to
be able to continue).

I suggest this instead: develop eggs explicitly listed in the [buildout]
'develop' options will be used even if their version conflicts with a
pinned version.

> 5. In buildout 2, The default value of the versions option will be
>    "versions", rather than being unset. This will allow users to
>    omit::
>       version = versions
>    from their buildout section.

+1, assuming that was a misspelling of 'versions = versions'.

(Corner case analysis: I expect that 'versions = ' will turn off version
pinning.  I've no intention of ever making use of that corner case)

> 6. To make it a little easier to supply buildout versions on the
>    command line, make buildout the default section for command-line
>    options, so::
>       update-versions-file=versions.cfg
>    or::
>       allow-picked-versions=show
>    would be allowed. (They are rejected now.)

+0.5 (gut feeling: I like this.  I haven't had time to think about the
possible consequences, so I'm withholding the other 0.5 for now.)

(Aside: I always wanted buildout to have --newer and --not-newer,
because I cannot for the life of me remember which is -n and which is
-N.  Being able to say bin/buildout newer=off would relieve that need

Marius Gedminas
Beware of bugs in the above code; I have only proved it correct, not tried it.
                -- Donald Knuth
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 190 bytes
Desc: Digital signature
URL: <http://mail.python.org/pipermail/distutils-sig/attachments/20130113/e40a3c6b/attachment.pgp>

More information about the Distutils-SIG mailing list