Gentoo Archives: gentoo-dev

From: "Andreas K. Huettel" <dilfridge@g.o>
To: gentoo-dev@l.g.o
Subject: [gentoo-dev] Proposal: profiles/arches.desc - improve repoman flexibility (with other benefits)
Date: Sun, 26 Mar 2017 18:55:17
Message-Id: 6424004.PPzMOMgi8v@pinacolada
1 Hey all,
2
3 here's the updated proposal for a new "arches.desc" file, after feedback.
4
5 In short:
6 We introduce a new file "arches.desc" which essentially describes if an arch
7 (not a profile) is stable or not. The meaning of profiles.desc is not affected;
8 profiles.desc still describes single profiles of each arch.
9 This is introduced in particular to help moving arches from stable to testing
10 while keeping the "~arch" deptree consistent, or moving arches from testing to
11 stable and easily preparing a consistent "arch" deptree.
12
13 Details:
14
15 1] File location:
16 profiles/arches.desc or metadata/arches.desc
17
18
19 2] File format: whitespace-separated, two columns, lines starting with # are
20 comments
21 first column: arch name ("amd64")
22 second column: one of the three values "stable", "testing", "unstable"
23 Example:
24 ===========================
25 # Example arches.desc file
26 amd64 stable
27 mips testing
28 m68k unstable
29 ===========================
30
31
32 3] Meaning of the three values "stable", "testing", "unstable" for repoman
33
34 * stable: When a profile of arch is tested, then repoman checks consistency for
35 "arch" and for "~arch" separately.
36 Which profiles of the arch are tested is still controlled by profiles.desc (and
37 -d / -e switches).
38 This is the current behaviour and should be the default if nothing is specified
39 for an arch.
40
41 * testing: When a profile of arch is tested, then repoman treats "arch" as
42 "~arch", and tests consistency only for "~arch".
43 Which profiles of the arch are tested is still controlled by profiles.desc (and
44 -d / -e switches).
45 A new switch for repoman may be provided to temporarily upgrade an arch from
46 "testing" to "stable" (for arch team work).
47
48 * unstable: When a profile of arch is tested, then repoman treats "arch" as an
49 error and aborts. Consistency is only tested for "~arch".
50 Which profiles of the arch are tested is still controlled by profiles.desc (and
51 -d / -e switches).
52
53 * optionally, additional value "broken":
54 Do not test this arch at all. (In my opinion not necessary, since we can
55 always set all profiles of an arch to exp.)
56
57
58 4] Meaning for other tools
59 All arches set to "stable" are considered "stable arches", meaning
60 * they get listed first in eshowkw
61 * they require stabilization requests in bugzilla
62 * ...
63
64
65 5] Initial value in the Gentoo repository
66 On introduction, the setting will be "stable" for all stable arches, "testing"
67 for all arches where "inofficial" stable keywords exist (sh, s390, ...), and
68 "unstable" everywhere else.
69
70
71 6] Rationale
72 At the moment we have several cases where repoman finds its limits:
73
74 a) An arch loses its stable status (imagine s390), but the arch team doesnt
75 want to drop all the stable keywords since they are useful for stage building.
76 Since stable keywords on s390 are an arch-team-internal thing, everyone can
77 drop the latest stable version of a package, and it's the arch team's
78 responsibility to keep their "unofficial stable tree" straight.
79 Right now this means that we have to set all *profiles* of this arch to "exp",
80 otherwise repoman throws errors about a broken stable deptree. If we do that,
81 repoman does however also not check ~s390 consistency, meaning that the
82 ~s390 deptree will soon be broken as well.
83 With arches.conf, one could set (arch: testing, profile: stable), which results
84 in stable keywords being ignored, but the ~s390 deptree still being enforced.
85
86 b) An arch prepares for becoming a stable arch (think arm64).
87 So, first the ~arm64 deptree should be fine, and then stable keywords can be
88 added. However, to avoid repoman errors as long as the stable deptree isnt
89 complete yet the profiles need to be set to dev/exp, and again this brings the
90 danger of the ~arm64 deptree getting inadvertently broken. Again the
91 combination (arch: testing, profile: stable) helps.
92
93 Finally, at the moment the "semi-official" algorithm to figure out if an *arch*
94 is stable (i.e., requires stabilization requests etc bla bla) is to check if
95 the arch has any stable profile. This makes non-stable arches which want to
96 keep a consistent deptree (think mips) impossible. Reading the arch status
97 from arches.desc instead solves this problem.
98
99
100 7] Compatibility
101
102 a) No arches.desc and new system, or arch not listed in arches.desc
103 Arches are treated as "stable" by repoman (current behaviour), with profile
104 status according to profiles.desc. So, business as usual.
105 Gentoolkit and other tools trying to determine a list of stable arches should
106 fall back to current method of scanning profiles.desc for stable profiles.
107
108 b) arches.desc and old system
109 Tools ignore the unknown file (?).
110 Repoman and other tools may emit surplus dependency errors when profiles are
111 checked on arches that are "testing" (they check the consistency of the stable
112 tree alone, which is not OK, since "arch" is supposed to be treated like
113 "~arch"). This affects only development work and can be fixed by updating
114 repoman.
115
116 c) PMS may need to be amended to allow the additional file.
117
118
119 8] Several repositories
120
121 If arches.desc is present in several repositories, then the strictest setting
122 for an arch wins. [I don't really see many usecases for this though.]
123
124
125 Congratulations for getting this far. What's your opinion?
126
127 --
128 Andreas K. Hüttel
129 dilfridge@g.o
130 Gentoo Linux developer (council, perl, libreoffice)

Attachments

File name MIME type
signature.asc application/pgp-signature

Replies