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