Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 6 May 2004 17:08:55 -0500
From:      "Jacques A. Vidrine" <nectar@FreeBSD.org>
To:        Kris Kennaway <kris@obsecurity.org>
Cc:        Oliver Eikemeier <eikemeier@fillmore-labs.com>
Subject:   Re: discussion on package-version numbers... (PR 56961)
Message-ID:  <20040506220855.GI2316@madman.celabo.org>
In-Reply-To: <20040506213641.GA93452@xor.obsecurity.org>
References:  <20040416163635.GB49780@madman.celabo.org> <4080151C.1070200@fillmore-labs.com> <20040416173857.GA50670@madman.celabo.org> <20040416174418.GC50670@madman.celabo.org> <40802354.3030202@fillmore-labs.com> <20040417152242.GA5543@madman.celabo.org> <20040506190729.GD1777@madman.celabo.org> <p0602040bbcc04f36c2aa@[128.113.24.47]> <20040506212442.GF2316@madman.celabo.org> <20040506213641.GA93452@xor.obsecurity.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Thu, May 06, 2004 at 02:36:41PM -0700, Kris Kennaway wrote:
> On Thu, May 06, 2004 at 04:24:42PM -0500, Jacques A. Vidrine wrote:
> 
> > Another sticky area is e.g. openssh 3.8p2 versus 3.8.1p2.  Under
> > current rules, 3.8p2 > 3.8.1p2, which is obviously not intended by
> > the ports committer.  A workaround would have been to use 3.8.p2 <
> > 3.8.1.p2.  I don't particularly like that, because 3.8 > 3.8.p2 --- it
> > wouldn't be a problem in practice, since all openssh portable versions
> > have the `p', but it is ugly.
> > 
> > This is really very similar to the previous thing... there is an
> > inadvertant attempt to use `p' to add another level of structure to
> > the version name.  The problem is again clearer when it is viewed like
> > so: 3.8.2 > 3.8.1.2.
> > 
> > Hmm, I guess this might be part of why Oliver wanted to introduce a
> > special behavior for `pl' ?
> 
> Some ports use "p1" for "patchlevel 1", some use it for "prerelease
> version 1".  Since we can't have it both ways, committers need to
> remember to use pkg_version -t and some careful foresight to avoid
> running version numbers backwards.  However ultimately there will be
> continue to be mistakes made, even if version monotonicity is somehow
> enforced at commit-time.

That's true, mistakes will happen.  But simpler conventions could make
the mistakes more obvious.

Strawman version grammar

  <version>  ::= <major> (<letter> (<minor>)? )?  '_' <revision> ',' <epoch>
  <major>    ::= <dotted>
  <minor>    ::= <dotted>
  <dotted>   ::= <integer> ('.' <dotted>)?
  <revision> ::= <integer>
  <epoch>    ::= <integer>
  <letter>   ::= 'a'..'z'
  <integer>  ::= 32-bit integer


The components are compared in this order:
  { epoch, major, letter, minor, revision }
with this exception:
  - Certain combinations represent `prereleases'.  These are
    versions with a <letter> component, but no <minor> component.
    All prerelease versions are less than all non-prerelease versions
    with the same <epoch> and <major> components.

The troublesome ports we discussed are now tame.

   3.8.1p2 > 3.8p2 > 3.8 > 3.8b > 3.8a
   1.0.1x2003.09.16 > 1.0x2003.09.16

Perhaps we want '+' to be a `letter' :-)

Obviously, things like 1.0rc1, 1.0rc2,... (where RC is release
candidate) would need to become 1.0a, 1.0b...  But one exception sure
seems like a win.  Now, what have I left out ? :-)

You might even be able to kill the exception if you allow
<uppercase-letter> and <lowercase-letter> to have different meanings...

Cheers,
-- 
Jacques Vidrine / nectar@celabo.org / jvidrine@verio.net / nectar@freebsd.org



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20040506220855.GI2316>