Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 693836 - sys-apps/portage: emerge attempts downgrade to www-client/firefox-68.0.2 with conflicting libvpx versions
Summary: sys-apps/portage: emerge attempts downgrade to www-client/firefox-68.0.2 with...
Status: RESOLVED FIXED
Alias: None
Product: Portage Development
Classification: Unclassified
Component: Core - Interface (emerge) (show other bugs)
Hardware: All Linux
: Normal normal (vote)
Assignee: Portage team
URL:
Whiteboard:
Keywords: InVCS, REGRESSION
Depends on:
Blocks: 691278
  Show dependency tree
 
Reported: 2019-09-08 21:06 UTC by Zac Medico
Modified: 2019-09-12 02:37 UTC (History)
2 users (show)

See Also:
Package list:
Runtime testing required: ---


Attachments
unit test demonstrating the undesirable firefox downgrade (test_firefox_downgrade.py,1.94 KB, text/x-python)
2019-09-11 05:22 UTC, Zac Medico
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Zac Medico gentoo-dev 2019-09-08 21:06:05 UTC
See https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=a8af3151b4ecb713101d6dab3f6cb2ea045d259d which adjusted the libvpx dependency to "system-libvpx? ( =media-libs/libvpx-1.7*:0=[postproc] )" in all but www-client/firefox-68.0.2.

