1 |
Signed-off-by: Michał Górny <mgorny@g.o> |
2 |
--- |
3 |
glep-0068.rst | 62 ++++++++++++++++++++++++++++++++++++++++++++++++--- |
4 |
1 file changed, 59 insertions(+), 3 deletions(-) |
5 |
|
6 |
diff --git a/glep-0068.rst b/glep-0068.rst |
7 |
index d8fc379..5b7e2b9 100644 |
8 |
--- a/glep-0068.rst |
9 |
+++ b/glep-0068.rst |
10 |
@@ -4,10 +4,10 @@ Title: Package and category metadata |
11 |
Author: Michał Górny <mgorny@g.o> |
12 |
Type: Standards Track |
13 |
Status: Final |
14 |
-Version: 1.1 |
15 |
+Version: 1.2 |
16 |
Created: 2016-03-14 |
17 |
-Last-Modified: 2020-05-06 |
18 |
-Post-History: 2016-03-16, 2018-02-20 |
19 |
+Last-Modified: 2020-09-16 |
20 |
+Post-History: 2016-03-16, 2018-02-20, 2020-09-16 |
21 |
Content-Type: text/x-rst |
22 |
Requires: 67 |
23 |
Replaces: 34, 46, 56 |
24 |
@@ -149,6 +149,10 @@ element can contain, in any order: |
25 |
languages (at most one for each language), as detailed |
26 |
in `Slot descriptions`_. |
27 |
|
28 |
+- at most one ``<stabilization-candidates/>`` element containing version |
29 |
+ constraints used to determine stabilization candidates, as detailed |
30 |
+ in `Stabilization candidates`_. |
31 |
+ |
32 |
- zero or more ``<stabilize-allarches/>`` elements, possibly restricted |
33 |
to specific package versions (at most one for each version) whose presence |
34 |
indicates that the appropriate ebuilds are suitable for simultaneously |
35 |
@@ -199,6 +203,25 @@ The ``<slots/>`` element can contain the following elements: |
36 |
- at most one ``<subslots/>`` element describing the role of subslots (all |
37 |
of them) as text. |
38 |
|
39 |
+Stabilization candidates |
40 |
+~~~~~~~~~~~~~~~~~~~~~~~~ |
41 |
+Each ``<stabilization-candidates/>`` element describes version |
42 |
+constraints used to determine package versions eligible |
43 |
+for stabilization. Should this element be missing, the tooling assumes |
44 |
+a default of any version with any keywords present (i.e. the equivalent |
45 |
+of ``>=0``). |
46 |
+ |
47 |
+The ``<stabilization-candidates/>`` element can contain the following |
48 |
+elements: |
49 |
+ |
50 |
+- one or more ``<version/>`` elements, each containing a version |
51 |
+ constraint in the format matching EAPI 0 dependency specification |
52 |
+ with the package category and name parts omitted, e.g. ``<1.7``. |
53 |
+ The tooling considers any ebuild version that satisfies the constraint |
54 |
+ and has any keywords. If multiple constraints are provided, every one |
55 |
+ of them is matched separately, and multiple stabilization candidates |
56 |
+ can be reported. |
57 |
+ |
58 |
USE flag descriptions |
59 |
~~~~~~~~~~~~~~~~~~~~~ |
60 |
Each ``<use/>`` element describes USE flags of a package (in specific |
61 |
@@ -378,6 +401,39 @@ package version restrictions and maintainer descriptions were also implicitly |
62 |
allowed on them. Since neither of the two was allowed by GLEP 46, this |
63 |
specification disallows them. |
64 |
|
65 |
+Stabilization candidates |
66 |
+~~~~~~~~~~~~~~~~~~~~~~~~ |
67 |
+Version 1.2 of the specification adds stabilization candidate versions. |
68 |
+The primary goal of this is to provide a more fine-grained control |
69 |
+of tooling reporting stabilization candidates. Previously, pkgcheck |
70 |
+reported only the newest keyworded version that was eligible for |
71 |
+stabilization according to the 30-day testing period. This had two |
72 |
+limitations. |
73 |
+ |
74 |
+Firstly, it did not account for development branches properly |
75 |
+and reported them as stabilization candidates. While we could |
76 |
+technically blacklist ``_alpha``, ``_beta``, ``_rc`` versions, |
77 |
+this would not work for all packages. Some GNOME and XFCE packages use |
78 |
+odd numbers in minor version to indicate development branch. |
79 |
+On the other hand, there are stagnant packages that stay in pre-release |
80 |
+state for months, and stabilizing these versions also makes sense. |
81 |
+ |
82 |
+Secondly, it did not account for software maintaining multiple parallel |
83 |
+stable branches. As soon as the newer version became eligible |
84 |
+for stabilization, new releases of the older branches were not reported. |
85 |
+In some cases, users are bound to old versions because of dependencies |
86 |
+(e.g. on Python 2.7). |
87 |
+ |
88 |
+The proposed ‘whitelist-override’ syntax aims to help with both cases. |
89 |
+The default preserves current behavior. A single override such |
90 |
+as ``<1.7`` can be used to explicitly ignore development branch, |
91 |
+and request stabilization candidates from earlier versions. Multiple |
92 |
+version constraints (say, ``<5.9`` and ``<5.5``) can be used to request |
93 |
+monitoring multiple upstream branches. |
94 |
+ |
95 |
+This information can also be consumed by users to opt-out of development |
96 |
+versions and keep their systems running potential stable candidates. |
97 |
+ |
98 |
|
99 |
Backwards Compatibility |
100 |
======================= |
101 |
-- |
102 |
2.28.0 |