Gentoo Archives: gentoo-dev

From: Brian Harring <ferringb@×××××.com>
To: gentoo-dev@l.g.o
Subject: Re: [gentoo-dev] [RFC] More reliable hiding preserved libraries
Date: Mon, 05 Apr 2010 06:46:22
Message-Id: 20100405064411.GD27486@hrair
In Reply to: Re: [gentoo-dev] [RFC] More reliable hiding preserved libraries by Maciej Mrozowski
1 On Mon, Apr 05, 2010 at 08:16:42AM +0200, Maciej Mrozowski wrote:
2 > Unconditionally removing libraries (instead of preserving them) and making
3 > their reverse runtime dependencies reinstalled is unacceptable because
4 > "emerge" process involving multiple packages is not atomic. Simple as that.
5 > Is this what you suggest? Correct me if I'm wrong:
6 > 1. Users wants to uninstall or reinstall package, we let him do it provided
7 > reverse runtime dependencies are satisfied afterwards. Let's say he wants to
8 > upgrade expat.
9 > 2. Expat SOVERSION changed meanwhile but package was not SLOTtted and runtime
10 > reverse deps will still be satisfied when we upgrade.
11 > 3. Expat has been upgraded sucessfully,
12 > 4a. "emerge" discovers reverse runtime dependencies are broken and it starts
13 > to rebuild them, then it bails out due to error ld: libexpat.so.<sth> not
14 > found. Because step 3 cannot be rolled back (no atomicy) - game over.
15 > or
16 > 4b. "emerge does not discover those and does nothing. python is broken so
17 > emerge cannot be used anymore. Game over
18
19 This is called 'nondeterministic resolution'- known issue also w/
20 proposals of that sort.
21
22 Pretty much everytime someone proposes it as a solution, it gets
23 smacked down by most folk since an emerge -p invocation that is a
24 single pkg upgade shouldn't be able to go rebuild your entire world.
25
26 The alternative is a slotted ABI var- basically a counter (although it
27 doesn't have to be) w/in ebuilds themselves to indicate if they're
28 carrying a new ABI from upstream for that slotting. For example,
29 you've got EXPAT merged w/ ABI=2, version 2.0. version 2.0.1, for
30 whatever reason, breaks ABI- thus v2.0.1 in the tree is ABI=2.0.1 (or
31 3, as said it's an arbitrary value).
32
33 Via that, the resolver can see that a rebuild is necessary and plan a
34 rebuild of all consumers (whether NEEDED based or revdep). Note
35 preserve-lib would be rather useful here- specifically holding onto
36 the intermediate lib while doing rebuilding. This however breaks down
37 a bit when the ABI change is in reverse of normal versioning.
38
39 Usually whenever I've floated this idea, it's gotten smacked down by
40 devs due to the extra work it may entail- someone doing an experiment
41 on this would be rather useful (someone with a tinderbox
42 specifically).
43
44 ~harring

Replies

Subject Author
Re: [gentoo-dev] [RFC] More reliable hiding preserved libraries "Tiziano Müller" <dev-zero@g.o>