> # emerge --ask --verbose --update --deep --with-bdeps=y --usepkg=n --newuse world
> 
> These are the packages that would be merged, in order:
> 
> Calculating dependencies... done!
> [ebuild  r  U  ] media-libs/libvpx-1.8.0-r1:0/6::gentoo [1.7.0:0/5::gentoo] USE="highbitdepth postproc threads -doc -static-libs -svc -test" ABI_X86="(64) -32 (-x32)" CPU_FLAGS_X86="(-avx%) (-avx2%) (-mmx%*) (-sse%*) (-sse2%*) (-sse3%) (-sse4_1%) (-ssse3%)" 0 KiB
> [ebuild  r  UD ] media-libs/libvpx-1.6.1:0/4::gentoo [1.7.0:0/5::gentoo] USE="highbitdepth postproc threads -doc -static-libs -svc -test" ABI_X86="(64) -32 (-x32)" CPU_FLAGS_X86="mmx sse sse2 -avx -avx2 -sse3 -sse4_1 -ssse3" 1.914 KiB
> [ebuild  rR    ] media-video/ffmpeg-4.2:0/56.58.58::gentoo  USE="bzip2 encode gpl iconv network postproc threads vpx zlib -X -alsa (-altivec) -amr -amrenc (-appkit) -bluray -bs2b -cdio -chromaprint -chromium -codec2 -cpudetection -cuda -dav1d -debug -doc -fdk -flite -fontconfig -frei0r -fribidi -gcrypt -gme -gmp -gnutls -gsm -hardcoded-tables -iec61883 -ieee1394 -jack -jpeg2k -kvazaar -ladspa -libaom -libaribb24 -libass -libcaca -libdrm -libilbc -libressl -librtmp -libsoxr -libv4l -libxml2 -lv2 -lzma (-mipsdspr1) (-mipsdspr2) (-mipsfpu) (-mmal) -modplug -mp3 -openal -opencl -opengl -openh264 -openssl -opus -oss -pic -pulseaudio -rubberband -samba -sdl -snappy -speex -srt -ssh -static-libs -svg -test -theora -truetype -twolame -v4l -vaapi -vdpau -vidstab -vorbis -wavpack -webp -x264 -x265 -xcb -xvid -zeromq -zimg -zvbi" ABI_X86="(64) -32 (-x32)" CPU_FLAGS_X86="mmx mmxext sse sse2 -3dnow -3dnowext -aes -avx -avx2 -fma3 -fma4 -sse3 -sse4_1 -sse4_2 -ssse3 -xop" FFTOOLS="aviocat cws2fws ffescape ffeval ffhash fourcc2pixfmt graph2dot ismindex pktdumper qt-faststart sidxindex trasher" VIDEO_CARDS="-nvidia" 0 KiB
> [ebuild     UD ] www-client/firefox-68.0.2::gentoo [69.0::gentoo] USE="gmp-autoupdate screenshot system-av1 system-harfbuzz system-icu system-jpeg system-libevent system-libvpx system-webp -bindist -clang -custom-cflags -custom-optimization -dbus% -debug -eme-free -geckodriver -hardened -hwaccel -jack -lto (-neon) -pgo -pulseaudio (-selinux) -startup-notification -system-sqlite -test -wayland -wifi" CPU_FLAGS_X86="-avx2" L10N="-ach -af -an -ar -ast -az -be -bg -bn -br -bs -ca -cak -cs -cy -da -de -dsb -el -en-CA -en-GB -eo -es-AR -es-CL -es-ES -es-MX -et -eu -fa -ff -fi -fr -fy -ga -gd -gl -gn -gu -he -hi -hr -hsb -hu -hy -ia -id -is -it -ja -ka -kab -kk -km -kn -ko -lij -lt -lv -mk -mr -ms -my -nb -nl -nn -oc -pa -pl -pt-BR -pt-PT -rm -ro -ru -si -sk -sl -son -sq -sr -sv -ta -te -th -tr -uk -ur -uz -vi -xh -zh-CN -zh-TW" 0 KiB
> 
> Total: 4 packages (1 upgrade, 2 downgrades, 1 reinstall), Size of downloads: 1.914 KiB
> 
> !!! Multiple package instances within a single package slot have been pulled
> !!! into the dependency graph, resulting in a slot conflict:
> 
> media-libs/libvpx:0
> 
>   (media-libs/libvpx-1.8.0-r1:0/6::gentoo, ebuild scheduled for merge) pulled in by
>     >=media-libs/libvpx-1.7.0:0=[postproc] required by (www-client/firefox-68.0.2:0/0::gentoo, ebuild scheduled for merge)
>     ^^                  ^^^^^^^^                                                                                        
> 
>   (media-libs/libvpx-1.6.1:0/4::gentoo, ebuild scheduled for merge) pulled in by
>     <media-libs/libvpx-1.8:0=[postproc] required by (www-client/firefox-68.0.2:0/0::gentoo, ebuild scheduled for merge)
>     ^                  ^^^^^^                                                                                           
> 
> 
> It may be possible to solve this problem by using package.mask to
> prevent one of those packages from being selected. However, it is also
> possible that conflicting dependencies exist such that they are
> impossible to satisfy simultaneously.  If such a conflict exists in
> the dependencies of two different packages, then those packages can
> not be installed simultaneously.
> 
> For more information, see MASKED PACKAGES section in the emerge man
> page or refer to the Gentoo Handbook.
> 
> 
> The following packages are causing rebuilds:
> 
>   (media-libs/libvpx-1.8.0-r1:0/6::gentoo, ebuild scheduled for merge) causes rebuilds for:
>     (media-video/ffmpeg-4.2:0/56.58.58::gentoo, ebuild scheduled for merge)
> 
> The following USE changes are necessary to proceed:
>  (see "package.use" in the portage(5) man page for more details)
> # required by www-client/firefox-68.0.2::gentoo[system-libvpx]
> # required by @selected
> # required by @world (argument)
> >=media-libs/libvpx-1.8.0-r1 postproc
> # required by www-client/firefox-68.0.2::gentoo[system-libvpx]
> # required by @selected
> # required by @world (argument)
> =media-libs/libvpx-1.6.1 postproc
> 
> Would you like to add these changes to your config files? [Yes/No] n
> 
>  * In order to avoid wasting time, backtracking has terminated early
>  * due to the above autounmask change(s). The --autounmask-backtrack=y
>  * option can be used to force further backtracking, but there is no
>  * guarantee that it will produce a solution.
> 
> 
> # cat /var/lib/portage/world
> app-editors/nano
> app-misc/colordiff
> app-portage/eix
> app-portage/gentoolkit
> app-portage/repoman
> app-text/tree
> sys-fs/ncdu
> www-client/firefox
> 
> 
> # emerge --info www-client/firefox media-video/ffmpeg
> Portage 2.3.75 (python 3.6.9-final-0, default/linux/amd64/17.1, gcc-9.2.0, glibc-2.29-r5, 4.19.69-gentoo-x86_64 x86_64)
Comment 1 Zac Medico gentoo-dev 2019-09-09 01:42:58 UTC
It looks like it tried to upgrade libvpx because of ffmpeg's >=media-libs/libvpx-1.4.0 dependency, and this triggered a slot conflict the version of libvpx pulled in by firefox's =media-libs/libvpx-1.7* dependency. Ultimately, --autounmask-backtrack=n terminated backtracking due to the autounmask changes triggered for the libvpx postproc USE flag.
Comment 2 Zac Medico gentoo-dev 2019-09-09 19:07:38 UTC
Thomas Deutschmann reports that after removing the firefox-68.0.2, wants to downgrade firefox to firefox-60.9.0 (this version has no dep on libvpx). It is masking libvpx-1.7.0:0/5 as resolution which is causing the downgrade.
Comment 3 Zac Medico gentoo-dev 2019-09-09 19:15:16 UTC
(In reply to Zac Medico from comment #1)
> It looks like it tried to upgrade libvpx because of ffmpeg's
> >=media-libs/libvpx-1.4.0 dependency, and this triggered a slot conflict the
> version of libvpx pulled in by firefox's =media-libs/libvpx-1.7* dependency.
> Ultimately, --autounmask-backtrack=n terminated backtracking due to the
> autounmask changes triggered for the libvpx postproc USE flag.

(In reply to Zac Medico from comment #2)
> Thomas Deutschmann reports that after removing the firefox-68.0.2, wants to
> downgrade firefox to firefox-60.9.0 (this version has no dep on libvpx). It
> is masking libvpx-1.7.0:0/5 as resolution which is causing the downgrade.

Both behaviors are likely side-effects from the fix for bug 692746, since this change makes it consider masking libvpx-1.7 even though it satisfies all involved parent atoms.
Comment 4 Zac Medico gentoo-dev 2019-09-09 19:50:10 UTC
In this case it's unclear (to an automated solver) whether it's better to have the latest version of libvpx or the latest version of firefox. However, it's possible that we could make it prefer upgrades for members of @world, which would be helpful if firefox is in @world and libvpx is not.
Comment 5 Zac Medico gentoo-dev 2019-09-11 05:22:07 UTC
Created attachment 589680 [details]
unit test demonstrating the undesirable firefox downgrade

The attached unit test demonstrates the problem:

> [ebuild     UD ] www-client/firefox-60.9.0 [69.0]
> 
> !!! The following update(s) have been skipped due to unsatisfied dependencies
> !!! triggered by backtracking:
> 
> www-client/firefox:0
Comment 7 Larry the Git Cow gentoo-dev 2019-09-12 01:51:32 UTC
The bug has been referenced in the following commit(s):

https://gitweb.gentoo.org/proj/portage.git/commit/?id=1e61c439143b12d079e1fc344bbc0c192a84cbe0

commit 1e61c439143b12d079e1fc344bbc0c192a84cbe0
Author:     Zac Medico <zmedico@gentoo.org>
AuthorDate: 2019-09-11 02:54:51 +0000
Commit:     Zac Medico <zmedico@gentoo.org>
CommitDate: 2019-09-12 01:31:21 +0000

    _add_dep: less aggressive backtracking (bug 693836)
    
    In order to suppress the sort of aggressive backtracking that can
    trigger undesirable downgrades as in bug 693836, do not backtrack
    for an unsatisfied dependency if there's an available package in
    the runtime package mask which was involved in a slot conflict and
    satisfied all involved parent atoms. Instead, discard the current
    depgraph in favor of other backtracking configurations that may
    exist. This case would not have been encountered prior to the fix
    for bug 692746 which enabled backtracking for the type of slot
    conflict that is detected here.
    
    Fixes: 994ac00aa764 ("_slot_confict_backtrack: consider masking a package matched by all parent atoms (bug 692746)")
    Bug: https://bugs.gentoo.org/693836
    Signed-off-by: Zac Medico <zmedico@gentoo.org>

 lib/_emerge/depgraph.py                            | 13 ++++
 .../test_aggressive_backtrack_downgrade.py         | 91 ++++++++++++++++++++++
 2 files changed, 104 insertions(+)
Comment 8 Larry the Git Cow gentoo-dev 2019-09-12 02:35:45 UTC
The bug has been referenced in the following commit(s):

https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=39bc8967e254a5c83d5e0e22db6a0b6d772ed01e

commit 39bc8967e254a5c83d5e0e22db6a0b6d772ed01e
Author:     Zac Medico <zmedico@gentoo.org>
AuthorDate: 2019-09-12 02:15:52 +0000
Commit:     Zac Medico <zmedico@gentoo.org>
CommitDate: 2019-09-12 02:35:05 +0000

    sys-apps/portage: Bump to version 2.3.76
    
     #693836 erroneous firefox downgrade
     #693980 x11-module-rebuild: support SYMLINK_LIB=no
     #694000 OwnerSet: fix exclude-files support
    
    Bug: https://bugs.gentoo.org/691278
    Bug: https://bugs.gentoo.org/693836
    Bug: https://bugs.gentoo.org/693980
    Bug: https://bugs.gentoo.org/694000
    Package-Manager: Portage-2.3.76, Repoman-2.3.17
    Signed-off-by: Zac Medico <zmedico@gentoo.org>

 sys-apps/portage/Manifest              |   1 +
 sys-apps/portage/portage-2.3.76.ebuild | 261 +++++++++++++++++++++++++++++++++
 2 files changed, 262 insertions(+)