Gentoo Archives: gentoo-dev

From: hasufell <hasufell@g.o>
To: gentoo-dev@l.g.o
Subject: Re: [gentoo-dev] Portage dependency solving algorithm
Date: Sat, 08 Nov 2014 19:32:29
Message-Id: 545E6FC2.3030605@gentoo.org
In Reply to: Re: [gentoo-dev] Portage dependency solving algorithm by Matthias Dahl
1 On 11/08/2014 08:01 PM, Matthias Dahl wrote:
2 > Hello Ciaran...
3 >
4 > On 08/11/14 19:26, Ciaran McCreesh wrote:
5 >
6 >> No. It would make sense to introduce a cultural change, where
7 >> developers stop writing dependencies that seem to work with some
8 >> particular version of Portage if you don't look very closely, and start
9 >> writing good dependencies.
10 >
11 > Sorry to chime in like that but if you don't mind, I'd like to ask for a
12 > real-life example for badly declared dependencies with a few words why
13 > those are bad and how to make them actually better?
14 >
15
16 from dev-haskell/hashtables (note "hashtables" != "hashable"):
17 || ( ( >=dev-haskell/hashable-1.1:=[profile?]
18 <dev-haskell/hashable-1.2:=[profile?] )
19 ( >=dev-haskell/hashable-1.2.1:=[profile?]
20 <dev-haskell/hashable-1.3:=[profile?] )
21 )
22
23 Latest stable version of dev-haskell/hashable is 1.2.1.0.
24 On a stable system (arch) the paludis dep-solver will try to match the
25 first group first and realize that there is also a stable version
26 1.1.2.5 that matches that group. At that point there is a correct
27 solution, but since that involves downgrading a package, it will require
28 user-intervention, because it may not be what the user wants.
29 (this is the easy scenario... if downgrading causes blockers, you get
30 much more interesting output)
31
32 If you want "user friendliness", then such dependencies would require
33 that the dep-solver tries very very hard to find a solution which *may*
34 be what the user wants... or not. I don't think that's what "||" were
35 designed for (if there was a design behind it).
36
37 Ofc there is a solution to that, e.g. by using
38 --favour-matching '>=dev-haskell/hashable-1.2.1'
39 which explicitly tells the dep-solver what the user wants.
40
41
42 perl virtuals can be similarly interesting.

Replies

Subject Author
Re: [gentoo-dev] Portage dependency solving algorithm hasufell <hasufell@g.o>