Gentoo Archives: gentoo-dev

From: Pacho Ramos <pacho@g.o>
To: gentoo-dev@l.g.o
Subject: Re: [gentoo-dev] RFC: Making backwards-incompatible tree changes | a solution for GLEP 55's problem
Date: Tue, 20 Sep 2011 13:16:44
Message-Id: 1316524565.1711.3.camel@belkin4
In Reply to: Re: [gentoo-dev] RFC: Making backwards-incompatible tree changes | a solution for GLEP 55's problem by Pacho Ramos
1 El mar, 20-09-2011 a las 15:09 +0200, Pacho Ramos escribió:
2 > El mar, 20-09-2011 a las 01:14 +0300, Alex Alexander escribió:
3 > > EAPI in profiles and the -live version suffix are some of the improvements
4 > > many people would like to see in the tree. Unfortunately, the risk of breaking
5 > > systems with old versions of portage has been too high, holding evolution
6 > > back.
7 > >
8 > > I've been thinking about a way to solve this that would be easy to implement,
9 > > without any significant compromises and one thing comes to mind:
10 > >
11 > > Manipulation of the SYNC variable (i.e. rsync module),
12 > > combined with tree snapshots.
13 > >
14 > > At the moment, all systems have a SYNC line similar to this:
15 > >
16 > > SYNC="rsync://rsync.europe.gentoo.org/gentoo-portage"
17 > >
18 > > My idea is simple. When incompatible changes have to be introduced to the
19 > > tree, push a new version of portage that includes support for all the new
20 > > features we want to provide.
21 > >
22 > > Then, freeze the tree and clone it into a revbumped rsync module, i.e.
23 > >
24 > > SYNC="rsync://rsync.europe.gentoo.org/gentoo-portage-r1"
25 > >
26 > > That way the last update provided by the old tree will be the updated portage
27 > > package, which will be aware of the SYNC change.
28 > >
29 > > After the user installs that update, every subsequent emerge run will print a
30 > > fat red warning telling the user that the tree has been revbumped.
31 > >
32 > > It will then provide instructions on how to update the make.conf/SYNC
33 > > and a Y/N prompt to fix it itself. It could even do it automatically,
34 > > but that's debatable.
35 > >
36 > > By doing this we can be sure that any user using the revbumped SYNC have
37 > > an up-to-date portage (if they cheated, well, that's their problem), allowing
38 > > us to use all the new features provided by the latest version of portage.
39 > >
40 > > For the above to work, we would require at least
41 > > - support for multiple rsync modules pointing to different trees
42 > > [also in mirrors]
43 > > - a way to freeze the current state of the tree for the current rsync module
44 > > and push future updates to a revbumped rsync module.
45 > > - update our portage-snapshot tools to use the latest rsync module.
46 > > - other things I'm probably forgetting right now
47 > >
48 > > I'm not sure how much work would be required to make our current
49 > > infrastructure support this, the infra people could shed some light on
50 > > this.
51 > >
52 > > The idea is to use this system sparingly, only when we need to push big
53 > > changes that can't be supplied through an EAPI. Another example would be a
54 > > change that would break the upgrade path. By freezing the tree at the right
55 > > moment, we can be sure that the users will follow a known upgrade path
56 > > that works.
57 > >
58 > > Please keep in mind that my solution isn't trying to be the best thing
59 > > possible. Instead, I'm aiming for something that would do the job and would be
60 > > implemented in a realistic timeframe.
61 > >
62 > > What do you guys think?
63 >
64 > I haven't ever tried it but, what would occur if that people with really
65 > updated systems simply unpack an updated stage3 tarball in their / and,
66 > later, try to update?
67
68 updated -> outdated ;)

Attachments

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