Gentoo Archives: gentoo-dev

From: Ulrich Mueller <ulm@g.o>
To: "Michał Górny" <mgorny@g.o>
Cc: gentoo-dev@l.g.o, pms-bugs@g.o
Subject: [gentoo-dev] Re: RFC: extending pkgmove (slotmove) actions to apply transitionally to ebuilds
Date: Sat, 04 Apr 2015 18:14:39
Message-Id: 21792.10749.600876.315249@a1i15.kph.uni-mainz.de
In Reply to: [gentoo-dev] RFC: extending pkgmove (slotmove) actions to apply transitionally to ebuilds by "Michał Górny"
1 >>>>> On Sat, 4 Apr 2015, Michał Górny wrote:
2
3 > The problem
4 > -----------
5
6 > Package moves (and slot moves) are currently a three part process:
7
8 > 1. committing the package under the new name (slot), and removing
9 > the old files,
10
11 Actually, you shouldn't remove the old package at this point because
12 it would break reverse dependencies.
13
14 > 2. updating all package references (*DEPEND, *_version, ...) in other
15 > ebuilds,
16
17 > 3. adding a pkgmove (slotmove) entry to apply the move on installed
18 > packages.
19
20 And only at this point the old package can be removed:
21 https://devmanual.gentoo.org/ebuild-writing/ebuild-maintenance/index.html#moving-ebuilds
22
23 However, all this will be moot once we have moved to git, because
24 atomic package moves will be possible then.
25
26 > [...]
27
28 > Rationale
29 > ---------
30
31 > The current package move logic already makes it impossible to use
32 > the old name. The Package Managers don't keep track of updates
33 > applied, and do re-apply the same update multiple times.
34
35 > Therefore, any reference to the old name (slot) added after the
36 > update will still get converted to the new name (slot) next time the
37 > updates are applied. In particular, this makes it impossible to add
38 > blockers on the old package name.
39
40 > Since the old package name (slot) can no longer be used for any
41 > purpose, we can safely map it implicitly to the new package name.
42 > No new damage is done.
43
44 This is not true for slotmoves. The previous slot can be reused by
45 versions not matching the dependency spec of the move. One can even
46 move some versions to a new slot, while leaving others in the old one.
47
48 For example, you could have app-misc/foo-1:0 and app-misc/foo-2:0 and
49 then do the following slotmove:
50
51 slotmove =app-misc/foo-2* 0 2
52
53 How would your transparent conversion treat >=app-misc/foo-1:0 in a
54 dependency?
55
56 Ulrich

Replies