Hi ports@, Find attached 3 diffs for bsd.ports.mk(5), packages-specs(7) and www/faq/ports/guide.html
This comes from a question I asked yesterday about REVISION and EPOCH which naddy@ tried to explain to me. I think this explanation was really clear and simple and I have been encouraged to add it to the related documentation. I basically repeated/adapted some bits and pieces between the 3 sources and added naddy's "graphical" explanation. I'm aware this changes are pretty rough, but I send them hoping to get comments and discussion. Cheers, -- Paco Esteban. 0x5818130B8A6DBC03
Index: bsd.port.mk.5 =================================================================== RCS file: /home/cvs/src/share/man/man5/bsd.port.mk.5,v retrieving revision 1.527 diff -u -p -r1.527 bsd.port.mk.5 --- bsd.port.mk.5 6 Mar 2020 15:22:44 -0000 1.527 +++ bsd.port.mk.5 14 Mar 2020 14:46:18 -0000 @@ -1632,6 +1632,9 @@ If set to will not open changed files in an editor. .It Ev EPOCH Epoch number of the current package. +Used when version numbering changes completely upstream or an update has to be +reverted. +It always goes forward. Defaults to empty (no need for numbering changes), then numbering starts at 0. Gets automatically incorporated into
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 14 Mar 2020 15:00:42 -0000 @@ -144,12 +144,39 @@ then normal version, and finally .El .El .Pp -In some rare cases, version numbering changes completely upstream. +In some rare cases, version numbering changes completely upstream, or something +unexpected happens and an update has to be reverted. 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. +Combined with +.Ev REVISION , +this leaves the version ordering as follows: +.Bl -dash +.It +"0.1p0" is older than "0.1" +.It +"0.2" is older than "0.1p0" (or +.Sq p1 , +.Sq p2 ... ) +.It +"0.1v0" is older than "0.2" (or any other version number without +.Sq v ) +.It +"0.1p0v0" is older than "0.1v0". +Just as showed in the first point. +.It +"0.2v0" is older than "0.1p0v0". +The same as the second point. +.It +"0.1v1" is older than "0.2v0" (or any other version with a lower +.Sq v +value) +.El +.El +.Pp See .Ev EPOCH in
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. + +<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.