How to deal with major versions? (was Re: [Zope3-dev] Re: egg version numbers and zope releases)

Jim Fulton jim at zope.com
Wed May 30 16:20:09 EDT 2007


On May 30, 2007, at 3:36 PM, Jodok Batlogg wrote:

>
> On 30.05.2007, at 21:30, Jim Fulton wrote:
>
>>
>> On May 30, 2007, at 3:20 PM, Christian Theune wrote:
>>
>>> Hi,
>>>
>>> Am Mittwoch, den 30.05.2007, 15:12 -0400 schrieb Benji York:
>>>> Jim Fulton wrote:
>>>>> It's actually worse than that.  <2.0 would admit 2.0a1. :)  You'd
>>>>> probably need something like < 1.99.
>>>>
>>>> I can deal with spelling dependencies on major version X as <= X. 
>>>> 999.
>>>>
>>>>> Even if developers remembered, it would be icky to have to  
>>>>> spell out
>>>>> something like >=3.4 <=3.99 on everwhere.
>>>>
>>>> Not as icky (IMHO) as having distribution names with embedded major
>>>> version numbers.  I'm interested in other people's opinions here.
>>>
>>> I don't like version numbers encoded in package names. I consider  
>>> this
>>> to be a work-around for packaging systems that aren't rich enough.
>>>
>>> (Gentoo for example gets this right.)
>>
>> Could you elaborate on this?
>
> well :) i'm co-maintainer of the net-zope herd in gentoo:
>
> read my attempt to improve the plone versioning: http:// 
> article.gmane.org/gmane.comp.web.zope.plone.devel/3227/match=version 
> +gentoo+batlogg

tmi :)

> in summary:
>
> Naming release tarballs (adapted from the gentoo conventions ;-))
>
> file names consist of three logical sections:
>
> The first section is the package name, which should only contain  
> lowercase
> letters, the digits 0-9, and any number of single hyphen ('-') or
> underscore ('_') characters. Some examples are cmfplone,  
> cmfquickinstaller,
> formulator,...
>
> The second section is the version of the package, which should  
> normally be
> same as the version of the contained product. The version is  
> normally made
> up of two or three numbers separated by periods, such as 1.2 or  
> 4.5.2, and
> may have a single letter immediately following the last digit;  
> e.g., 1.4b
> or 2.6h. The package version is joined to the package name with a  
> hyphen;
> for example: foo-1.0, bar-2.4.6, etc.
>
> Important: If you're thinking of using a trailing letter in your  
> version
> string, note that the trailing letter should not be used to signify  
> alpha
> or beta status for the package, since alphas and betas are  
> prereleases and
> letter revisions are newer versions. It's very important that version
> numbers faithfully represent the version of the package so that  
> depenency
> checking is possible.
>
> The third (optional) section contains a special suffix; either _alpha,
> _beta, _pre (pre-release), _rc (release candidate), or _p (patch).  
> Any of
> these suffixes may be immediately followed my a number; e.g.,
> linux-2.4.0_pre10; Assuming identical version parts, an _alpha  
> package is
> older than _beta, _beta older than _pre, _pre older than _rc, and  
> _rc older
> than _p. This section is meant to reflect upstream versions only.
>
> Note: An _rc package is older than a package without an underscore  
> prefix
> (i.e. linux-2.4.0), and linux-2.4.0 is older than a package with a  
> single
> letter prefix, i.e. linux-2.4.0b. As you would expect, the  
> linux-2.4.0b
> package is considered older than linux-2.4.0c.
>
> ... and I suppose that we actually have a fourth section of the  
> file name --
> the .tar.gz extension itself.

I don't see how this helps one say that they want to depend on a  
minimum version of a major version.  That is, how does it prevent  
dependencies like:

     foo >=1.0 <1.999

?

I'm wondering how Gentoo got *that* right.

Jim

--
Jim Fulton			mailto:jim at zope.com		Python Powered!
CTO 				(540) 361-1714			http://www.python.org
Zope Corporation	http://www.zope.com		http://www.zope.org





More information about the Zope3-dev mailing list