Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 706278 - sys-apps/portage: media-libs/mesa slot operator dependency on sys-devel/llvm triggers missed llvm slot upgrade
Summary: sys-apps/portage: media-libs/mesa slot operator dependency on sys-devel/llvm ...
Status: RESOLVED FIXED
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: Current packages (show other bugs)
Hardware: All Linux
: Normal normal (vote)
Assignee: Portage team
URL:
Whiteboard:
Keywords: InVCS
Depends on:
Blocks: 155723 706142
  Show dependency tree
 
Reported: 2020-01-25 06:39 UTC by Anton Bolshakov
Modified: 2020-04-21 07:47 UTC (History)
4 users (show)

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


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Anton Bolshakov 2020-01-25 06:39:32 UTC
Hi,

I have mesa installed which pulled llvm. mesa is the only package which requires llvm in my system.

Initially, it installed sys-devel/llvm:8 as a dependency. However, the slot llvm:9 has been stabilized recently, and portage didn't upgrade it.
I use the "emerge -DNua world" usually, I have also tried "--with-bdeps" but the update did not pick up the upgrade.

As a workaround, I have updated llvm manually (using emerge -1u sys-devel/llvm).
And then, "emerge --depclean" was able to remove llvm:8.

I found the following contraction in the mesa:

        || (
                sys-devel/llvm:10[${MULTILIB_USEDEP}]
                sys-devel/llvm:9[${MULTILIB_USEDEP}]
                sys-devel/llvm:8[${MULTILIB_USEDEP}]
                sys-devel/llvm:7[${MULTILIB_USEDEP}]
        )
        sys-devel/llvm:=[${MULTILIB_USEDEP}]

not sure what's going on.

emerge --info
Portage 2.3.84 (python 3.6.9-final-0, default/linux/amd64/17.1/hardened, gcc-9.2.0, glibc-2.29-r7, 5.4.13-pentoo x86_64)
=================================================================
System uname: Linux-5.4.13-pentoo-x86_64-Intel-R-_Core-TM-_i5-3320M_CPU_@_2.60GHz-with-gentoo-2.6
KiB Mem:     7968724 total,   5645940 free
KiB Swap:    4194300 total,   4179152 free
Timestamp of repository gentoo: Sat, 25 Jan 2020 00:45:01 +0000
Head commit of repository gentoo: 151d2358f9057d8a6e88edeaa8602f3f467d37fb
Head commit of repository dotnet: 17eface647386a89438ce31c1d6f14555a2b5e53

Timestamp of repository eclipse: Thu, 12 Dec 2019 13:46:34 +0000
Head commit of repository eclipse: e2ac527a1b3887d3ac2aa1f15982083773af6d41

Head commit of repository pentoo: 35739526298de8de6896821b6245873d6cea3b31

sh bash 4.4_p23-r1
ld GNU ld (Gentoo 2.32 p2) 2.32.0
app-shells/bash:          4.4_p23-r1::gentoo
dev-java/java-config:     2.2.0-r4::gentoo
dev-lang/perl:            5.30.1::gentoo
dev-lang/python:          2.7.17::gentoo, 3.6.9::gentoo, 3.7.5-r1::gentoo
dev-util/cmake:           3.14.6::gentoo
dev-util/pkgconfig:       0.29.2::gentoo
sys-apps/baselayout:      2.6-r1::gentoo
sys-apps/openrc:          0.42.1::gentoo
sys-apps/sandbox:         2.13::gentoo
sys-devel/autoconf:       2.13-r1::gentoo, 2.69-r4::gentoo
sys-devel/automake:       1.13.4-r2::gentoo, 1.16.1-r2::gentoo
sys-devel/binutils:       2.32-r1::gentoo
sys-devel/gcc:            9.2.0-r2::gentoo
sys-devel/gcc-config:     2.1::gentoo
sys-devel/libtool:        2.4.6-r6::gentoo
sys-devel/make:           4.2.1-r4::gentoo
sys-kernel/linux-headers: 4.19::gentoo (virtual/os-headers)
sys-libs/glibc:           2.29-r7::gentoo
Repositories:

gentoo
    location: /usr/portage
    sync-type: rsync
    sync-uri: rsync://rsync.asia.gentoo.org/gentoo-portage
    priority: -1000
    sync-rsync-verify-jobs: 1
    sync-rsync-verify-max-age: 24
    sync-rsync-verify-metamanifest: yes
    sync-rsync-extra-opts: 

dotnet
    location: /var/db/overlays/dotnet
    sync-type: git
    sync-uri: https://github.com/gentoo/dotnet.git
    masters: gentoo

eclipse
    location: /var/db/repos/eclipse
    sync-type: git
    sync-uri: https://github.com/gentoo-mirror/eclipse.git
    masters: gentoo

local-overlay
    location: /var/db/overlays/local
    masters: gentoo
    priority: 0

pentoo
    location: /var/db/overlays/pentoo-overlay
    sync-type: git
    sync-uri: https://github.com/pentoo/pentoo-overlay
    masters: gentoo

