Gentoo Archives: gentoo-dev

From: Brian Dolbec <dolsen@g.o>
To: gentoo-dev@l.g.o
Subject: Re: [gentoo-dev] Proposal: profiles/arches.desc - improve repoman flexibility (with other benefits)
Date: Sun, 26 Mar 2017 20:04:34
Message-Id: 20170326130418.253b974f.dolsen@gentoo.org
In Reply to: [gentoo-dev] Proposal: profiles/arches.desc - improve repoman flexibility (with other benefits) by "Andreas K. Huettel"
1 On Sun, 26 Mar 2017 20:54:51 +0200
2 "Andreas K. Huettel" <dilfridge@g.o> wrote:
3
4 > Hey all,
5 >
6 > here's the updated proposal for a new "arches.desc" file, after
7 > feedback.
8 >
9 > In short:
10 > We introduce a new file "arches.desc" which essentially describes if
11 > an arch (not a profile) is stable or not. The meaning of
12 > profiles.desc is not affected; profiles.desc still describes single
13 > profiles of each arch. This is introduced in particular to help
14 > moving arches from stable to testing while keeping the "~arch"
15 > deptree consistent, or moving arches from testing to stable and
16 > easily preparing a consistent "arch" deptree.
17 >
18 > Details:
19 >
20 > 1] File location:
21 > profiles/arches.desc or metadata/arches.desc
22 >
23 >
24 > 2] File format: whitespace-separated, two columns, lines starting
25 > with # are comments
26 > first column: arch name ("amd64")
27 > second column: one of the three values "stable", "testing", "unstable"
28 > Example:
29 > ===========================
30 > # Example arches.desc file
31 > amd64 stable
32 > mips testing
33 > m68k unstable
34 > ===========================
35 >
36
37
38 While this is a simple format. This is not a standard data input file
39 format for language tools to map it into native language variables and
40 types.
41
42 I would much prefer for any new files to be created in a format that
43 most languages have data input modules for and are easily read/edited
44 by humans. While this can be read and split easily in python code. It
45 is not future proof for additional data being added and/or removed.
46
47 For the repoman stage3 rewrites. I am moving all configurable data
48 from the code into yaml based files in /metadata/repoman. These files
49 will be easily edited by all developers for updates to banned eclasses
50 and various other values not needing code changes.
51
52 So with a general file name of arches.desc Is there any other data
53 that we want to include in that file? Possibly migrated from other
54 file(s). In that case a dictionary format yaml file might be best.
55 My example below has additional info over what was proposed.
56 It is an example only to show the possible benefit of such a file type.
57
58 ie:
59 -----------------------------------------------------------------------
60 ---
61 # the --- in the first line indicates this as a yaml file
62 # comments are allowed as well as whitespace
63 # DATA format for arches is dictionary
64
65 amd64:
66 stability: stable
67 bits: 64
68 description: Includes CPU manufaturers such as Intel, AMD, others...
69 comments: The most common/popular arch in the tree...
70 email: amd64@...
71
72 mips:
73 stability: testing
74 bits: 32
75 description: Risc based achitecture ... (not fact checked)
76 comments: Primarily used in some laptops and single board development systems...
77 email: foo@...
78
79 m68k:
80 stability: unstable
81 bits: 8
82 description: Motorola...
83 comments: embedded...
84 email: embedded@...
85 EOF
86 -----------------------------------------------------------------------------
87 The above example makes it easily modified to include new / remove obsolete data in the future.
88 The above list could add or remove the email field without affecting the proposed use of the
89 stability field used by any applications. That is not the case with a position dependent
90 space separated list as was proposed.
91
92 Nearly all language types have native parsers for this type of file (no custom parser code required).
93 the above file info can easily be manipulated into various lists such as archlist, stable_arches, testing_arches,...
94 or any other data that is included for them.
95
96 >
97 > 3] Meaning of the three values "stable", "testing", "unstable" for
98 > repoman
99 >
100 > * stable: When a profile of arch is tested, then repoman checks
101 > consistency for "arch" and for "~arch" separately.
102 > Which profiles of the arch are tested is still controlled by
103 > profiles.desc (and -d / -e switches).
104 > This is the current behaviour and should be the default if nothing is
105 > specified for an arch.
106 >
107 > * testing: When a profile of arch is tested, then repoman treats
108 > "arch" as "~arch", and tests consistency only for "~arch".
109 > Which profiles of the arch are tested is still controlled by
110 > profiles.desc (and -d / -e switches).
111 > A new switch for repoman may be provided to temporarily upgrade an
112 > arch from "testing" to "stable" (for arch team work).
113 >
114 > * unstable: When a profile of arch is tested, then repoman treats
115 > "arch" as an error and aborts. Consistency is only tested for "~arch".
116 > Which profiles of the arch are tested is still controlled by
117 > profiles.desc (and -d / -e switches).
118 >
119 > * optionally, additional value "broken":
120 > Do not test this arch at all. (In my opinion not necessary, since we
121 > can always set all profiles of an arch to exp.)
122 >
123 >
124 > 4] Meaning for other tools
125 > All arches set to "stable" are considered "stable arches", meaning
126 > * they get listed first in eshowkw
127 > * they require stabilization requests in bugzilla
128 > * ...
129 >
130 >
131 > 5] Initial value in the Gentoo repository
132 > On introduction, the setting will be "stable" for all stable arches,
133 > "testing" for all arches where "inofficial" stable keywords exist
134 > (sh, s390, ...), and "unstable" everywhere else.
135 >
136 >
137 > 6] Rationale
138 > At the moment we have several cases where repoman finds its limits:
139 >
140 > a) An arch loses its stable status (imagine s390), but the arch team
141 > doesnt want to drop all the stable keywords since they are useful for
142 > stage building. Since stable keywords on s390 are an
143 > arch-team-internal thing, everyone can drop the latest stable version
144 > of a package, and it's the arch team's responsibility to keep their
145 > "unofficial stable tree" straight. Right now this means that we have
146 > to set all *profiles* of this arch to "exp", otherwise repoman throws
147 > errors about a broken stable deptree. If we do that, repoman does
148 > however also not check ~s390 consistency, meaning that the ~s390
149 > deptree will soon be broken as well. With arches.conf, one could set
150 > (arch: testing, profile: stable), which results in stable keywords
151 > being ignored, but the ~s390 deptree still being enforced.
152 >
153 > b) An arch prepares for becoming a stable arch (think arm64).
154 > So, first the ~arm64 deptree should be fine, and then stable keywords
155 > can be added. However, to avoid repoman errors as long as the stable
156 > deptree isnt complete yet the profiles need to be set to dev/exp, and
157 > again this brings the danger of the ~arm64 deptree getting
158 > inadvertently broken. Again the combination (arch: testing, profile:
159 > stable) helps.
160 >
161 > Finally, at the moment the "semi-official" algorithm to figure out if
162 > an *arch* is stable (i.e., requires stabilization requests etc bla
163 > bla) is to check if the arch has any stable profile. This makes
164 > non-stable arches which want to keep a consistent deptree (think
165 > mips) impossible. Reading the arch status from arches.desc instead
166 > solves this problem.
167 >
168 >
169 > 7] Compatibility
170 >
171 > a) No arches.desc and new system, or arch not listed in arches.desc
172 > Arches are treated as "stable" by repoman (current behaviour), with
173 > profile status according to profiles.desc. So, business as usual.
174 > Gentoolkit and other tools trying to determine a list of stable
175 > arches should fall back to current method of scanning profiles.desc
176 > for stable profiles.
177 >
178 > b) arches.desc and old system
179 > Tools ignore the unknown file (?).
180 > Repoman and other tools may emit surplus dependency errors when
181 > profiles are checked on arches that are "testing" (they check the
182 > consistency of the stable tree alone, which is not OK, since "arch"
183 > is supposed to be treated like "~arch"). This affects only
184 > development work and can be fixed by updating repoman.
185 >
186 > c) PMS may need to be amended to allow the additional file.
187 >
188 >
189 > 8] Several repositories
190 >
191 > If arches.desc is present in several repositories, then the strictest
192 > setting for an arch wins. [I don't really see many usecases for this
193 > though.]
194 >
195 >
196 > Congratulations for getting this far. What's your opinion?
197 >
198
199
200
201 --
202 Brian Dolbec <dolsen>

Replies