On 01/23/2015 01:48 AM, Alexis Ballier wrote:
> On Thu, 22 Jan 2015 09:06:39 -0800
> Zac Medico <zmed...@gentoo.org> wrote:
> 
> [...]
>>> That's what I understand from Michał's comment (quoting him):
>>>
>>>> 1. if you have dynamic-deps enabled, portage will want to install
>>>> both ffmpeg (because of :=) and libav (because of ||). The
>>>> effective deps will look like:
>>>>
>>>>  || ( ffmpeg:0/51= libav ) ffmpeg:0/51=
>>>
>>>
>>> As I understand it, portage (correctly) marks this package for
>>> rebuild (because ffmpeg:0/51= dep isn't satisfied anymore), but I
>>> don't get why it doesn't consider the original '|| ( ffmpeg:=
>>> libav:= )' dep for the depgraph and wants to pull ffmpeg in
>>> "because of :=".
>>
>> It does consider the original dep. However, it also uses various
>> heuristics when making choices for || deps, and the fact that an
>> instance of ffmpeg is currently installed is taken into account in the
>> heuristics.
> 
> good then; i'm assuming: people have ffmpeg installed and built a
> package 'foo' with || ( ffmpeg:= libav:= ); now, he removes ffmpeg,
> installs libav (put it in world), and masks ffmpeg (shouldnt be needed
> since it blocks libav but may hint portage solver).

Yes, putting ffmpeg in package.mask is not strictly necessary, but it
may help you avoid having portage try to pull in ffmpeg to satisfy a
dependency at some point.

> what Michał claims is that 'foo' will want ffmpeg, no matter what.

Maybe he's talking about some case where portage failed to trigger a
rebuild when appropriate. We've had a number of bugs like this that have
been fixed. The most recent recent example is bug 531656 [1].

> how can it be possible if 'foo' is slatted for rebuild ?

It's not possible, as long as a rebuild has be properly triggered.

> or maybe it is
> that portage does not slat it for rebuild (dynamic deps or not) ?

Yeah, we may find more bugs similar to bug 531656. When we discover bugs
like this, I make them block bug 300071 [2].

> how can it force to install ffmpeg then ?

It will only happen if portage fails to trigger a rebuild. If you have a
problem like this, then I would recommend to try all of the following
(starting with the least invasive):

1) emerge --deselect media-video/ffmpeg (remove from world file)
2) echo media-video/ffmpeg >> /etc/portage/package.mask (mask ffmpeg)
3) emerge --unmerge media-video/ffmpeg

[1] https://bugs.gentoo.org/show_bug.cgi?id=531656
[2] https://bugs.gentoo.org/show_bug.cgi?id=300071
-- 
Thanks,
Zac

Reply via email to