steam-overlay
    location: /var/db/overlays/steam-overlay
    masters: gentoo
    priority: 50

ACCEPT_KEYWORDS="amd64"
ACCEPT_LICENSE="@FREE"
CBUILD="x86_64-pc-linux-gnu"
CFLAGS="-march=native -O2 -pipe -frecord-gcc-switches"
CHOST="x86_64-pc-linux-gnu"
CONFIG_PROTECT="/etc /etc/stunnel/stunnel.conf /usr/share/config /usr/share/easy-rsa /usr/share/gnupg/qualified.txt /usr/share/themes/oxygen-gtk/gtk-2.0"
CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/dconf /etc/env.d /etc/fonts/fonts.conf /etc/gconf /etc/gentoo-release /etc/revdep-rebuild /etc/sandbox.d /etc/terminfo"
CXXFLAGS="-march=native -O2 -pipe -frecord-gcc-switches"
DISTDIR="/usr/portage/distfiles"
EMERGE_DEFAULT_OPTS="--quiet-build"
ENV_UNSET="DBUS_SESSION_BUS_ADDRESS DISPLAY GOBIN PERL5LIB PERL5OPT PERLPREFIX PERL_CORE PERL_MB_OPT PERL_MM_OPT XAUTHORITY XDG_CACHE_HOME XDG_CONFIG_HOME XDG_DATA_HOME XDG_RUNTIME_DIR"
FCFLAGS="-O2 -pipe -frecord-gcc-switches -frecord-gcc-switches"
FEATURES="assume-digests binpkg-docompress binpkg-dostrip binpkg-logs config-protect-if-modified distlocks ebuild-locks fixlafiles ipc-sandbox merge-sync multilib-strict network-sandbox news parallel-fetch pid-sandbox preserve-libs protect-owned sandbox sfperms strict unknown-features-warn unmerge-logs unmerge-orphans userfetch userpriv usersandbox usersync xattr"
FFLAGS="-O2 -pipe -frecord-gcc-switches -frecord-gcc-switches"
GENTOO_MIRRORS="http://gentoo.aditsu.net:8000/"
INSTALL_MASK="*.la"
LANG="en_SG.UTF-8"
LDFLAGS="-Wl,-O1 -Wl,--as-needed -Wl,--defsym=__gentoo_check_ldflags__=0"
LINGUAS="en ru"
MAKEOPTS="-j4"
PKGDIR="/usr/portage/packages"
PORTAGE_BINHOST="https://pentoo.emjay-embedded.co.uk/Packages/amd64-hardened/"
PORTAGE_CONFIGROOT="/"
PORTAGE_RSYNC_EXTRA_OPTS="--omit-dir-times"
PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --omit-dir-times --compress --force --whole-file --delete --stats --human-readable --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages --exclude=/.git"
PORTAGE_TMPDIR="/var/tmp"
Comment 1 Matt Turner gentoo-dev 2020-01-25 17:54:11 UTC
Michał, any suggestions how we could accomplish this?
Comment 2 Michał Górny archtester Gentoo Infrastructure gentoo-dev Security 2020-01-25 18:06:35 UTC
It should work as-is...
Comment 3 Zac Medico gentoo-dev 2020-01-25 22:29:24 UTC
The slot operator rebuild is not triggered for some reason.
Comment 4 Larry the Git Cow gentoo-dev 2020-01-25 22:37:15 UTC
The bug has been referenced in the following commit(s):

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

commit a4d832db2da41240558c424710a00435a797f0d6
Author:     Zac Medico <zmedico@gentoo.org>
AuthorDate: 2020-01-25 22:17:54 +0000
Commit:     Zac Medico <zmedico@gentoo.org>
CommitDate: 2020-01-25 22:34:36 +0000

    OrUpgradeInstalledTestCase: add test for bug 706278
    
    Bug: https://bugs.gentoo.org/706278
    Signed-off-by: Zac Medico <zmedico@gentoo.org>

 .../tests/resolver/test_or_upgrade_installed.py    | 71 ++++++++++++++++++++++
 1 file changed, 71 insertions(+)
Comment 5 Zac Medico gentoo-dev 2020-01-26 01:14:26 UTC
This issue bears similarity to the missed virtual slot update from bug 526160, the difference being that we have this || ( llvm:10 llvm:9 llvm:8 ... ) construct instead of a number of virtual slots to choose from.
Comment 6 Zac Medico gentoo-dev 2020-01-26 04:26:30 UTC
I have a working patch in https://github.com/zmedico/portage/compare/master...bug_706278_llvm_slot_upgrade_for_mesa_deps that I'm nearly happy with. It breaks the test case for bug 480736 but I don't see a way to handle that case simultaneously without the addition of some fancy backtracking like for bug 382421, and the packages that triggered bug 480736 no longer exist anyway.
Comment 8 Larry the Git Cow gentoo-dev 2020-01-28 04:56:49 UTC
The bug has been referenced in the following commit(s):

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

