Gentoo Archives: gentoo-dev

From: Zac Medico <zmedico@g.o>
To: Alexis Ballier <aballier@g.o>, gentoo-dev@l.g.o
Subject: Re: [gentoo-dev] RFC: USE=libav as replacement for broken || ( libav:= ffmpeg:= )
Date: Thu, 22 Jan 2015 17:06:51
Message-Id: 54C12E1F.6090801@gentoo.org
In Reply to: Re: [gentoo-dev] RFC: USE=libav as replacement for broken || ( libav:= ffmpeg:= ) by Alexis Ballier
1 On 01/22/2015 03:11 AM, Alexis Ballier wrote:
2 > On Thu, 22 Jan 2015 02:50:44 -0800
3 > Zac Medico <zmedico@g.o> wrote:
4 >
5 >> On 01/21/2015 11:25 PM, Alexis Ballier wrote:
6 >>> 1. If portage uses crafted depstrings in its depgraph when
7 >>> rebuilding a package and nobody is able to give me a good reason
8 >>> _why_ this is needed, I really do not want to look at the code :)
9 >>
10 >> It's the emerge --dynamic-deps option, which is enabled by default. If
11 >> you want to use --dynamic-deps=n, then you may need to fix some
12 >> dependencies of installed packages, which you can do by running emerge
13 >> @changed-deps. There's also a --changed-deps [1] option that can be
14 >> applied to @world updates, which will be included in Portage 2.2.16.
15 >>
16 >> [1]
17 >> https://github.com/gentoo/portage/commit/e99fa094ac73514b23509a0f8305b365f114e9a3
18 >
19 > This answers 'how' and, as I understand it, changed-deps is also about
20 > 'how' to trigger rebuild.
21 > My question was: _why_ when portage knows what package to rebuild
22 > doesn't it use the dep string from the ebuild ?
23
24 It does use the dep string for the ebuild, after it has rejected the
25 installed instance and decided to pull in the ebuild instead.
26
27 > That's what I understand from MichaƂ's comment (quoting him):
28 >
29 >> 1. if you have dynamic-deps enabled, portage will want to install both
30 >> ffmpeg (because of :=) and libav (because of ||). The effective
31 >> deps will look like:
32 >>
33 >> || ( ffmpeg:0/51= libav ) ffmpeg:0/51=
34 >
35 >
36 > As I understand it, portage (correctly) marks this package for rebuild
37 > (because ffmpeg:0/51= dep isn't satisfied anymore), but I don't get why
38 > it doesn't consider the original '|| ( ffmpeg:= libav:= )' dep for the
39 > depgraph and wants to pull ffmpeg in "because of :=".
40
41 It does consider the original dep. However, it also uses various
42 heuristics when making choices for || deps, and the fact that an
43 instance of ffmpeg is currently installed is taken into account in the
44 heuristics.
45 --
46 Thanks,
47 Zac

Replies