Gentoo Archives: gentoo-dev

From: Rich Freeman <rich0@g.o>
To: gentoo-dev <gentoo-dev@l.g.o>
Subject: Re: [gentoo-dev] Dependencies default to accept any slot value acceptable (:*), can we default to :0 instead?
Date: Mon, 09 Dec 2013 00:21:21
Message-Id: CAGfcS_=Dk17xsTwYC8_DO+BSUOMhEXkdDzG3kaz+MEgDk8XcOg@mail.gmail.com
In Reply to: Re: [gentoo-dev] Dependencies default to accept any slot value acceptable (:*), can we default to :0 instead? by Patrick Lauer
1 On Sun, Dec 8, 2013 at 6:57 PM, Patrick Lauer <patrick@g.o> wrote:
2 > On 12/09/2013 12:54 AM, Tom Wijsman wrote:
3 >>
4 >> One thing that directly comes to mind is that dependencies that have no
5 >> SLOT="0" ebuild present would need us to manually specify a specific
6 >> SLOT; given that this is a not so common situation, the amount of
7 >> commits needed here is low.
8 >
9 > And now you make updating a lot more fun, because slotted packages need
10 > to be explicitly changed if there's a new slot happening. Just to hide
11 > your own laziness.
12
13 Frankly, your tone is rude here. Don't personalize things. The goal
14 is to eliminate non-value-added work. If a change makes work for
15 others that should be pointed out. If a change saves somebody time,
16 that isn't "laziness." Work isn't a virtue - accomplishing something
17 is. Discuss the merits of the proposal, and don't debate the morals
18 of the person making the proposal.
19
20 Second, I'm not sure exactly what you're trying to say here. Slotted
21 packages don't need to be changed under the proposed approach any more
22 than they otherwise would. If you have SLOT=0 of libfoo and want to
23 introduce SLOT=1 it is the same amount of work for the libfoo
24 maintainer either way. The only difference is that if half the tree
25 depends on libfoo and breaks with libfoo:1 then there are a bazillion
26 failures all the sudden.
27
28 If you meant that packages that depend on slotted packages need to be
29 changed, then that isn't really correct either. If a package depends
30 on libfoo:0 instead of libfoo:*, it will work just fine when libfoo:1
31 is introduced - it will just continue to pull in libfoo:0. Then over
32 time maintainers can test and add an || dep for libfoo:1 and the
33 package will work with either.
34
35 The status quo requires the libfoo maintainers to do a ton of work to
36 get everybody to change their deps before introducing a new slot.
37 Either that or they do what everybody else apparently does and not use
38 slots at all, just creating libfoo2. Well, if you can't reliably
39 create new slots for dependencies, then what is the point of having a
40 syntax for slot dependencies in the first place?
41
42 On IRC there was some discussion and it may make sense to not make the
43 default :0 (or :0=), but rather to just not have any default in a
44 future EAPI - every single dependency line would therefore contain a
45 slot. I'm not convinced wildcards should even be allowed - the whole
46 point of introducing new slots is that the new version may not be
47 compatible, so how can you say in advance that any slot is acceptable?
48 If the new library is API-compatible then it should just be a new
49 subslot in the same slot, and if it is ABI-compatible then it should
50 be in the same subslot. The whole point of subslots is to handle
51 packages that have API breaks, and I don't see how wildcards against
52 future versions not even written yet can be appropriate there. The
53 only thing that it does is saves maintainers the trouble of looking up
54 what slots the package was actually tested against, which sounds a bit
55 like a certain word that starts with l... :)
56
57 Rich