Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
dev-lang/rust slots selection
View unanswered posts
View posts from last 24 hours

 
Reply to topic    Gentoo Forums Forum Index Portage & Programming
View previous topic :: View next topic  
Author Message
Skotlex
Guru
Guru


Joined: 13 Mar 2004
Posts: 309

PostPosted: Wed Dec 11, 2024 12:47 pm    Post subject: dev-lang/rust slots selection Reply with quote

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
View user's profile Send private message
Hu
Administrator
Administrator


Joined: 06 Mar 2007
Posts: 22805

PostPosted: Wed Dec 11, 2024 1:05 pm    Post subject: Reply with quote

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
View user's profile Send private message
bstaletic
Guru
Guru


Joined: 05 Apr 2014
Posts: 396

PostPosted: Wed Dec 11, 2024 1:09 pm    Post subject: Reply with quote

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
View user's profile Send private message
Skotlex
Guru
Guru


Joined: 13 Mar 2004
Posts: 309

PostPosted: Wed Dec 11, 2024 1:16 pm    Post subject: Reply with quote

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
View user's profile Send private message
Skotlex
Guru
Guru


Joined: 13 Mar 2004
Posts: 309

PostPosted: Wed Dec 11, 2024 1:33 pm    Post subject: Reply with quote

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
View user's profile Send private message
bstaletic
Guru
Guru


Joined: 05 Apr 2014
Posts: 396

PostPosted: Wed Dec 11, 2024 1:34 pm    Post subject: Reply with quote

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
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Portage & Programming All times are GMT
Page 1 of 1

 
Jump to:  
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