Gentoo Archives: gentoo-dev

From: Patrick Lauer <patrick@g.o>
To: gentoo-dev@l.g.o
Subject: Re: [gentoo-dev] What are || ( ) dependencies?
Date: Fri, 17 Dec 2010 17:27:49
Message-Id: 4D0B9D64.4000809@gentoo.org
In Reply to: Re: [gentoo-dev] What are || ( ) dependencies? by Ciaran McCreesh
1 On 12/17/10 18:09, Ciaran McCreesh wrote:
2 > On Fri, 17 Dec 2010 17:56:21 +0100
3 > Sebastian Luther <SebastianLuther@×××.de> wrote:
4 >>>> Why can't the PM handle >= / < cases itself?
5 >>>
6 >>> Because things are almost never as simple as 'just' >= / <. You can
7 >>> add in clever trickery to deal with very specific cases, but the
8 >>> second someone throws things off by adding in a use dependency or a
9 >>> third package, things get weird.
10 >>
11 >> I thought we were talking about the simplest case here, that is a list
12 >> of atoms for the same cat/pkg.
13 >
14 > Here's the problem: if the package mangler gets this right (which
15 > afaik both Portage and Paludis do):
16 >
17 > || ( <a-1 >=a-1 )
18 >
19 > you might naively expect it to get these right too:
20 >
21 > || ( <a-1 ( >=a-1 b ) )
22 > || ( <a-1 >a-1[x] ) # where a[-x] is the current user configuration
23 >
24 > which it probably won't, and even if it does, it will get other minor
25 > variations on these themes wrong.
26
27 There are multiple valid solutions. The default heuristic for "right"
28 seems to be "highest version", but other solutions fulfill the
29 dependency specification too.
30
31 > Part of the problem here is that developers don't seem to know about
32 > the whole leftmost thing, and the heuristics we've all put in mean they
33 > can quite often get away with not knowing it.
34
35 I'm not sure if I want that enforced, but a suggestion that
36 left-to-right order may be used by the package manager sounds like a
37 reasonable idea.
38
39 > It also doesn't help that it's not really documented anywhere. It's not
40 > in the devmanual, it's not in PMS (and it's hard to put it there,
41 > assuming we're not requiring a particular selection algorithm), and the
42 > stuff in ebuild(5) for || dependencies is just plain wrong.
43 >
44 Patches Welcome? ;)