Re: [gentoo-dev] [PATCH] glep-0068: Add new element

2020-09-16 Thread Jaco Kroon


-BEGIN PGP SIGNED MESSAGE-
Hash: SHA256

Hi,

On 2020/09/16 11:39, Michał Górny wrote:

> On Wed, 2020-09-16 at 11:13 +0200, Jaco Kroon wrote:
>>
>>> +- at most one  element containing
version
>>> +  constraints used to determine stabilization candidates, as detailed
>>> +  in `Stabilization candidates`_.
>>> +
>> At most one ...
>
> Do you mean capatilization?  It's following suit with other items here.
Sorry, was unclear, this correlates with the second comment below.
>>>  - zero or more  elements, possibly restricted
>>>    to specific package versions (at most one for each version) whose
presence
>>>    indicates that the appropriate ebuilds are suitable for
simultaneously
>>> @@ -199,6 +203,25 @@ The  element can contain the
following elements:
>>>  - at most one  element describing the role of
subslots (all
>>>    of them) as text.
>>>  
>>> +Stabilization candidates
>>> +
>>> +Each  element describes version
>>
>> vs each (implies any number).  I'd simply say, "If present, the
``
> Again, this follows suit with other descriptions.

If this is the standard, this is the standard, was just trying to point
out that this could be considered a conflict.

>>> +constraints used to determine package versions eligible
>>> +for stabilization.  Should this element be missing, the tooling assumes
>>> +a default of any version with any keywords present (i.e. the equivalent
>>> +of ``>=0``).
>>> +
>>> +The  element can contain the following
>>> +elements:
>>> +
>>> +- one or more  elements, each containing a version
>>> +  constraint in the format matching EAPI 0 dependency specification
>>> +  with the package category and name parts omitted, e.g. ``<1.7``.
>>> +  The tooling considers any ebuild version that satisfies the
constraint
>>> +  and has any keywords.  If multiple constraints are provided,
every one
>>> +  of them is matched separately, and multiple stabilization candidates
>>> +  can be reported.
>>
>> I think it's clear from context that there should be one or more, but
>> the language ("can contain" in the leading paragraph) implies all sub
>> elements are optional.  Perhaps:
>>
>> The ... element:
>>
>> - must contain one or more ...
>>
>> Which also allows for future "may contain" sub elements.
>>
>
> To be honest, I'm not sure if we should permit or prohibit empty element
> in the spec.

pick one.  But I'd use the word may (clearly optional) or must (clearly
compulsory) rather than can.

Kind Regards,
Jaco


-BEGIN PGP SIGNATURE-

iQEzBAEBCAAdFiEEyyCUcKjG7P5BDam8CC3Esa/37p4FAl9h9YMACgkQCC3Esa/3
7p5XtQf9H6kcStCzBz75rOVhoswzhIafZWXJnurAYHvEvM3vrWrMzh46Bc3aZZLo
fo2+lg7Z9lw0iBxJjub/nexBR9D8XwCa3aW/G75Hgd5XcC54LfKRFGqGKHS9Zu9z
GT96Ijqo4aS2PlepD0Qk8jVTnngzB5opasH3nNgR2u6WSEQHtkCE8lg2A1Z0hr3i
PmO/kzvHnZxsais9wp7kkZn+ftGbI1Wuq6Gus3Yy3qWp2k6KTwD49VdN3y7Skk3s
T3ULl/+ui/FqwGGDjlQw0MW8o2mJ76VrQoMTiMG7IErFz9BzJ3djf/bgXg8YjHc5
kjo/h1tLcj7WvLphz9gdhGt4Sk85Sw==
=WdPf
-END PGP SIGNATURE-




Re: [gentoo-dev] [PATCH] glep-0068: Add new element

2020-09-16 Thread Michał Górny
On Wed, 2020-09-16 at 11:13 +0200, Jaco Kroon wrote:
> Hi Michał,
> 
> Thanks for your efforts.  This looks interesting at the very least, and
> whilst in many cases on posts on this ML I'm on the "don't care" stance,
> this one looks like it could solve some problems for me. 
> net-misc/asterisk + friends will definitely make use of this.
> 
> Two nitpicks below that doesn't really carry significant meaning.
> 
> On 2020/09/16 07:48, Michał Górny wrote:
> 
> > Signed-off-by: Michał Górny 
> > ---
> >  glep-0068.rst | 62 ---
> >  1 file changed, 59 insertions(+), 3 deletions(-)
> > 
> > diff --git a/glep-0068.rst b/glep-0068.rst
> > index d8fc379..5b7e2b9 100644
> > --- a/glep-0068.rst
> > +++ b/glep-0068.rst
> > @@ -4,10 +4,10 @@ Title: Package and category metadata
> >  Author: Michał Górny 
> >  Type: Standards Track
> >  Status: Final
> > -Version: 1.1
> > +Version: 1.2
> >  Created: 2016-03-14
> > -Last-Modified: 2020-05-06
> > -Post-History: 2016-03-16, 2018-02-20
> > +Last-Modified: 2020-09-16
> > +Post-History: 2016-03-16, 2018-02-20, 2020-09-16
> >  Content-Type: text/x-rst
> >  Requires: 67
> >  Replaces: 34, 46, 56
> > @@ -149,6 +149,10 @@ element can contain, in any order:
> >languages (at most one for each language), as detailed
> >in `Slot descriptions`_.
> >  
> > +- at most one  element containing version
> > +  constraints used to determine stabilization candidates, as detailed
> > +  in `Stabilization candidates`_.
> > +
> At most one ...

