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 &lt; 0.1p0 &lt; 0.2 &lt; 0.1v0 &lt; 0.1p0v0 &lt; 0.2v0 &lt; 
> 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

Reply via email to