Gentoo Archives: gentoo-dev

From: Paul Smith <pausmith@××××××××××××××.com>
To: Spider <spider@g.o>
Cc: gentoo-dev@l.g.o
Subject: Re: [gentoo-dev] How does emerge resolve dependencies?
Date: Fri, 13 Feb 2004 15:59:52
Message-Id: 16428.62576.882138.716241@lemming.engeast.baynetworks.com
In Reply to: Re: [gentoo-dev] How does emerge resolve dependencies? by Spider
1 %% Spider <spider@g.o> writes:
2
3 >> That sounds strange to me :/ What about the output for emerge
4 >> --pretend? It wouldn't show you the smae package in the list twice,
5 >> will it? The only workaround I can suggest is to mask all package
6 >> versions which are higher than those needed by latest wrapper
7 >> script...
8
9 s> emerge -p system will always try to go for the -latest- version
10 s> around though, As will all of portage when you do "emerge foo" (it
11 s> will try to get the latest version, not just any version) So that
12 s> might be something to keep in mind.
13
14 Looking at the --debug output I can see (sort of) what happens. Take
15 the ndi-1.1 / ndi-1.2 issue from my previous mail.
16
17 The main package in the packages file (mse-2.0) depends on ndi-1.1 and I
18 see that listed in the Candidates: line:
19
20 ..., '~nt-libs/ndi-1.1',...
21
22 Now later on, we have an ebuild that has DEPEND="nt-libs/ndi", with no
23 version. Here it says:
24
25 ebuild: nt-libs/pca200e-1.0
26 binpkg: None
27
28 Parent: ebuild /test/ nt-libs/pca200e-1
29 .0 merge
30 Depstring: nt-libs/classlibrary nt-libs/ndi !crosscompile? ( >=nt-devel/ntmk-1.3 ) nt-libs/classlibrary nt-libs/ndi
31 Candidates: ['nt-libs/ndi']
32 ebuild: nt-libs/ndi-1.2
33
34 Here, even though Portage already knows that I requested a _specific_
35 earlier version, 1.1, it still chooses the latest available version to
36 satisfy _this_ relationship. Then later on it will put back ndi-1.1.
37
38
39 This is why I'm trying to understand the Portage algorithm. I assumed
40 that Portage would consider all the available requests for a given
41 package and choose the most recent one _that fulfills all the
42 requests_. In that case, a DEPEND with no version specified would
43 really mean "I can accept any version". But that doesn't appear to be
44 how it works, as seen above. Instead, Portage seems to interpret a
45 DEPEND with no version specified as "I must have the latest version".
46
47 s> However, this bug might also be something to consider:
48 s> http://bugs.gentoo.org/show_bug.cgi?id=39707
49
50 Hm! This looks somewhat promising. I'll check out the patch.
51
52 However, note that even if I use "emerge =nt-configs/mse-2.0" rather
53 than "emerge system", I still get the incorrect behavior.
54
55 --
56 -------------------------------------------------------------------------------
57 Paul D. Smith <psmith@××××××××××××××.com> HASMAT: HA Software Mthds & Tools
58 "Please remain calm...I may be mad, but I am a professional." --Mad Scientist
59 -------------------------------------------------------------------------------
60 These are my opinions---Nortel Networks takes no responsibility for them.
61
62 --
63 gentoo-dev@g.o mailing list