commit f7d83d75c6b05a16ef07473917082dbd0cd9955c
Author:     Zac Medico <zmedico@gentoo.org>
AuthorDate: 2020-01-26 01:44:14 +0000
Commit:     Zac Medico <zmedico@gentoo.org>
CommitDate: 2020-01-27 03:18:02 +0000

    dep_zapdeps: adjust || preference for slot upgrades (bug 706278)
    
    Prefer choices that include a slot upgrade when appropriate, like for
    the || ( llvm:10 ... llvm:7 ) case reported in bug 706278. In order
    to avoid pulling in inappropriate slot upgrades, like those which
    should only be pulled in with --update and --deep, add a want_update
    flag to each choice which is True for choices that pull in a new slot
    for which an update is desirable.
    
    Mark the test case for bug 480736 as todo, since the "undesirable"
    slot upgrade which triggers a blocker conflict in this test case is
    practically indistinguishable from a desirable slot upgrade. This
    particular blocker conflict is no longer relevant, since current
    versions of media-libs/libpostproc are no longer compatible with
    any available media-video/ffmpeg slot. In order to solve this test
    case, some fancy backtracking (like for bug 382421) will be required.
    
    Bug: https://bugs.gentoo.org/706278
    Bug: https://bugs.gentoo.org/480736
    Signed-off-by: Zac Medico <zmedico@gentoo.org>

 lib/_emerge/depgraph.py                            | 16 ++++-
 lib/portage/dep/dep_check.py                       | 79 ++++++++++++----------
 lib/portage/tests/resolver/test_or_choices.py      |  9 +++
 .../tests/resolver/test_or_upgrade_installed.py    |  3 +-
 4 files changed, 67 insertions(+), 40 deletions(-)
Comment 9 Larry the Git Cow gentoo-dev 2020-01-28 05:23:12 UTC
The bug has been referenced in the following commit(s):

https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=34b349600f178ed252c125866c3c3fd731cfb2f4

commit 34b349600f178ed252c125866c3c3fd731cfb2f4
Author:     Zac Medico <zmedico@gentoo.org>
AuthorDate: 2020-01-28 05:18:53 +0000
Commit:     Zac Medico <zmedico@gentoo.org>
CommitDate: 2020-01-28 05:19:09 +0000

    sys-apps/portage: Bump to version 2.3.86
    
     #706278 Adjust || preference for slot upgrades
     #706298 Suppress package.keywords warning for API consumers
    
    Bug: https://bugs.gentoo.org/706142
    Bug: https://bugs.gentoo.org/480736
    Bug: https://bugs.gentoo.org/706278
    Bug: https://bugs.gentoo.org/706298
    Package-Manager: Portage-2.3.86, Repoman-2.3.20
    Signed-off-by: Zac Medico <zmedico@gentoo.org>

 sys-apps/portage/Manifest              |   1 +
 sys-apps/portage/portage-2.3.86.ebuild | 276 +++++++++++++++++++++++++++++++++
 2 files changed, 277 insertions(+)
Comment 10 Larry the Git Cow gentoo-dev 2020-02-01 21:09:32 UTC
The bug has been referenced in the following commit(s):

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

commit d77d933b4a9cb2b830e661806a2a8689ffbac0ef
Author:     Zac Medico <zmedico@gentoo.org>
AuthorDate: 2020-02-01 04:53:45 +0000
Commit:     Zac Medico <zmedico@gentoo.org>
CommitDate: 2020-02-01 20:54:11 +0000

    depclean: do not eliminate upgrades (bug 707108)
    
    For depclean actions, prefer choices where all packages have been
    pulled into the graph, except for choices that eliminate upgrades.
    This solves the test case for bug 707108, where depclean eliminated
    a new slot of python that had been pulled in by a world update.
    This should also prevent non-deterministic elimination of the
    latest vala slot that was reported in bug 693790.
    
    NOTE: There's a common perception (expressed in bug 705700) that
    emerge is pulling in an "unecessary" python slot in cases when that
    python slot is not enabled in PYTHON_TARGETS. However, the so-called
    "unnecessary" slot is practically indistinguishable from a desirable
    upgrade such as the missed llvm slot upgrade that was reported in
    bug 706278. Therefore, be advised that emerge must pull in the
    highest visible slot (regardless of PYTHON_TARGETS) in order to
    ensure that a desirable upgrade is not missed.
    
    Fixes: f7d83d75c6b0 ("dep_zapdeps: adjust || preference for slot upgrades (bug 706278)")
    Bug: https://bugs.gentoo.org/707108
    Bug: https://bugs.gentoo.org/706278
    Bug: https://bugs.gentoo.org/705700
    Bug: https://bugs.gentoo.org/693790
    Signed-off-by: Zac Medico <zmedico@gentoo.org>

 lib/portage/dep/dep_check.py                  | 23 +++++++++++++----------
 lib/portage/tests/resolver/test_or_choices.py |  4 ++--
 2 files changed, 15 insertions(+), 12 deletions(-)