Summary: | dependency resolution oddities involving www-client/firefox-127.0, dev-lang/rust-1.78.0 | ||
---|---|---|---|
Product: | Portage Development | Reporter: | Greg Kubaryk <greg.kubaryk> |
Component: | Core - Dependencies | Assignee: | Portage team <dev-portage> |
Status: | CONFIRMED --- | ||
Severity: | normal | CC: | acab, atoth, casta, cyrilmaley, daiajo, jlp.bugs, leonchik1976, llvm, mozilla, nshephard, rust, sam, stoffepojken, zmedico |
Priority: | Normal | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | Linux | ||
See Also: |
https://bugs.gentoo.org/show_bug.cgi?id=907492 https://bugs.gentoo.org/show_bug.cgi?id=934917 |
||
Whiteboard: | |||
Package list: | Runtime testing required: | --- | |
Attachments: | firefox-115.12.0 with rust-bin disabled |
Description
Greg Kubaryk
2024-06-16 02:44:33 UTC
kurly@meow ~ $ emerge -pvuDU @world These are the packages that would be merged, in order: Calculating dependencies... done! Dependency resolution took 25.67 s (backtrack: 2/20). Total: 0 packages, Size of downloads: 0 KiB !!! The following update(s) have been skipped due to unsatisfied dependencies !!! triggered by backtracking: www-client/firefox:rapid kurly@meow ~ $ emerge -puv www-client/firefox:rapid These are the packages that would be merged, in order: Calculating dependencies... done! Dependency resolution took 4.13 s (backtrack: 0/20). [ebuild N ] dev-lang/rust-1.77.1:stable/1.77::gentoo USE="(-big-endian) -clippy -debug -dist -doc (-llvm-libunwind) -lto (-miri) -nightly (-parallel-compiler) -profiler -rust-analyzer -rust-src -rustfmt -system-bootstrap -system-llvm -test -verify-sig -wasm" ABI_X86="(64) -32 (-x32)" CPU_FLAGS_X86="sse2" LLVM_TARGETS="(X86) -AArch64 -AMDGPU -ARC -ARM -AVR -BPF -CSKY -DirectX -Hexagon -Lanai -LoongArch -M68k -MSP430 -Mips -NVPTX -PowerPC -RISCV -SPIRV -Sparc -SystemZ -VE -WebAssembly -XCore -Xtensa" 314,631 KiB [ebuild UD ] virtual/rust-1.77.1:0/llvm-17::gentoo [1.78.0:0/llvm-18::gentoo] USE="-profiler -rustfmt" ABI_X86="(64) -32 (-x32)" 0 KiB [ebuild U ] www-client/firefox-127.0:rapid::gentoo [126.0.1:rapid::gentoo] USE="X clang dbus gmp-autoupdate jumbo-build pulseaudio system-av1 system-harfbuzz system-icu system-jpeg system-libevent system-libvpx system-webp telemetry wayland -debug -eme-free -geckodriver -hardened -hwaccel -jack -libproxy -lto -openh264 -pgo (-selinux) -sndio -system-png (-valgrind) -wifi" L10N="-ach -af -an -ar -ast -az -be -bg -bn -br -bs -ca -ca-valencia -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 -fur -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 -ne -nl -nn -oc -pa -pl -pt-BR -pt-PT -rm -ro -ru -sc -sco -si -sk -sl -son -sq -sr -sv -szl -ta -te -th -tl -tr -trs -uk -ur -uz -vi -xh -zh-CN -zh-TW" LLVM_SLOT="17 -18%" 545,758 KiB Total: 3 packages (1 upgrade, 1 downgrade, 1 new), Size of downloads: 860,388 KiB kurly@meow ~ $ emerge -pv dev-lang/rust These are the packages that would be merged, in order: Calculating dependencies... done! Dependency resolution took 1.57 s (backtrack: 0/20). [ebuild N ] dev-lang/rust-1.78.0:stable/1.78::gentoo USE="(-big-endian) -clippy -debug -dist -doc (-llvm-libunwind) -lto (-miri) -nightly (-parallel-compiler) -profiler -rust-analyzer -rust-src -rustfmt -system-bootstrap -system-llvm -test -verify-sig -wasm" ABI_X86="(64) -32 (-x32)" CPU_FLAGS_X86="sse2" LLVM_TARGETS="(X86) -AArch64 -AMDGPU -ARC -ARM -AVR -BPF -CSKY -DirectX -Hexagon -Lanai -LoongArch -M68k -MSP430 -Mips -NVPTX -PowerPC -RISCV -SPIRV -Sparc -SystemZ -VE -WebAssembly -XCore -Xtensa" 310,091 KiB Total: 1 package (1 new), Size of downloads: 310,091 KiB kurly@meow ~ $ emerge -pv dev-lang/rust-bin These are the packages that would be merged, in order: Calculating dependencies... done! Dependency resolution took 1.48 s (backtrack: 0/20). [ebuild R ] dev-lang/rust-bin-1.78.0:stable::gentoo USE="(-big-endian) -clippy -doc (-prefix) -profiler -rust-analyzer -rust-src -rustfmt -verify-sig" ABI_X86="(64) -32 (-x32)" CPU_FLAGS_X86="sse2" 160,118 KiB Total: 1 package (1 reinstall), Size of downloads: 160,118 KiB kurly@meow ~ $ emerge -pv virtual/rust These are the packages that would be merged, in order: Calculating dependencies... done! Dependency resolution took 1.45 s (backtrack: 0/20). [ebuild R ] virtual/rust-1.78.0:0/llvm-18::gentoo USE="-profiler -rustfmt" ABI_X86="(64) -32 (-x32)" 0 KiB Total: 1 package (1 reinstall), Size of downloads: 0 KiB $ emerge -p -uvDU @world --backtrack=0 These are the packages that would be merged, in order: Calculating dependencies .. ... done! Dependency resolution took 8.63 s (backtrack: 0/0). [ebuild N ] dev-lang/rust-1.77.1:stable/1.77::gentoo USE="(-big-endian) -clippy -debug -dist -doc (-llvm-libunwind) -lto (-miri) -nightly (-parallel-compiler) -profiler -rust-analyzer -rust-src -rustfmt -system-bootstrap -system-llvm -test -verify-sig -wasm" ABI_X86="(64) -32 (-x32)" CPU_FLAGS_X86="sse2" LLVM_TARGETS="(X86) -AArch64 -AMDGPU -ARC -ARM -AVR -BPF -CSKY -DirectX -Hexagon -Lanai -LoongArch -M68k -MSP430 -Mips -NVPTX -PowerPC -RISCV -SPIRV -Sparc -SystemZ -VE -WebAssembly -XCore -Xtensa" 314,631 KiB [ebuild UD ] virtual/rust-1.77.1:0/llvm-17::gentoo [1.78.0:0/llvm-18::gentoo] USE="-profiler -rustfmt" ABI_X86="(64) -32 (-x32)" 0 KiB [ebuild U ] www-client/firefox-127.0:rapid::gentoo [126.0.1:rapid::gentoo] USE="X clang dbus gmp-autoupdate jumbo-build pulseaudio system-av1 system-harfbuzz system-icu system-jpeg system-libevent system-libvpx system-webp telemetry wayland -debug -eme-free -geckodriver -hardened -hwaccel -jack -libproxy -lto -openh264 -pgo (-selinux) -sndio -system-png (-valgrind) -wifi" L10N="-ach -af -an -ar -ast -az -be -bg -bn -br -bs -ca -ca-valencia -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 -fur -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 -ne -nl -nn -oc -pa -pl -pt-BR -pt-PT -rm -ro -ru -sc -sco -si -sk -sl -son -sq -sr -sv -szl -ta -te -th -tl -tr -trs -uk -ur -uz -vi -xh -zh-CN -zh-TW" LLVM_SLOT="17 -18%" 545,758 KiB Total: 3 packages (1 upgrade, 1 downgrade, 1 new), Size of downloads: 860,388 KiB !!! Multiple package instances within a single package slot have been pulled !!! into the dependency graph, resulting in a slot conflict: virtual/rust:0 (virtual/rust-1.78.0-1:0/llvm-18::gentoo, installed) USE="-profiler -rustfmt" ABI_X86="(64) -32 (-x32)" pulled in by =virtual/rust-1.78.0 required by (sys-apps/ripgrep-all-0.10.6-1:0/0::gentoo, installed) USE="-debug" ABI_X86="(64)" ^ ^^^^^^ >=virtual/rust-1.77.2 required by (sys-apps/fd-10.1.0-1:0/0::gentoo, installed) USE="-debug" ABI_X86="(64)" ^^ ^^^^^^ (and 11 more with the same problems) (virtual/rust-1.77.1:0/llvm-17::gentoo, ebuild scheduled for merge) USE="-profiler -rustfmt" ABI_X86="(64) -32 (-x32)" pulled in by virtual/rust:0/llvm-17 required by (www-client/firefox-127.0:rapid/rapid::gentoo, ebuild scheduled for merge) USE="X clang dbus gmp-autoupdate jumbo-build pulseaudio system-av1 system-harfbuzz system-icu system-jpeg system-libevent system-libvpx system-webp telemetry wayland -debug -eme-free -geckodriver -hardened -hwaccel -jack -libproxy -lto -openh264 -pgo (-selinux) -sndio -system-png (-valgrind) -wifi" ABI_X86="(64)" L10N="-ach -af -an -ar -ast -az -be -bg -bn -br -bs -ca -ca-valencia -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 -fur -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 -ne -nl -nn -oc -pa -pl -pt-BR -pt-PT -rm -ro -ru -sc -sco -si -sk -sl -son -sq -sr -sv -szl -ta -te -th -tl -tr -trs -uk -ur -uz -vi -xh -zh-CN -zh-TW" LLVM_SLOT="17 -18" ^^^^^^^^^^ =virtual/rust-1.77.1 required by (www-client/firefox-127.0:rapid/rapid::gentoo, ebuild scheduled for merge) USE="X clang dbus gmp-autoupdate jumbo-build pulseaudio system-av1 system-harfbuzz system-icu system-jpeg system-libevent system-libvpx system-webp telemetry wayland -debug -eme-free -geckodriver -hardened -hwaccel -jack -libproxy -lto -openh264 -pgo (-selinux) -sndio -system-png (-valgrind) -wifi" ABI_X86="(64)" L10N="-ach -af -an -ar -ast -az -be -bg -bn -br -bs -ca -ca-valencia -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 -fur -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 -ne -nl -nn -oc -pa -pl -pt-BR -pt-PT -rm -ro -ru -sc -sco -si -sk -sl -son -sq -sr -sv -szl -ta -te -th -tl -tr -trs -uk -ur -uz -vi -xh -zh-CN -zh-TW" LLVM_SLOT="17 -18" ^ ^^^^^^ NOTE: Use the '--verbose-conflicts' option to display parents omitted above 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. Seeing this too. It started when Rust 1.78 was added to ::gentoo... You need LLVM_SLOT="18" in order to work with rust-1.78 I think the problem is that if you have rust-bin installed, portage offers to install rust(-source) instead of downgrading that -bin. And then the build fails because your previously installed rust doesn't match what Firefox's build system requires, even though it's installed. In theory what portage does is correct, but it makes an awful user experience. I have mentioned this before, but please make rust and rust-bin block each other. This will make for a vastly improved user experience. (In reply to cyrillic from comment #5) > I have mentioned this before, but please make rust and rust-bin block each > other. > > This will make for a vastly improved user experience. I agree it's not an optimal default configuration, but users can mask dev-lang/rust in /etc/portage/package.mask if it causes issues like this. I've masked it myself recently. The mask beneficial in the sense that it reduces the search space for dependency calculations so that there is less need for backtracking. There's a related package.prefer idea that was proposed but never implemented for GLEP 37: https://www.gentoo.org/glep/glep-0037.html#overrides (In reply to cyrillic from comment #5) > I have mentioned this before, but please make rust and rust-bin block each > other. > > This will make for a vastly improved user experience. No, it won't, as Portage doesn't backtrack around blockers, and it's not the real fix anyway. The real fix is to properly slot dev-lang/rust (and dev-lang/rust-bin, I don't remember if it is) so that multiple versions of virtual/rust and dev-lang/rust can be installed, and ebuilds can then pick which they need. i.e. the real issue is that virtual/rust being satisfied isn't actually sufficient at all, so ebuilds have to try do hacks around it. (In reply to Sam James from comment #7) > i.e. the real issue is that virtual/rust being satisfied isn't actually > sufficient at all, so ebuilds have to try do hacks around it. When 2 different versions of rustc are installed, only one of them can match the version of virtual/rust. The other one is simply dead weight, and should be removed to avoid problems. I'm not disagreeing on the problem (I'm one of the big advocates of fixing this properly), I'm saying a blocker wouldn't actually help. *** Bug 934917 has been marked as a duplicate of this bug. *** I've encountered this problem too and did some fiddling. I noticed... dev-lang/rust-bin:stable (dev-lang/rust-bin-1.79.0:stable/stable::gentoo, installed) USE="(-big-endian) -clippy -doc (-prefix) -profiler -rust-analyzer -rust-src -rustfmt -verify-sig" CPU_FLAGS_X86="sse2" pulled in by ~dev-lang/rust-bin-1.79.0[profiler?,rustfmt?,abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_s390_32(-)?,abi_s390_64(-)?] required by (virtual/rust-1.79.0:0/llvm-18::gentoo, installed) USE="-profiler -rustfmt" ^ ^^^^^^ (dev-lang/rust-bin-1.77.1:stable/stable::gentoo, ebuild scheduled for merge) USE="(-big-endian) -clippy -doc (-prefix) -profiler -rust-analyzer -rust-src -rustfmt -verify-sig" CPU_FLAGS_X86="sse2" pulled in by ~dev-lang/rust-bin-1.77.1[profiler?,rustfmt?,abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_s390_32(-)?,abi_s390_64(-)?] required by (virtual/rust-1.77.1:0/llvm-17::gentoo, ebuild scheduled for merge) USE="-profiler -rustfmt" ...and so gave the following a whirl... LLVM_SLOT=18 emerge -uDUav @world ...and it resolved the blocks. Obviously its not the same as resolving rust v rust-bin but wondered if this was a sensible thing to do? (In reply to Sam James from comment #7) > ... so that multiple versions of > virtual/rust and dev-lang/rust can be installed, and ebuilds can then pick > which they need. I support what you are trying to do here, but it sounds like a whole lotta work to coordinate all the variables when ebuilds start to look like this : LLVM_COMPAT=( {16..18} ) RUST_COMPAT=( rust-1.71/llvm-16 rust-1.{73..77}/llvm-17 rust-1.{78,79}/llvm-18 ) Created attachment 896638 [details]
firefox-115.12.0 with rust-bin disabled
I'm not sure this is useful.
I put firefox-115.12.0.ebuild in my own repo, removed rust-bin and this was sufficient to get past the portage blockage. However it fails mysteriosly in the compile phase:
1:24.89 gmake[4]: *** [/var/tmp/portage/www-client/firefox-115.12.0/work/firefox-115.12.0/config/makefiles/rust.mk:443: force-cargo-library-build] Error 101
1:24.89 gmake[3]: *** [/var/tmp/portage/www-client/firefox-115.12.0/work/firefox-115.12.0/config/recurse.mk:72: toolkit/library/rust/target] Error 2
1:35.21 gmake[2]: *** [/var/tmp/portage/www-client/firefox-115.12.0/work/firefox-115.12.0/config/recurse.mk:34: compile] Error 2
1:35.22 gmake[1]: *** [/var/tmp/portage/www-client/firefox-115.12.0/work/firefox-115.12.0/config/rules.mk:361: default] Error 2
1:35.22 gmake: *** [client.mk:60: build] Error 2
Looking at the log I did not see any actual compile errors.
|