View previous topic :: View next topic |
Author |
Message |
Skotlex Guru
Joined: 13 Mar 2004 Posts: 309
|
Posted: Wed Dec 11, 2024 12:47 pm Post subject: dev-lang/rust slots selection |
|
|
Good day,
How do I filter which rust version slots I get? And how to know which versions I actually need?
I thought this would be automatically done by Portage's package dependency resolution... however, my latest emerge update world shows:
Code: |
[ebuild NS ] dev-lang/rust-1.81.0-r100:1.81.0::gentoo [1.81.0:stable/1.81::gentoo] USE="(-big-endian) -clippy -debug -dist -doc (-llvm-libunwind) -lto (-miri) (-nightly) (-parallel-compiler) -rust-analyzer -rust-src -rustfmt (-system-llvm) -test -verify-sig -wasm (-profiler%) (-system-bootstrap%)" ABI_X86="(64) -32 (-x32)" CPU_FLAGS_X86="sse2" LLVM_SLOT="(18%*)" 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" 0 KiB
[ebuild NS ] dev-lang/rust-1.80.1-r100:1.80.1::gentoo [1.81.0:stable/1.81::gentoo] USE="(-big-endian) -clippy -debug -dist -doc (-llvm-libunwind) -lto (-miri) (-nightly) (-parallel-compiler) -rust-analyzer -rust-src -rustfmt (-system-llvm) -test -verify-sig -wasm (-profiler%) (-system-bootstrap%)" ABI_X86="(64) -32 (-x32)" CPU_FLAGS_X86="sse2" LLVM_SLOT="(18%*)" 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" 194 566 KiB
[ebuild NS ] dev-lang/rust-1.79.0-r100:1.79.0::gentoo [1.81.0:stable/1.81::gentoo] USE="(-big-endian) -clippy -debug -dist -doc (-llvm-libunwind) -lto (-miri) (-nightly) (-parallel-compiler) -rust-analyzer -rust-src -rustfmt (-system-llvm) -test -verify-sig -wasm (-profiler%) (-system-bootstrap%)" ABI_X86="(64) -32 (-x32)" CPU_FLAGS_X86="sse2" LLVM_SLOT="(18%*)" 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" 158 555 KiB
[ebuild NS ] dev-lang/rust-1.78.0-r100:1.78.0::gentoo [1.81.0:stable/1.81::gentoo] USE="(-big-endian) -clippy -debug -dist -doc (-llvm-libunwind) -lto (-miri) (-nightly) (-parallel-compiler) -rust-analyzer -rust-src -rustfmt (-system-llvm) -test -verify-sig -wasm (-profiler%) (-system-bootstrap%)" ABI_X86="(64) -32 (-x32)" CPU_FLAGS_X86="sse2" LLVM_SLOT="18%*" 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" 155 451 KiB
[ebuild NS ] dev-lang/rust-1.77.1-r100:1.77.1::gentoo [1.81.0:stable/1.81::gentoo] USE="(-big-endian) -clippy -debug -dist -doc (-llvm-libunwind) -lto (-miri) (-nightly) (-parallel-compiler) -rust-analyzer -rust-src -rustfmt (-system-llvm) -test -verify-sig -wasm (-profiler%) (-system-bootstrap%)" ABI_X86="(64) -32 (-x32)" CPU_FLAGS_X86="sse2" LLVM_SLOT="(17%*)" 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" 158 981 KiB
[ebuild NS ] dev-lang/rust-1.76.0-r100:1.76.0::gentoo [1.81.0:stable/1.81::gentoo] USE="(-big-endian) -clippy -debug -dist -doc (-llvm-libunwind) -lto (-miri) (-nightly) (-parallel-compiler) -rust-analyzer -rust-src -rustfmt (-system-llvm) -test -verify-sig -wasm (-profiler%) (-system-bootstrap%)" ABI_X86="(64) -32 (-x32)" CPU_FLAGS_X86="sse2" LLVM_SLOT="17%*" 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" 158 465 KiB
[ebuild NS ] dev-lang/rust-1.75.0-r100:1.75.0::gentoo [1.81.0:stable/1.81::gentoo] USE="lto* (-big-endian) -clippy -debug -dist -doc (-llvm-libunwind) (-miri) (-nightly) (-parallel-compiler) -rust-analyzer -rust-src -rustfmt (-system-llvm) -test -verify-sig -wasm (-profiler%) (-system-bootstrap%)" ABI_X86="(64) -32 (-x32)" CPU_FLAGS_X86="sse2" LLVM_SLOT="(17%*)" 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" 155 884 KiB
[ebuild NS ] dev-lang/rust-1.74.1-r100:1.74.1::gentoo [1.81.0:stable/1.81::gentoo] USE="lto* (-big-endian) -clippy -debug -dist -doc (-llvm-libunwind) (-miri) (-nightly) (-parallel-compiler) -rust-analyzer -rust-src -rustfmt (-system-llvm) -test -verify-sig -wasm (-profiler%) (-system-bootstrap%)" ABI_X86="(64) -32 (-x32)" CPU_FLAGS_X86="sse2" LLVM_SLOT="(17%*)" 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" 152 314 KiB
[ebuild N ] dev-lang/rust-bin-1.74.1-r101:1.74.1::gentoo USE="(-big-endian) -clippy -doc -llvm-libunwind (-prefix) -rust-analyzer -rust-src -rustfmt -verify-sig" ABI_X86="(64) -32 (-x32)" CPU_FLAGS_X86="sse2" LLVM_SLOT="(17)" 151 796 KiB
|
Rust is a package that takes a very long time to build in my system, so I'd really not have unnecessary versions installed... |
|
Back to top |
|
|
Hu Administrator
Joined: 06 Mar 2007 Posts: 22805
|
Posted: Wed Dec 11, 2024 1:05 pm Post subject: |
|
|
I am not involved in Gentoo's Rust maintenance, but from what I understand of Rust, this is unfortunately unsurprising. The Rust project is infamous for minimal compatibility, so if you want to build rust-1.81, you need rust-1.80 to do it. rust-1.79 officially does not suffice; it may or may not work, but is not considered supported. Thus, you need rust-1.80 too, so that you can build rust-1.81. Since you don't have rust-1.80, you need rust-1.79 so that you can build rust-1.80. The chain progresses from there. I think it only cuts off because Gentoo does not have packages to let you continue all the way back to the OCaml-based Rust from the dawn of time.
On the positive side, if you obtain a prebuilt rust built by a trusted source, that will not require you to have the immediately preceding version of rust in order to install it. Portage appears to eventually fall back on this, when it needs a =rust-1.73 or >=rust-bin-1.73, cannot find the former, and so uses rust-bin-1.74 in order to build rust-1.74. Presumably, forcing Portage to install a very current rust-bin would truncate the chain.
What on your system requires any version of Rust, other than Rust itself? |
|
Back to top |
|
|
bstaletic Guru
Joined: 05 Apr 2014 Posts: 396
|
Posted: Wed Dec 11, 2024 1:09 pm Post subject: |
|
|
This happens because dev-lang/rust-1.82 can only be compiled by an already installed dev-lang/rust-1.82, or dev-lang/rust-1.81 (or the dev-lang/rust-bin of the same version).
This creates a chain until you hit a missing dev-lang/rust version and portage decides to pick rust-bin for the missing version.
Alternative is to decide on a version and install rust-bin.
If you really want to compile that version, without compiling all previous versions, grab the rust-bin variant, without recording it in your world file. Then compile the same version from source. |
|
Back to top |
|
|
Skotlex Guru
Joined: 13 Mar 2004 Posts: 309
|
Posted: Wed Dec 11, 2024 1:16 pm Post subject: |
|
|
It would had been really useful to have Portage tell me instead of... well, this. Thanks for the heads-up, this will spare me a lot of compiling time :)
EDIT: The curious bit is I already have installed:
Code: |
> eselect rust list
Available Rust versions:
[1] rust-bin-1.74.1
[2] rust-1.81.0 *
|
So why is it trying to reinstall everything? Because of the change to a slotted package? And it can't use rust-1.81.0 for this? Madness. |
|
Back to top |
|
|
Skotlex Guru
Joined: 13 Mar 2004 Posts: 309
|
Posted: Wed Dec 11, 2024 1:33 pm Post subject: |
|
|
Hu wrote: |
What on your system requires any version of Rust, other than Rust itself? |
Code: |
> equery depends rust
equery depends rust
* These packages depend on rust:
gnome-base/librsvg-2.57.3 (>=virtual/rust-1.70.0[abi_x86_64(-)])
(>=virtual/rust-1.53)
virtual/rust-1.81.0-r1 (~dev-lang/rust-1.81.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(-)?])
|
The answer to the question is: nope, none need a specific rust version. However, it seems having a GTK based system makes it sort of mandatory, for svg support. I decided to switch to rust-bin and spare myself the headache. rust, webkit, and libreoffice are the packages that take multiple compile hours in my system. :) |
|
Back to top |
|
|
bstaletic Guru
Joined: 05 Apr 2014 Posts: 396
|
Posted: Wed Dec 11, 2024 1:34 pm Post subject: |
|
|
Skotlex wrote: | EDIT: The curious bit is I already have installed:
Code: |
> eselect rust list
Available Rust versions:
[1] rust-bin-1.74.1
[2] rust-1.81.0 *
|
So why is it trying to reinstall everything? Because of the change to a slotted package? And it can't use rust-1.81.0 for this? Madness. |
Yes. Because the newly slotted rust ebuilds depend on slotted rust for compiling, thus the old stuff does not satisfy the BDEPENDs.
If you're feeling adventurous, you can go into /var/db/pkgs and change what portage thinks of your current dev-lang/rust installation. It's just a bunch of plaintext files, so you can tell portage that the package does have a slot.
A fair warning: messing with the portage database in this way is dangerous and if it breaks you get to keep the pieces. |
|
Back to top |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|