Gentoo Archives: gentoo-dev

From: Alexis Ballier <aballier@g.o>
To: gentoo-dev@l.g.o
Subject: Re: [gentoo-dev] Re: Remember to specify SLOT when adding subslot operator to dependencies
Date: Tue, 06 Aug 2013 21:16:15
Message-Id: 20130806171401.3fe19c76@gentoo.org
In Reply to: Re: [gentoo-dev] Re: Remember to specify SLOT when adding subslot operator to dependencies by Ciaran McCreesh
1 On Tue, 6 Aug 2013 21:33:02 +0100
2 Ciaran McCreesh <ciaran.mccreesh@××××××××××.com> wrote:
3
4 > On Tue, 6 Aug 2013 16:22:48 -0400
5 > Alexis Ballier <aballier@g.o> wrote:
6 > > On Tue, 6 Aug 2013 20:44:57 +0100
7 > > Ciaran McCreesh <ciaran.mccreesh@××××××××××.com> wrote:
8 > > > On Tue, 6 Aug 2013 15:31:14 -0400
9 > > > Alexis Ballier <aballier@g.o> wrote:
10 > > > > Well, ok, but this doesn't relate to what I was writing.
11 > > > > Subslot, or slot emulators or whatever, in their current usage
12 > > > > with := dependencies, are not fine grained enough for some use
13 > > > > cases. Those cause regressions if used improperly.
14 > > >
15 > > > There is no regression. Previously, packages sometimes broke when
16 > > > doing an upgrade. Now, packages do not break when doing an
17 > > > upgrade.
18 > >
19 > > The regression is the useless rebuild. Without preserve-libs,
20 > > packages break even more: cf the libc example.
21 >
22 > You can't claim a broken solution to be better than a working
23 > solution.
24
25 They're not yet comparable. What I claim is:
26 - Preserve-libs is needed for extreme cases such as the libc or libs
27 the compiler links to.
28 - When used correctly, subslots provide a nice way to automate the
29 rebuilds and correctly handle dependencies.
30 - Current subslots and := deps do not provide all the required
31 flexibility for real world packages.
32 - Your proposal of not caring about it and introducing useless bloat
33 is wrong.
34
35 > > > > Your argumentation is basically 'Other parts are doing it wrong
36 > > > > so it's ok to add some more to it'... We're back a dozen emails
37 > > > > back, aren't we?
38 > > >
39 > > > It's not adding more to it. It's avoiding eliminating a tiny
40 > > > portion of it. Even if you subscribe to the notion that
41 > > > unnecessary rebuilds are a relevant problem, there's no point in
42 > > > caring about the occasional unnecessary rebuild due to overly
43 > > > strict dependencies when most unnecessary rebuilds are caused by
44 > > > something else entirely.
45 > >
46 > > And here we go again...
47 >
48 > You've still not justified spending a massive amount of effort on
49 > addressing a tiny fraction of unnecessary recompiles. What makes this
50 > supposed problem in any way relevant? Why should we spend time
51 > reducing 1% of the cost by 1%?
52
53 You've still not done a serious analysis to back up these numbers.
54
55 I'm pretty much convinced wrongly used subslot operators are now
56 more than 50% of unnecessary recompile times. Feel free to prove me
57 wrong, but you won't convince me by keeping repeating 'a tiny fraction
58 of unnecessary recompiles'.
59
60 Proper subslot operators is a one-time investment, reducing unnecessary
61 compiles on the other parts likely require a constant investment over
62 time, so in the long term, whatever the cost is, it is worth it.
63
64
65 > > > > It was meant as an example and has nothing to do with dependency
66 > > > > resolution. The above exercise is something extreme but that we
67 > > > > have to solve; preserve-libs has proven to be correct enough.
68 > > > > You have yet to show a correct, in your sense, solution.
69 > > >
70 > > > The correct solution is heavy slotting. And I'd hardly consider
71 > > > "intermittently introduces invisible security holes and causes
72 > > > unbootable systems" to be "correct enough"...
73 > >
74 > > There is no difference between heavy slotting and preserve-libs in
75 > > this case.
76 >
77 > Yes there is: heavy slotting is only dependent upon a careful
78 > developer, whereas preserve-libs relies upon voodoo that can go
79 > horribly wrong.
80
81 And also has the big advantage of providing an ancient outdated library
82 in its proper slot so that it might be kept indefinitely.