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> |