tech-pkg archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: 2008Q1 -> current: downgrade



On Mon, 05 May 2008, Alistair Crooks wrote:
    [upstream package version "0.14.2" is newer than version "20080220",
     although the number is smaller]
> > FreeBSD addressed this by adding an "epoch" counter [...]
> > 
> > For example, instead of going from "stgit-20080220" to "stgit-0.14.2"
> > one could go to "stgit-0.14.2,1", where the trailing ",1" means
> > "numbering has gone backwards once".
> 
> We don't have the means to do that right now, and retrofitting it onto
> the ordering mechanism which we use right across pkgsrc would not be
> easy, simple or even desired

I haven't tried to do it, but I don't think it would be too difficult.
Add PKGEPOCH=1 to the pkg Makefile; Use that to append ",1" to
the version number, in much the same way as we currently map from
PKGREVISION=5 to "nb5"; and change any code that compares package
revisions to know about the new scheme.

> (I don't know what the ,1 is meant to signify, even with your
> excellent explanation, and I don't see how this ordering even works).

Conceptually, it's just an extra component of the version number, with
a higher precendence than any other component.  This extra component is
assigned by pkgsrc, to work around problems introduced by the upstream
source; whenever the upstream makes their numbering go backwards (that
is, releases a new version whose number is smaller than that of the
old version), pkgsrc says "You can't trick us so easily, we'll just
increment this extra component that has a higher precedence".

T0: upstream releases foo version "20080220".
T1: pkgsrc packages it, as foo-20080220
T2: pkgsrc patches it; now we have foo-20080220nb1
T3: upstream releases version 0.14.2; upstream thinks 0.14.2 > 20080220
T4: pkgsrc thinks 0.14.2 < 20080220, which is no good.  So we can't
    package it, or we have to change the way we package it, or live
    with some bad effects.
T5: pkgsrc grows the "epoch" capability.  All version number comparisons
    get taught that the "epoch" value has a higher precedence than
    other parts of the version number, so "0.14.2,1" and "20080220"
    are compared almost as if they had been "1.0.14.2" and "0.20080220".
T6: pkgsrc can now package foo-0.14.2,1
T7: pkgsrc patches the package, and it becomes foo-0.14.2nb1,1

> I'd be more inclined to use a different PKGBASE for the affected
> packages.

Yes, that's also possible, but I prefer keeping the same PKGBASE.

--apb (Alan Barrett)


Home | Main Index | Thread Index | Old Index