1 |
On Mon, 5 Aug 2013 18:28:54 +0100 |
2 |
Ciaran McCreesh <ciaran.mccreesh@××××××××××.com> wrote: |
3 |
|
4 |
> On Mon, 5 Aug 2013 12:51:48 -0400 |
5 |
> Alexis Ballier <aballier@g.o> wrote: |
6 |
> > > Not really. There's a tradeoff between dependencies that are |
7 |
> > > occasionally too strict, and dependencies that are horribly |
8 |
> > > complicated (see "subslot dictionaries"). |
9 |
> > |
10 |
> > having a way to express 'my subslot is the one of my provider' |
11 |
> > doesnt seem overly complicated |
12 |
> |
13 |
> Unfortunately things that "don't seem" to be complicated sometimes are |
14 |
> complicated. We haven't established whether that's the case here. In |
15 |
> particular, we don't have any notion of "providers" currently, |
16 |
|
17 |
s/currently/anymore/ |
18 |
|
19 |
> and |
20 |
> it's not clear such a concept makes sense as-is. We haven't worked |
21 |
> out what happens in a || ( a b !c ) case where a, b and c are all |
22 |
> installed, for example. |
23 |
|
24 |
subslot = concatenation of the subslots of all (positive? if it makes |
25 |
sense) dependencies; updated when said dependencies get their subslot |
26 |
changed. |
27 |
|
28 |
this seems to fit well for a virtual and should be in line with what |
29 |
one would get with old style virtuals in mind. |
30 |
|
31 |
> > > So all this fuss over "unnecessary compiles" is misplaced. Gentoo |
32 |
> > > simply isn't the right distribution to use if minimising compile |
33 |
> > > time is a goal. |
34 |
> > |
35 |
> > two wrongs do not make one right... esp. when the 'wrong' at hand |
36 |
> > can be easily avoided... |
37 |
> |
38 |
> We've not established that it's "easy". |
39 |
|
40 |
you don't believe it is; and the first part still applies, meaning we |
41 |
should avoid to do the wrong thing just because there are other areas |
42 |
where we got it wrong. |
43 |
|
44 |
> > > > 'horrible breakage' is mitigated by preserve-libs and running |
45 |
> > > > @preserved-rebuild as soon as possible has the same end result |
46 |
> > > > avoiding useless rebuilds. |
47 |
> > > |
48 |
> > > But preserve-libs introduces breakages and security holes. The |
49 |
> > > point of slot operator dependencies is to replace that with a |
50 |
> > > reliable feature that doesn't rely upon guesswork and voodoo. |
51 |
> > |
52 |
> > not more than subslots, per pms: |
53 |
> > The sub-slot is used to represent cases in which an upgrade to a |
54 |
> > new version of a package with a different sub-slot may require |
55 |
> > dependent packages to be rebuilt. |
56 |
> > |
57 |
> > so, per spec, it isnt reliable either since the spec does not |
58 |
> > enforce rebuilds as soon as possible, heck, it doesnt even enforces |
59 |
> > rebuilds... (may vs must + when) |
60 |
> |
61 |
> You are misreading that statement. The "may" is there because even in |
62 |
> cases where there is an ABI break, some dependent packages may not |
63 |
> require recompiling because they may not be using the full ABI. The |
64 |
> "may" means developers are not prohibited from changing subslots in |
65 |
> the case where there exists a package which will not break. |
66 |
|
67 |
how can one know if that 'may' applies ? |
68 |
|
69 |
> Also, "as soon as possible" doesn't come into it anywhere. It's not |
70 |
> even a well defined requirement. |
71 |
|
72 |
read it differently then: foo has := dependencies that changed their |
73 |
subslot after foo has been installed. Is a DEPEND on foo considered |
74 |
satisfied or should foo be rebuilt before ? |
75 |
|
76 |
> Also also, the spec generally avoids wordings that prohibit the |
77 |
> package manager from breaking things (partly because Portage doesn't |
78 |
> properly enforce dependencies, partly because prohibiting the user |
79 |
> from breaking things if they really want to is not the Gentoo way). |
80 |
> The spec prefers to state things in terms of what can be relied upon |
81 |
> to work. |
82 |
|
83 |
Supposing we are dealing with shared libraries only, how is that an |
84 |
improvement over preserve-libs ? |