Gentoo Archives: gentoo-dev

From: "Michał Górny" <mgorny@g.o>
To: gentoo-dev@l.g.o
Cc: "Michał Górny" <mgorny@g.o>
Subject: [gentoo-dev] [PATCH] glep-0068: Add new <stabilization-candidates/> element
Date: Wed, 16 Sep 2020 05:48:26
Message-Id: 20200916054811.4017-1-mgorny@gentoo.org
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

Replies