Do you mean capatilization?  It's following suit with other items here.

> >  - zero or more  elements, possibly restricted
> >to specific package versions (at most one for each version) whose 
> > presence
> >indicates that the appropriate ebuilds are suitable for simultaneously
> > @@ -199,6 +203,25 @@ The  element can contain the following 
> > elements:
> >  - at most one  element describing the role of subslots (all
> >of them) as text.
> >  
> > +Stabilization candidates
> > +
> > +Each  element describes version
> 
> vs each (implies any number).  I'd simply say, "If present, the `` 
> > +constraints used to determine package versions eligible
> > +for stabilization.  Should this element be missing, the tooling assumes
> > +a default of any version with any keywords present (i.e. the equivalent
> > +of ``>=0``).
> > +
> > +The  element can contain the following
> > +elements:
> > +
> > +- one or more  elements, each containing a version
> > +  constraint in the format matching EAPI 0 dependency specification
> > +  with the package category and name parts omitted, e.g. ``<1.7``.
> > +  The tooling considers any ebuild version that satisfies the constraint
> > +  and has any keywords.  If multiple constraints are provided, every one
> > +  of them is matched separately, and multiple stabilization candidates
> > +  can be reported.
> 
> I think it's clear from context that there should be one or more, but
> the language ("can contain" in the leading paragraph) implies all sub
> elements are optional.  Perhaps:
> 
> The ... element:
> 
> - must contain one or more ...
> 
> Which also allows for future "may contain" sub elements.
> 

To be honest, I'm not sure if we should permit or prohibit empty element
in the spec.

-- 
Best regards,
Michał Górny



signature.asc
Description: This is a digitally signed message part


Re: [gentoo-dev] [PATCH] glep-0068: Add new element

2020-09-16 Thread Jaco Kroon
Hi Michał,

Thanks for your efforts.  This looks interesting at the very least, and
whilst in many cases on posts on this ML I'm on the "don't care" stance,
this one looks like it could solve some problems for me. 
net-misc/asterisk + friends will definitely make use of this.

Two nitpicks below that doesn't really carry significant meaning.

On 2020/09/16 07:48, Michał Górny wrote:

> Signed-off-by: Michał Górny 
> ---
>  glep-0068.rst | 62 ---
>  1 file changed, 59 insertions(+), 3 deletions(-)
>
> diff --git a/glep-0068.rst b/glep-0068.rst
> index d8fc379..5b7e2b9 100644
> --- a/glep-0068.rst
> +++ b/glep-0068.rst
> @@ -4,10 +4,10 @@ Title: Package and category metadata
>  Author: Michał Górny 
>  Type: Standards Track
>  Status: Final
> -Version: 1.1
> +Version: 1.2
>  Created: 2016-03-14
> -Last-Modified: 2020-05-06
> -Post-History: 2016-03-16, 2018-02-20
> +Last-Modified: 2020-09-16
> +Post-History: 2016-03-16, 2018-02-20, 2020-09-16
>  Content-Type: text/x-rst
>  Requires: 67
>  Replaces: 34, 46, 56
> @@ -149,6 +149,10 @@ element can contain, in any order:
>languages (at most one for each language), as detailed
>in `Slot descriptions`_.
>  
> +- at most one  element containing version
> +  constraints used to determine stabilization candidates, as detailed
> +  in `Stabilization candidates`_.
> +
At most one ...
>  - zero or more  elements, possibly restricted
>to specific package versions (at most one for each version) whose presence
>indicates that the appropriate ebuilds are suitable for simultaneously
> @@ -199,6 +203,25 @@ The  element can contain the following 
> elements:
>  - at most one  element describing the role of subslots (all
>of them) as text.
>  
> +Stabilization candidates
> +
> +Each  element describes version

