Rust doesn't rebuild with system-bootstrap USE-flag even when required rust version is present in system. Reproducible: Always Steps to Reproduce: 1. unmask system-bootstrap USE-flag for dev-lang/rust 2. USE="-system-bootstrap" emerge -1v =dev-lang/rust-1.79.0-r100 =dev-lang/rust-1.81.0-r100 3. eselect rust set rust-1.81.0 4. USE="system-bootstrap" emerge -1v =dev-lang/rust-1.79.0-r100 Actual Results: Last emerge fails with error message: * Rust <1.80 is required * please run 'eselect rust' and set correct rust version Expected Results: Last emerge must succeed: required rust version is present in system # emerge --info dev-lang/rust Portage 3.0.66.1 (python 3.12.7-final-0, default/linux/amd64/23.0/split-usr/desktop, gcc-13, glibc-2.40-r5, 6.6.58-gentoo-r1-v67 x86_64) ================================================================= System Settings ================================================================= System uname: Linux-6.6.58-gentoo-r1-v67-x86_64-12th_Gen_Intel-R-_Core-TM-_i9-12900K-with-glibc2.40 KiB Mem: 65627072 total, 58998396 free KiB Swap: 0 total, 0 free Timestamp of repository gentoo: Sat, 09 Nov 2024 09:15:00 +0000 Head commit of repository gentoo: 288f9098a0ee31d432d3efe7212dfaf035607274 Timestamp of repository steam-overlay: Sat, 09 Nov 2024 09:18:48 +0000 Head commit of repository steam-overlay: c98b00e2a69fa89be1c32f1450598fd8ad170347 Head commit of repository dt-overlay-patches: 02014d2906407b85ba5a0d02abe9229e675d5a0a sh bash 5.2_p37 ld GNU ld (Gentoo 2.42 p6) 2.42.0 app-misc/pax-utils: 1.3.7::gentoo app-shells/bash: 5.2_p37::gentoo dev-build/autoconf: 2.13-r8::gentoo, 2.72-r1::gentoo dev-build/automake: 1.16.5-r2::gentoo dev-build/cmake: 3.30.5::gentoo dev-build/libtool: 2.4.7-r4::gentoo dev-build/make: 4.4.1-r100::gentoo dev-build/meson: 1.6.0::gentoo dev-lang/perl: 5.40.0::gentoo dev-lang/python: 3.12.7_p1::gentoo, 3.13.0::gentoo dev-lang/rust: 1.79.0-r100::gentoo, 1.81.0-r100::gentoo sys-apps/baselayout: 2.17::gentoo sys-apps/openrc: 0.55.1::gentoo sys-apps/sandbox: 2.39::gentoo sys-devel/binutils: 2.42-r2::gentoo sys-devel/binutils-config: 5.5.2::gentoo sys-devel/clang: 18.1.8-r6::gentoo, 19.1.3::gentoo sys-devel/gcc: 13.3.1_p20241025::gentoo sys-devel/gcc-config: 2.11::gentoo sys-devel/llvm: 18.1.8-r6::gentoo, 19.1.3::gentoo sys-kernel/linux-headers: 6.6-r1::gentoo (virtual/os-headers) sys-libs/glibc: 2.40-r5::gentoo Repositories: gentoo location: /usr/portage sync-type: rsync sync-uri: rsync://rsync.de.gentoo.org/gentoo-portage/ priority: -1000 volatile: True sync-rsync-verify-max-age: 24 sync-rsync-verify-jobs: 1 sync-rsync-verify-metamanifest: yes sync-rsync-extra-opts: --no-progress --no-verbose --no-motd steam-overlay location: /var/db/repos/steam-overlay sync-type: git sync-uri: https://github.com/gentoo-mirror/steam-overlay.git masters: gentoo volatile: False dt-overlay-crossdev location: /var/db/repos/dt-overlay-crossdev masters: gentoo priority: 50 volatile: False dt-overlay-patches location: /var/db/repos/dt-overlay-patches sync-openpgp-key-refresh: no sync-type: git sync-uri: https://github.com/iDarkTemplar/dt-overlay-patches.git masters: gentoo priority: 50 volatile: False sync-git-verify-commit-signature: Yes dt-overlay-private location: /var/db/repos/dt-overlay-private masters: gentoo priority: 50 volatile: False ACCEPT_KEYWORDS="amd64" ACCEPT_LICENSE="* -@EULA" CBUILD="x86_64-pc-linux-gnu" CFLAGS="-march=alderlake -mtune=alderlake -mabm -mno-cldemote -mno-kl -mno-sgx -mno-widekl -mshstk --param=l1-cache-line-size=64 --param=l1-cache-size=32 --param=l2-cache-size=30720 -O2 -pipe -fwrapv" CHOST="x86_64-pc-linux-gnu" CONFIG_PROTECT="/etc /usr/lib64/libreoffice/program/sofficerc /usr/share/config /usr/share/gnupg/qualified.txt" 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 /etc/texmf/language.dat.d /etc/texmf/language.def.d /etc/texmf/updmap.d /etc/texmf/web2c" CXXFLAGS="-march=alderlake -mtune=alderlake -mabm -mno-cldemote -mno-kl -mno-sgx -mno-widekl -mshstk --param=l1-cache-line-size=64 --param=l1-cache-size=32 --param=l2-cache-size=30720 -O2 -pipe -fwrapv" DISTDIR="/usr/portage/distfiles" EMERGE_DEFAULT_OPTS="--with-bdeps=y --binpkg-respect-use=y --autounmask=n --complete-graph=y --keep-going --quiet-build=y" ENV_UNSET="CARGO_HOME DBUS_SESSION_BUS_ADDRESS DISPLAY GDK_PIXBUF_MODULE_FILE GOBIN GOPATH PERL5LIB PERL5OPT PERLPREFIX PERL_CORE PERL_MB_OPT PERL_MM_OPT XAUTHORITY XDG_CACHE_HOME XDG_CONFIG_HOME XDG_DATA_HOME XDG_RUNTIME_DIR XDG_STATE_HOME" FCFLAGS="-O2 -pipe" FEATURES="binpkg-docompress binpkg-dostrip binpkg-logs binpkg-multi-instance buildpkg-live distlocks ebuild-locks fakeroot fixlafiles ipc-sandbox merge-sync merge-wait multilib-strict network-sandbox news parallel-fetch pid-sandbox pkgdir-index-trusted preserve-libs protect-owned qa-unresolved-soname-deps sandbox sfperms strict unknown-features-warn unmerge-logs unmerge-orphans userfetch userpriv usersandbox usersync xattr" FFLAGS="-O2 -pipe" GENTOO_MIRRORS="http://mirror.leaseweb.com/gentoo/ http://mirror.eu.oneandone.net/linux/distributions/gentoo/gentoo/ https://ftp.fau.de/gentoo http://ftp.fau.de/gentoo http://ftp-stud.hs-esslingen.de/pub/Mirrors/gentoo/" LANG="ru_RU.utf8" LDFLAGS="-Wl,-O1 -Wl,--as-needed -Wl,-z,pack-relative-relocs" LEX="flex" MAKEOPTS="-j24" PKGDIR="/usr/portage/packages" PORTAGE_CONFIGROOT="/" PORTAGE_RSYNC_EXTRA_OPTS="--no-progress --no-verbose --no-motd" 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" SHELL="/bin/bash" USE="X a52 aac acl acpi alsa amd64 amr apm ares bash-completion bidi bluetooth bluray branding bzip2 c++0x cairo caps cdda cdio cdr cet cleartype connman cracklib crypt cue cups cxx dbus designer dga dirac dri dts dvd dvdr egl elogind encode exif faad fbcon ffmpeg filecaps flac fontconfig fontforge freetype fribidi gif gles2 gme gmp gpm grub gtk gtkstyle gui ibus iconv icu idn imlib inotify ipv6 jadetex jpeg kde kf6compat lcms libass libdvdcss libtirpc lzma lzo mad matroska mmap mng mp3 mp4 mpeg multilib ncurses network nfs nls offensive ogg openal opengl openmp opus pam pango pcmcia pcntl pcre pdf pic plasma plymouth png policykit posix postproc ppds private-headers projectm pulseaudio qml qt6 raw readline schroedinger seccomp sftp sndfile sockets sound spell split-usr ssl startup-notification svg system-cairo system-harfbuzz system-icu system-jpeg system-libevent system-libvpx system-sqlite test-rust tga theora threads tiff truetype udev udisks unicode upower usb utils vaapi vdpau vorbis vpx vulkan wavpack wayland wifi wma x264 xattr xcb xcomposite xft xinerama xpm xscreensaver xv xvid zlib zstd" ABI_X86="64 32" ADA_TARGET="gcc_12" ALSA_CARDS="hda-intel" APACHE2_MODULES="authn_core authz_core socache_shmcb unixd actions alias auth_basic authn_anon authn_dbm authn_file authz_dbm authz_groupfile authz_host authz_owner authz_user autoindex cache cgi cgid dav dav_fs dav_lock deflate dir env expires ext_filter file_cache filter headers include info log_config logio mime mime_magic negotiation rewrite setenvif speling status unique_id userdir usertrack vhost_alias" CALLIGRA_FEATURES="karbon sheets words" COLLECTD_PLUGINS="df interface irq load memory rrdtool swap syslog" CPU_FLAGS_X86="aes avx avx2 f16c fma3 mmx mmxext pclmul popcnt sha sse sse2 sse3 sse4_1 sse4_2 ssse3" ELIBC="glibc" GPSD_PROTOCOLS="ashtech aivdm earthmate evermore fv18 garmin garmintxt gpsclock greis isync itrax navcom oceanserver oncore rtcm104v2 rtcm104v3 sirf skytraq superstar2 tsip tripmate tnt ublox" GUILE_SINGLE_TARGET="3-0" GUILE_TARGETS="3-0" INPUT_DEVICES="evdev joystick libinput" KERNEL="linux" L10N="ru en de ja" LCD_DEVICES="bayrad cfontz glk hd44780 lb216 lcdm001 mtxorb text" LLVM_TARGETS="AMDGPU" LUA_SINGLE_TARGET="lua5-1" LUA_TARGETS="lua5-1" OFFICE_IMPLEMENTATION="libreoffice" PHP_TARGETS="php8-2" POSTGRES_TARGETS="postgres16" PYTHON_SINGLE_TARGET="python3_12" PYTHON_TARGETS="python3_12" QEMU_SOFTMMU_TARGETS="i386 x86_64" QEMU_USER_TARGETS="i386 x86_64" RUBY_TARGETS="ruby32" SANE_BACKENDS="escl" VIDEO_CARDS="vesa vga amdgpu radeonsi" XTABLES_ADDONS="quota2 psd pknock lscan length2 ipv4options ipp2p iface geoip fuzzy condition tarpit sysrq proto logmark ipmark dhcpmac delude chaos account" Unset: ADDR2LINE, AR, ARFLAGS, AS, ASFLAGS, CC, CCLD, CONFIG_SHELL, CPP, CPPFLAGS, CTARGET, CXX, CXXFILT, ELFEDIT, EXTRA_ECONF, F77FLAGS, FC, GCOV, GPROF, LC_ALL, LD, LFLAGS, LIBTOOL, LINGUAS, MAKE, MAKEFLAGS, NM, OBJCOPY, OBJDUMP, PORTAGE_BINHOST, PORTAGE_BUNZIP2_COMMAND, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PYTHONPATH, RANLIB, READELF, RUSTFLAGS, SIZE, STRINGS, STRIP, YACC, YFLAGS ================================================================= Package Settings ================================================================= dev-lang/rust-1.79.0-r100::gentoo was built with the following: USE="clippy rust-src rustfmt (-big-endian) -debug -dist -doc (-llvm-libunwind) -lto (-miri) (-nightly) (-parallel-compiler) -rust-analyzer -system-bootstrap (-system-llvm) -test -verify-sig -wasm" ABI_X86="32 (64) (-x32)" CPU_FLAGS_X86="sse2" LLVM_SLOT="18" LLVM_TARGETS="AMDGPU BPF NVPTX WebAssembly (X86) -AArch64 -ARC -ARM -AVR -CSKY -DirectX -Hexagon -Lanai -LoongArch -M68k -MSP430 -Mips -PowerPC -RISCV -SPIRV -Sparc -SystemZ -VE -XCore -Xtensa" dev-lang/rust-1.81.0-r100::gentoo was built with the following: USE="clippy rust-src rustfmt system-bootstrap (-big-endian) -debug -dist -doc (-llvm-libunwind) -lto (-miri) (-nightly) (-parallel-compiler) -rust-analyzer (-system-llvm) -test -verify-sig -wasm" ABI_X86="32 (64) (-x32)" CPU_FLAGS_X86="sse2" LLVM_SLOT="18" LLVM_TARGETS="AMDGPU BPF NVPTX WebAssembly (X86) -AArch64 -ARC -ARM -AVR -CSKY -DirectX -Hexagon -Lanai -LoongArch -M68k -MSP430 -Mips -PowerPC -RISCV -SPIRV -Sparc -SystemZ -VE -XCore -Xtensa"
Please include the full build.log.
Created attachment 908306 [details] build.log
# emerge -pqv '=dev-lang/rust-1.79.0-r100::gentoo' [ebuild R ] dev-lang/rust-1.79.0-r100 USE="clippy rust-src rustfmt system-bootstrap* (-big-endian) -debug -dist -doc (-llvm-libunwind) -lto (-miri) (-nightly) (-parallel-compiler) -rust-analyzer (-system-llvm) -test -verify-sig -wasm" ABI_X86="32 (64) (-x32)" CPU_FLAGS_X86="sse2" LLVM_SLOT="18" LLVM_TARGETS="AMDGPU BPF NVPTX WebAssembly (X86) -AArch64 -ARC -ARM -AVR -CSKY -DirectX -Hexagon -Lanai -LoongArch -M68k -MSP430 -Mips -PowerPC -RISCV -SPIRV -Sparc -SystemZ -VE -XCore -Xtensa"
Kangie and I had discussed this in the abstract -- dev-lang/rust needs to use rust.eclass for the iteration side but it may require some eclass changes to properly express the constraints it needs. Of course, this has an easy workaround for now (either 'eselect rust set' or USE=-system-bootstrap).
Yep, I can confirm both workarounds working.
The bug has been closed via the following commit(s): https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=309a391f9ebb245e1016e3ff49a21398c212614b commit 309a391f9ebb245e1016e3ff49a21398c212614b Author: Matt Jolly <kangie@gentoo.org> AuthorDate: 2024-11-11 13:28:04 +0000 Commit: Matt Jolly <kangie@gentoo.org> CommitDate: 2024-11-11 14:35:48 +0000 dev-lang/rust: use rust.eclass for USE=system-bootstrap Take advantage of rust.eclass for dependency generation and appropriate bootstrap slot selection. Between the PATH manipulation that the eclass performs and the exported `RUSTC` we should see significantly more consistent bootstraps. Without this change `eselect-rust` would determine which `rustc` to run, resulting in build failures if an incorrect Rust was selected (which is nearly always in the age of slotted Rust). This is also one step towards removing USE=system-bootstrap entirely; now that we can reliably (and trivially) select appropriate slots for both dev-lang/rust and dev-lang/rust-bin we'll shortly be able to avoid downloading bootstrap bins at all. Bug: https://bugs.gentoo.org/943144 Closes: https://bugs.gentoo.org/943145 Signed-off-by: Matt Jolly <kangie@gentoo.org> dev-lang/rust/rust-1.71.1-r100.ebuild | 56 +++++++---------------------------- dev-lang/rust/rust-1.74.1-r100.ebuild | 53 ++++++--------------------------- dev-lang/rust/rust-1.75.0-r100.ebuild | 56 +++++++---------------------------- dev-lang/rust/rust-1.77.1-r100.ebuild | 55 +++++++--------------------------- dev-lang/rust/rust-1.79.0-r100.ebuild | 53 ++++++--------------------------- dev-lang/rust/rust-1.80.1-r100.ebuild | 53 ++++++--------------------------- dev-lang/rust/rust-1.81.0-r100.ebuild | 53 ++++++--------------------------- dev-lang/rust/rust-1.82.0-r100.ebuild | 53 ++++++--------------------------- 8 files changed, 75 insertions(+), 357 deletions(-)