dev-lang/zig-0.9.1 has this dependency block in the ebuild: DEPEND=" [..] >=sys-devel/lld-${LLVM_MAX_SLOT} <sys-devel/lld-$((${LLVM_MAX_SLOT} + 1)) [..] " However lld is a runtime dependency of zig as well, as can be proven: # lddtree /usr/bin/zig | grep lld liblldELF.so.13 => /usr/lib64/liblldELF.so.13 liblldCommon.so.13 => /usr/lib64/liblldCommon.so.13 liblldCOFF.so.13 => /usr/lib64/liblldCOFF.so.13 liblldWasm.so.13 => /usr/lib64/liblldWasm.so.13 I ran into this because portage happily updates lld to version 14 which puts zig right into @preserved-rebuild because it still links against .so files of version 13. Would be great to have this fixed. Thank you!
But it already is? RDEPEND has all of ${DEPEND} in it RDEPEND="${DEPEND} !dev-lang/zig-bin "
My bad, you're right! File /var/db/pkg/dev-lang/zig-0.9.1/RDEPEND adds another prove on "<sys-devel/lld-14". Any idea why portage (3.0.30-r5) happily emerges sys-devel/lld-14.0.6 despite dev-lang/zig-0.9.1 installed? In search for past changes regarding RDEPEND I found https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=d005e3b069726d01579b86d32f6fe32c26573aa3 . A due revbump seems missing here, but the change does not seem to affect lld. Any ideas?
It turns out that portage 3.0.30-r3 rejects installation of =sys-devel/lld-14.0.6 due to dev-lang/zig-0.9.1 being installed (good!) while 3.0.30-r5 happily proceeds (bad!). I'm re-assinging to dev-portage@gentoo.org for now. EMERGE_DEFAULT_OPTS is "--keep-going --ask --verbose --complete-graph -j 3 --dynamic-deps y --verbose-conflicts" on that box.
Have you tested newer versions of Portage? As of this writing, the latest release is 3.0.35.
I needed to unmerge repoman for that but fair point: same with portage 3.0.35, just tried; title updated.
(In reply to Sebastian Pipping from comment #5) > I needed to unmerge repoman for that Please switch to using dev-util/pkgcheck and dev-util/pkgdev.
portage 3.0.30-r3 and 3.0.30-r5 vary only by 3 patches: 3.0.30-revert-run-warn.patch 3.0.30-qa-checks.patch 3.0.30-loong-abis.patch None of these patches touch any code that would affect dependency resolution. Are you certain the behavior changed between these 2 versions? I don't see how that is possible. If this truly is a regression, a bisect would be helpful.
With current portage master, I get this when I run emerge -pv1 dev-lang/zig with sys-devel/lld-14 installed: > % emerge -pv1 dev-lang/zig > > These are the packages that would be merged, in order: > > Calculating dependencies... done! > [ebuild NS ] sys-devel/llvm-13.0.1:13::gentoo [14.0.6-r2:14::gentoo] USE="binutils-plugin libffi ncurses xml -debug -doc -exegesis -libedit -test -xar -z3 (-verify-sig%)" ABI_X86="(64) -32 -x32" LLVM_TARGETS="(AArch64) (AMDGPU) (ARM) (AVR) (BPF) (Hexagon) (Lanai) (MSP430) (Mips) (NVPTX) (PowerPC) (RISCV) (Sparc) (SystemZ) (WebAssembly) (X86) (XCore) (-ARC) (-CSKY) (-M68k) (-VE*)" 0 KiB > [ebuild UD ] sys-devel/lld-13.0.1::gentoo [14.0.6::gentoo] USE="-debug -test (-verify-sig%)" 0 KiB > [ebuild NS ] sys-libs/compiler-rt-13.0.1:13.0.1::gentoo [14.0.6-r1:14.0.6::gentoo] USE="clang -debug -test (-verify-sig%)" ABI_X86="32 (64)" 0 KiB > [ebuild NS ] sys-libs/compiler-rt-sanitizers-13.0.1:13.0.1::gentoo [14.0.6:14.0.6::gentoo] USE="asan cfi clang dfsan gwp-asan hwasan libfuzzer lsan memprof msan orc profile safestack scudo tsan ubsan xray -debug (-shadowcallstack) -test (-verify-sig%)" ABI_X86="32 (64)" 0 KiB > [ebuild NS ] sys-devel/clang-runtime-13.0.1:13.0.1::gentoo [14.0.6:14.0.6::gentoo] USE="compiler-rt openmp sanitize -libcxx" ABI_X86="32 (64) -x32" 0 KiB > [ebuild NS ] sys-devel/clang-13.0.1:13::gentoo [14.0.6-r1:14::gentoo] USE="static-analyzer xml -debug -default-compiler-rt -default-libcxx -default-lld -doc -llvm-libunwind -test (-pie%*) (-verify-sig%)" ABI_X86="(64) -32 -x32" LLVM_TARGETS="(AArch64) (AMDGPU) (ARM) (AVR) (BPF) (Hexagon) (Lanai) (MSP430) (Mips) (NVPTX) (PowerPC) (RISCV) (Sparc) (SystemZ) (WebAssembly) (X86) (XCore) (-ARC) (-CSKY) (-M68k) (-VE*)" PYTHON_SINGLE_TARGET="python3_10 -python3_8 -python3_9" 0 KiB > [ebuild N ] dev-lang/zig-0.9.1::gentoo USE="threads -test" 13,615 KiB > > Total: 7 packages (1 downgrade, 1 new, 5 in new slots), Size of downloads: 13,615 KiB sys-devel/lld is being downgraded, which appears to be the expected result.
I have added the word "binary" to the title in the meantime. It needs a binary package to show. A mix of source and binary made me fool myself earlier that this could be something new. To my best knowlegde now, all four versions of portage in the tree are affected with binary(!) packages and not affected with source(!) packages. Does that make sense?
PS: For me: # emerge -1av -kg =sys-devel/lld-14.0.6 [..] These are the packages that would be merged, in order: Calculating dependencies... done! [binary U ] sys-devel/lld-14.0.6-1::gentoo [13.0.1::gentoo] USE="-debug -test -verify-sig%" 0 KiB Total: 1 package (1 upgrade, 1 binary), Size of downloads: 0 KiB [..]
(In reply to Sebastian Pipping from comment #10) What happens if you add "--complete-graph=y" to that command?
Also, please share: 1. emerge -v1p dev-lang/zig -kg 2. emerge -pvc dev-lang/zig
(In reply to Mike Gilbert from comment #11) > (In reply to Sebastian Pipping from comment #10) > > What happens if you add "--complete-graph=y" to that command? I have that in my default opts… >> # portageq envvar EMERGE_DEFAULT_OPTS >> --keep-going --ask --verbose --complete-graph -j 3 --dynamic-deps y --verbose-conflicts …but also re-verified with adding explicitly, same result: >> # emerge -1av -kg --complete-graph=y =sys-devel/lld-14.0.6 >> [..] >> These are the packages that would be merged, in order: >> >> Calculating dependencies... done! >> [binary U ] sys-devel/lld-14.0.6-1::gentoo [13.0.1::gentoo] USE="-debug -test -verify-sig%" 0 KiB >> >> Total: 1 package (1 upgrade, 1 binary), Size of downloads: 0 KiB
(In reply to Sam James from comment #12) > Also, please share: > 1. emerge -v1p dev-lang/zig -kg That would be: >> # emerge -v1p dev-lang/zig -kg >> [..] >> Calculating dependencies... done! >> [binary R ] dev-lang/zig-0.9.1-3::gentoo USE="threads -test" 17,676 KiB >> >> Total: 1 package (1 reinstall, 1 binary), Size of downloads: 17,676 KiB >> >> !!! The following binary packages have been ignored due to non matching USE: >> >> =sys-libs/zlib-1.2.12-r3 -minizip >> [..] > 2. emerge -pvc dev-lang/zig And: >> # emerge -pvc dev-lang/zig >> >> Calculating dependencies... done! >> dev-lang/zig-0.9.1 pulled in by: >> sys-fs/ncdu-2.1.2-r1 requires ~dev-lang/zig-0.9.1 >> >> >>> No packages selected for removal by depclean >> Packages installed: 1757 >> Packages in world: 456 >> Packages in system: 43 >> Required packages: 1757 >> Number to remove: 0
Maybe try to change ">=sys-devel/lld-${LLVM_MAX_SLOT}" & "<sys-devel/lld-$((${LLVM_MAX_SLOT} + 1))" to "=sys-devel/lld-${LLVM_MAX_SLOT}*"? Like in Firefox ebuild
I tried to reproduce this with local binpkgs, and was unable to do so. > % sudo emerge -av1k --complete-graph=y sys-devel/lld > > These are the packages that would be merged, in order: > > Calculating dependencies... done! > [binary R ] sys-devel/lld-13.0.1-2::gentoo USE="-debug -test" 0 KiB > > Total: 1 package (1 reinstall, 1 binary), Size of downloads: 0 KiB > > WARNING: One or more updates/rebuilds have been skipped due to a dependency conflict: > > sys-devel/lld:0 > > (sys-devel/lld-14.0.6-1:0/0::gentoo, binary scheduled for merge) USE="-debug -test -verify-sig" ABI_X86="(64)" conflicts with > <sys-devel/lld-14 required by (dev-lang/zig-0.9.1-1:0/0::gentoo, installed) USE="threads -test" ABI_X86="(64)" > ^ ^^ I do not have a binhost set up to test the --getbinpkg option.
To test the --getbinpkg (-g) option, I set PKGDIR to a temporary directory, and pointed PORTAGE_BINHOST to the old PKGDIR via a file:// URL. I got the same result as comment 16 when I ran "emerge -av1kg --complete-graph=y sys-devel/lld".
I also tried removing the lld-14 binpkg from PKGDIR, and got similar results: > % sudo emerge -av1k --complete-graph=y sys-devel/lld > > These are the packages that would be merged, in order: > > Calculating dependencies... done! > [binary R ] sys-devel/lld-13.0.1-2::gentoo USE="-debug -test" 0 KiB > > Total: 1 package (1 reinstall, 1 binary), Size of downloads: 0 KiB > > WARNING: One or more updates/rebuilds have been skipped due to a dependency conflict: > > sys-devel/lld:0 > > (sys-devel/lld-14.0.6:0/0::gentoo, ebuild scheduled for merge) USE="-debug -test -verify-sig" ABI_X86="(64)" conflicts with > <sys-devel/lld-14 required by (dev-lang/zig-0.9.1-1:0/0::gentoo, installed) USE="threads -test" ABI_X86="(64)" > ^ ^^
Adding --dynamic-deps=y had no effect either.
Per OP's description, this is invalid since LLD is slotted. When ebuild requests two different LLD versions, it's expected that Portage satisfies both dependencies by installing two different slots.
I think that the package was not slotted at the time this bug was reported.