1 |
On Wed, Nov 3, 2021 at 1:14 PM Ulrich Mueller <ulm@g.o> wrote: |
2 |
> |
3 |
> >>>>> On Wed, 03 Nov 2021, John Helmert wrote: |
4 |
> |
5 |
> >> | https://projects.gentoo.org/council/meeting-logs/20091109-summary.txt |
6 |
> >> | |
7 |
> >> | Upgrade path for old systems |
8 |
> >> | ---------------------------- |
9 |
> >> | Vote (unanimous): The ebuild tree must provide an upgrade path to a |
10 |
> >> | stable system that hasn't been updated for one year. |
11 |
> |
12 |
> > Does "upgrade path" imply a simple world upgrade is all that should be |
13 |
> > necessary to upgrade the system? I wouldn't interpret it this way. |
14 |
> |
15 |
> That a "simple world upgrade" was meant is very clear from the full |
16 |
> meeting log, and from the log of the previous 2009-10-12 meeting (open |
17 |
> floor section). |
18 |
> |
19 |
|
20 |
It probably would be good to get these policies documented someplace |
21 |
OTHER than the council decision logs. I do remember the discussion |
22 |
from the distant past but it is worth having it in a more prominent |
23 |
place, especially since a one year stable update path is not going to |
24 |
happen by accident. |
25 |
|
26 |
I was thinking that it matters way more that @system is updatable than |
27 |
world in general, since @system can be used to bootstrap everything |
28 |
else. However, I think this distinction really doesn't make much of a |
29 |
difference. If your system can't be smoothly updated, it is unlikely |
30 |
to be due to some leaf package like a browser/MUA/etc. Most likely it |
31 |
is due to a widely-used dependency. |
32 |
|
33 |
So, by all means require @world to be updatable, but I think that if |
34 |
you focus on the packages in @system you'll basically get the rest for |
35 |
free. |
36 |
|
37 |
EAPI 8 came up in a later email and to consolidate replies I'll just |
38 |
say that the issue isn't so much adopting EAPIs in newer packages, but |
39 |
the rush to tidy up old ones that creates the problems. If you have |
40 |
v1/2/3 of a package stable and in the repo, and v3 uses an unsupported |
41 |
EAPI, and v1 is installed, I think portage will (or at least ought to) |
42 |
offer an upgrade from v1 to v2 - it should just not see v3 or consider |
43 |
it in the depgraph. Of course keeping around old versions might |
44 |
require dealing with security issues/etc that impact them. An |
45 |
alternative would be of course to just avoid EAPI updates on @system |
46 |
for a little while, or at least the parts of @system that portage |
47 |
needs to upgrade. |
48 |
|
49 |
Having QA tools detect this would be ideal, but right now they could |
50 |
only reliably detect things like newer EAPIs in @system. Since we |
51 |
don't require putting @system dependencies in packages there is no way |
52 |
for a QA tool to tell what is or isn't needed to update portage. Then |
53 |
you have more complex situations like PYTHON_TARGETS, and probably |
54 |
others as well. I had one host that struggled a bit with the xcrypt |
55 |
update for some reason (some weird preserved libs issue or something - |
56 |
libcrypt was still showing up as owned by glibc after updating it and |
57 |
I had to override collisions to get xcrypt to install). When |
58 |
upgrading a system that is completely up to date requires careful |
59 |
following of news items it is going to be painful to execute a whole |
60 |
bunch of updates at once. |
61 |
|
62 |
Maybe another path would be to mark milestone repositories for the |
63 |
last year that are easy to update in sequence. So if you have an |
64 |
update that requires manual care, you could mark a milestone just |
65 |
before that update which is easy to get to, and then another one after |
66 |
the update (ideally right before the next difficult update). This |
67 |
would just be a snapshot of portage or a git commit reference, and |
68 |
along with that a commitment to maintain distfiles/etc if they aren't |
69 |
hosted in reliable places (ie patches/etc in devspace). |
70 |
|
71 |
Another option might be to have collections of binary packages at key |
72 |
milestones. Sure, they won't be built to a user's specification, but |
73 |
if you have a year old system you could use them to quickly bootstrap |
74 |
it up to something more recent, and then an emerge will rebuild |
75 |
anything that has the wrong USE flags/etc and to bring the system |
76 |
completely up to date. You could even just use those binary packages |
77 |
as a sort of release-based version of the distro. |
78 |
|
79 |
Just some things to consider. |
80 |
|
81 |
-- |
82 |
Rich |