vs each (implies any number).  I'd simply say, "If present, the `` +constraints used to determine package versions eligible
> +for stabilization.  Should this element be missing, the tooling assumes
> +a default of any version with any keywords present (i.e. the equivalent
> +of ``>=0``).
> +
> +The  element can contain the following
> +elements:
> +
> +- one or more  elements, each containing a version
> +  constraint in the format matching EAPI 0 dependency specification
> +  with the package category and name parts omitted, e.g. ``<1.7``.
> +  The tooling considers any ebuild version that satisfies the constraint
> +  and has any keywords.  If multiple constraints are provided, every one
> +  of them is matched separately, and multiple stabilization candidates
> +  can be reported.

I think it's clear from context that there should be one or more, but
the language ("can contain" in the leading paragraph) implies all sub
elements are optional.  Perhaps:

The ... element:

- must contain one or more ...

Which also allows for future "may contain" sub elements.

Kind Regards,
Jaco




Re: [gentoo-dev] [PATCH] glep-0068: Add new element

2020-09-16 Thread Michał Górny
On Wed, 2020-09-16 at 10:26 +0200, Ulrich Mueller wrote:
> > > > > > On Wed, 16 Sep 2020, Michał Górny wrote:
> > It has two advantages:
> > 1. It reduces the risk of accidentally leaving it in the stable ebuild.
> 
> Huh, you mean you would remove the PROPERTIES token again, after the
> version has been stabilised? Why?

No, I mean removing it when bumping from version unsuitable to
be a stable candidate to one that is suitable.  What's really
problematic is that this mistake will be easy to miss, especially if
someone relies on pkgcheck entirely to determine when to stabilize
stuff.

