Signed-off-by: Michał Górny <mgo...@gentoo.org>
---
 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 <mgo...@gentoo.org>
 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 ``<stabilization-candidates/>`` element containing version
+  constraints used to determine stabilization candidates, as detailed
+  in `Stabilization candidates`_.
+
 - zero or more ``<stabilize-allarches/>`` 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 ``<slots/>`` element can contain the following 
elements:
 - at most one ``<subslots/>`` element describing the role of subslots (all
   of them) as text.
 
+Stabilization candidates
+~~~~~~~~~~~~~~~~~~~~~~~~
+Each ``<stabilization-candidates/>`` 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 ``<stabilization-candidates/>`` element can contain the following
+elements:
+
+- one or more ``<version/>`` 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 ``<use/>`` 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


Reply via email to