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"
Michał, any suggestions how we could accomplish this?
It should work as-is...
The slot operator rebuild is not triggered for some reason.
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(+)
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.
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.
Patch posted for review: https://archives.gentoo.org/gentoo-portage-dev/message/f8c836cc158735624cbfeb41526c4cb3 https://github.com/gentoo/portage/pull/501
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(-)
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(+)
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(-)