On Wed, Mar 25 2020, Paco Esteban <p...@e1e0.net> wrote: > On Sun, 15 Mar 2020, Marc Espie wrote: > >> On Sun, Mar 15, 2020 at 12:28:25PM +0100, Paco Esteban wrote: >> > oh, that did not occur to me ... You mean that if port foo/bar gets >> > EPOCH = 0, then all dependent ports should change it's dependencies >> > declarations from foo/bar>=1.1 to foo/bar>=1.1v0 ?? >> >> Yes, that's the main reason that led to introducing PKGSPEC in bsd.port.mk >> and tweaking _print-metadata, so we didn't hav to change every >> dependent port. >> >> You still need to bump REVISION in dependent port when you change PKGSPEC >> though. > > Thanks Marc, I tried to include that too. > All patches updated and attached again. > > Cheers,
Comments inline, > Index: bsd.port.mk.5 > =================================================================== > RCS file: /home/cvs/src/share/man/man5/bsd.port.mk.5,v > retrieving revision 1.528 > diff -u -p -r1.528 bsd.port.mk.5 > --- bsd.port.mk.5 24 Mar 2020 14:59:52 -0000 1.528 > +++ bsd.port.mk.5 25 Mar 2020 20:07:07 -0000 > @@ -1650,6 +1650,10 @@ If set to > will not open changed files in an editor. > .It Ev EPOCH > Epoch number of the current package. > +Used when the port version is changed but the new version is not regarded by > +.Xr packages-specs 5 5 -> 7 > +as being newer. > +Once added, it cannot be removed or go backwards. otherwise, ok jca@ for this hunk > Defaults to empty (no need for numbering changes), then > numbering starts at 0. > Gets automatically incorporated into > @@ -1658,6 +1662,12 @@ as > .Sq v${EPOCH} > to form a full package-name conforming to > .Xr packages-specs 7 . > +If there are dependent packages that use a version spec, this has to be > +adjusted for each one or > +.Ev PKGSPEC > +changed on the affected package and > +.Ev REVISION > +bumped for all the dependencies. Hmm, like Marc said this is not the place to mention PKGSPEC. > .It Ev ERRORS > List of errors found while parsing the port's Makefile. > Display the errors before making any target, and if any error starts with > > [3. text/plain; packages-specs.diff] > Index: packages-specs.7 > =================================================================== > RCS file: /home/cvs/src/share/man/man7/packages-specs.7,v > retrieving revision 1.25 > diff -u -p -r1.25 packages-specs.7 > --- packages-specs.7 27 Oct 2014 22:45:30 -0000 1.25 > +++ packages-specs.7 15 Mar 2020 11:25:27 -0000 > @@ -144,12 +144,46 @@ then normal version, and finally > .El > .El > .Pp > -In some rare cases, version numbering changes completely upstream. > +In some rare cases, a change to a port would cause the version number to > +compare as older than the previous version. > +This happens if an update is reverted, if upstream's numbering scheme changes > +completely, or if their usual scheme does not align with the one used by > +.Ox . ok jca@ for this hunk > A version style marker, of the form > .Sq v0 , > .Sq v1 ... > can be appended to the version number (after the patch level) > to denote the new numbering scheme. > +This is added by setting > +.Ev EPOCH > +in the port Makefile. > +Combined with > +.Ev REVISION , > +this leaves the version ordering as follows: > +.Bl -dash > +.It > +"0.1" is older than "0.1p0" > +.It > +"0.1p0" (or > +.Sq p1 , > +.Sq p2 ... ) > +is older than "0.2" > +.It > +"0.2" is older than "0.1v0" (or any other version number without > +.Sq v ) > +.It > +"0.1v0" is older than "0.1p0v0". > +Just as showed in the first point. > +.It > +"0.1p0v0" is older than "0.2v0". > +The same as the second point. > +.It > +"0.2v0" is older than "0.1v1" (or any other version with a lower > +.Sq v > +value) > +.El > +.El > +.Pp I find this a bit too chatty. Can we find a single sentence that explains what happens? ... A version style marker, of the form ‘v0’, ‘v1 ...’ can be appended to the version number (after the patch level) to denote the new numbering scheme. +This marker takes precedence over the regular package version. Thoughts? > See > .Ev EPOCH > in > > [4. text/plain; ports-guide.diff] > Index: faq/ports/guide.html > =================================================================== > RCS file: /home/cvs/www/faq/ports/guide.html,v > retrieving revision 1.89 > diff -u -p -r1.89 guide.html > --- faq/ports/guide.html 28 Sep 2019 21:35:05 -0000 1.89 > +++ faq/ports/guide.html 14 Mar 2020 14:39:36 -0000 > @@ -1131,6 +1131,8 @@ changes to patches or build flags. > If the upstream version has not changed, the package name bump is done > by incrementing <code>REVISION</code> if already present, otherwise adding > <code>REVISION = 0</code> towards the top of the Makefile. > +This will add <code>p${REVISION}</code> to <code>FULLPKGNAME</code> to form > a full > +package-name conforming to packages-specs(7). > > <li> > Version numbers always go forward. > @@ -1138,6 +1140,8 @@ If something unexpected happens and you > upstream numbering changes completely so that the version number appears > to go backwards, you must use <code>EPOCH</code> to make sure pkg_add(1) sees > the package as a newer package. > +This will add <code>v${EPOCH}</code> to <code>FULLPKGNAME</code> to form a > full > +package-name conforming to packages-specs(7). > > <li> > If the package does not build, no bump is needed: changes to restore a port > @@ -1153,6 +1157,11 @@ The package system uses a signature mech > is fully identified by its package names, plus the dependencies against > which it was built, plus the version numbers of all shared libraries it > contains. I'd be tempted to leave this as is, or only add something like what you propose below. I'm not objecting though. :) > + > +<li> > +The version comparison ordering can be summarized as: > +<code>0.1 < 0.1p0 < 0.2 < 0.1v0 < 0.1p0v0 < 0.2v0 < > 0.1v1</code>. > +Check packages-specs(7) for more detailed information. > </ul> > > Part of the work will happen before the update itself. -- jca | PGP : 0x1524E7EE / 5135 92C1 AD36 5293 2BDF DDCC 0DFA 74AE 1524 E7EE