> 
> Ebuilds could do conditionals like this (again, an example that would
> work for app-editors/emacs):
> 
> [[ ${PV//[0-9]} == "." ]] && PROPERTIES+="stablecandidate"

Yes, provided that developers will actually do that.

> > 2. It handles specifying multiple stabilization candidates on different
> > branches.  I don't see how ebuilds would do that.
> 
> I don't understand. Why couldn't PROPERTIES be specified in different
> slots?
> 

How would you distinguish the ebuild group that represent the same
upstream branch (i.e. expecting only one report from the group) from
other upstream branches?

-- 
Best regards,
Michał Górny



signature.asc
Description: This is a digitally signed message part


Re: [gentoo-dev] [PATCH] glep-0068: Add new element

2020-09-16 Thread Ulrich Mueller
> On Wed, 16 Sep 2020, Michał Górny wrote:

> It has two advantages:

> 1. It reduces the risk of accidentally leaving it in the stable ebuild.

Huh, you mean you would remove the PROPERTIES token again, after the
version has been stabilised? Why?

Ebuilds could do conditionals like this (again, an example that would
work for app-editors/emacs):

[[ ${PV//[0-9]} == "." ]] && PROPERTIES+="stablecandidate"

> 2. It handles specifying multiple stabilization candidates on different
> branches.  I don't see how ebuilds would do that.

I don't understand. Why couldn't PROPERTIES be specified in different
slots?

Ulrich


signature.asc
Description: PGP signature


Re: [gentoo-dev] [PATCH] glep-0068: Add new element

2020-09-16 Thread Michał Górny
On Wed, 2020-09-16 at 08:18 +0200, Ulrich Mueller wrote:
> > > > > > On Wed, 16 Sep 2020, Michał Górny wrote:
>  
> > +- one or more  elements, each containing a version
> > +  constraint in the format matching EAPI 0 dependency specification
> > +  with the package category and name parts omitted, e.g. ``<1.7``.
> 
> That's not a very powerful syntax, so unless I miss something,
> metadata.xml would have to be updated for almost every stable candidate.
> 
> To give an example, released versions of app-editors/emacs have exactly
> two numerical components, while prereleases and release candidates have
> three components or are marked _rc. Both would be impossible to match
> with the proposed syntax.

It's not 'one size fits all'.  It will work for a number of packages,
e.g. XFCE without too frequent updates.  In the end, it's primarily
designed around 'silencing' StableRequest results once they are
reported, i.e. for packages that have long-ish RC periods.

> So IMHO this has no advantage over keeping the information in the ebuild
> (e.g. as a PROPERTIES token).
> 

It has two advantages:

1. It reduces the risk of accidentally leaving it in the stable ebuild.

2. It handles specifying multiple stabilization candidates on different
branches.  I don't see how ebuilds would do that.

-- 
Best regards,
Michał Górny



signature.asc
Description: This is a digitally signed message part


Re: [gentoo-dev] [PATCH] glep-0068: Add new element

2020-09-16 Thread Ulrich Mueller
> On Wed, 16 Sep 2020, Michał Górny wrote:
 
> +- one or more  elements, each containing a version
> +  constraint in the format matching EAPI 0 dependency specification
> +  with the package category and name parts omitted, e.g. ``<1.7``.

That's not a very powerful syntax, so unless I miss something,
metadata.xml would have to be updated for almost every stable candidate.

To give an example, released versions of app-editors/emacs have exactly
two numerical components, while prereleases and release candidates have
three components or are marked _rc. Both would be impossible to match
with the proposed syntax.

So IMHO this has no advantage over keeping the information in the ebuild
(e.g. as a PROPERTIES token).

Ulrich


signature.asc
Description: PGP signature


[gentoo-dev] [PATCH] glep-0068: Add new element

2020-09-15 Thread Michał Górny
Signed-off-by: Michał Górny 
---
 glep-0068.rst | 62 ---
 1 file changed, 59 insertions(+), 3 deletions(-)

diff --git a/glep-0068.rst b/glep-0068.rst
index d8fc379..5b7e2b9 100644
--- a/glep-0068.rst
+++ b/glep-0068.rst
@@ -4,10 +4,10 @@ Title: Package and category metadata
 Author: Michał Górny 
 Type: Standards Track
 Status: Final
-Version: 1.1
+Version: 1.2
 Created: 2016-03-14
-Last-Modified: 2020-05-06
-Post-History: 2016-03-16, 2018-02-20
+Last-Modified: 2020-09-16
+Post-History: 2016-03-16, 2018-02-20, 2020-09-16
 Content-Type: text/x-rst
 Requires: 67
 Replaces: 34, 46, 56
@@ -149,6 +149,10 @@ element can contain, in any order:
   languages (at most one for each language), as detailed
   in `Slot descriptions`_.
 
+- at most one  element containing version
+  constraints used to determine stabilization candidates, as detailed
+  in `Stabilization candidates`_.
+
 - zero or more  elements, possibly restricted
   to specific package versions (at most one for each version) whose presence
   indicates that the appropriate ebuilds are suitable for simultaneously
@@ -199,6 +203,25 @@ The  element can contain the following 
elements:
 - at most one  element describing the role of subslots (all
   of them) as text.
 
+Stabilization candidates
+
+Each  element describes version
+constraints used to determine package versions eligible
+for stabilization.  Should this element be missing, the tooling assumes
+a default of any version with any keywords present (i.e. the equivalent
+of ``>=0``).
+
+The  element can contain the following
+elements:
+
+- one or more  elements, each containing a version
+  constraint in the format matching EAPI 0 dependency specification
+  with the package category and name parts omitted, e.g. ``<1.7``.
+  The tooling considers any ebuild version that satisfies the constraint
+  and has any keywords.  If multiple constraints are provided, every one
+  of them is matched separately, and multiple stabilization candidates
+  can be reported.
+
 USE flag descriptions
 ~
 Each  element describes USE flags of a package (in specific
@@ -378,6 +401,39 @@ package version restrictions and maintainer descriptions 
were also implicitly
 allowed on them. Since neither of the two was allowed by GLEP 46, this
 specification disallows them.
 
+Stabilization candidates
+
+Version 1.2 of the specification adds stabilization candidate versions.
+The primary goal of this is to provide a more fine-grained control
+of tooling reporting stabilization candidates.  Previously, pkgcheck
+reported only the newest keyworded version that was eligible for
+stabilization according to the 30-day testing period.  This had two
+limitations.
+
+Firstly, it did not account for development branches properly
+and reported them as stabilization candidates.  While we could
+technically blacklist ``_alpha``, ``_beta``, ``_rc`` versions,
+this would not work for all packages.  Some GNOME and XFCE packages use
+odd numbers in minor version to indicate development branch.
+On the other hand, there are stagnant packages that stay in pre-release
+state for months, and stabilizing these versions also makes sense.
+
+Secondly, it did not account for software maintaining multiple parallel
+stable branches.  As soon as the newer version became eligible
+for stabilization, new releases of the older branches were not reported.
+In some cases, users are bound to old versions because of dependencies
+(e.g. on Python 2.7).
+
+The proposed ‘whitelist-override’ syntax aims to help with both cases.
+The default preserves current behavior.  A single override such
+as ``<1.7`` can be used to explicitly ignore development branch,
+and request stabilization candidates from earlier versions.  Multiple
+version constraints (say, ``<5.9`` and ``<5.5``) can be used to request
+monitoring multiple upstream branches.
+
+This information can also be consumed by users to opt-out of development
+versions and keep their systems running potential stable candidates.
+
 
 Backwards Compatibility
 ===
-- 
2.28.0