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: Fri, 23 Jan 2015 17:19:29
Message-Id: 54C28297.8010808@gentoo.org
In Reply to: Re: [gentoo-dev] RFC: USE=libav as replacement for broken || ( libav:= ffmpeg:= ) by Alexis Ballier
1 On 01/23/2015 01:48 AM, Alexis Ballier wrote:
2 > On Thu, 22 Jan 2015 09:06:39 -0800
3 > Zac Medico <zmedico@g.o> wrote:
4 >
5 > [...]
6 >>> That's what I understand from Michał's comment (quoting him):
7 >>>
8 >>>> 1. if you have dynamic-deps enabled, portage will want to install
9 >>>> both ffmpeg (because of :=) and libav (because of ||). The
10 >>>> effective deps will look like:
11 >>>>
12 >>>> || ( ffmpeg:0/51= libav ) ffmpeg:0/51=
13 >>>
14 >>>
15 >>> As I understand it, portage (correctly) marks this package for
16 >>> rebuild (because ffmpeg:0/51= dep isn't satisfied anymore), but I
17 >>> don't get why it doesn't consider the original '|| ( ffmpeg:=
18 >>> libav:= )' dep for the depgraph and wants to pull ffmpeg in
19 >>> "because of :=".
20 >>
21 >> It does consider the original dep. However, it also uses various
22 >> heuristics when making choices for || deps, and the fact that an
23 >> instance of ffmpeg is currently installed is taken into account in the
24 >> heuristics.
25 >
26 > good then; i'm assuming: people have ffmpeg installed and built a
27 > package 'foo' with || ( ffmpeg:= libav:= ); now, he removes ffmpeg,
28 > installs libav (put it in world), and masks ffmpeg (shouldnt be needed
29 > since it blocks libav but may hint portage solver).
30
31 Yes, putting ffmpeg in package.mask is not strictly necessary, but it
32 may help you avoid having portage try to pull in ffmpeg to satisfy a
33 dependency at some point.
34
35 > what Michał claims is that 'foo' will want ffmpeg, no matter what.
36
37 Maybe he's talking about some case where portage failed to trigger a
38 rebuild when appropriate. We've had a number of bugs like this that have
39 been fixed. The most recent recent example is bug 531656 [1].
40
41 > how can it be possible if 'foo' is slatted for rebuild ?
42
43 It's not possible, as long as a rebuild has be properly triggered.
44
45 > or maybe it is
46 > that portage does not slat it for rebuild (dynamic deps or not) ?
47
48 Yeah, we may find more bugs similar to bug 531656. When we discover bugs
49 like this, I make them block bug 300071 [2].
50
51 > how can it force to install ffmpeg then ?
52
53 It will only happen if portage fails to trigger a rebuild. If you have a
54 problem like this, then I would recommend to try all of the following
55 (starting with the least invasive):
56
57 1) emerge --deselect media-video/ffmpeg (remove from world file)
58 2) echo media-video/ffmpeg >> /etc/portage/package.mask (mask ffmpeg)
59 3) emerge --unmerge media-video/ffmpeg
60
61 [1] https://bugs.gentoo.org/show_bug.cgi?id=531656
62 [2] https://bugs.gentoo.org/show_bug.cgi?id=300071
63 --
64 Thanks,
65 Zac

Replies