Created attachment 678538 [details] build.log Hi. This package claims to support x32 ABI but there is no rust-1.47.0-x32-unknown-linux-gnu.tar.xz in /usr/portage/disfiles.
I can confirm it is still broken with 1.52.1 as well as dev-lang/rust for x32
Reproducible with dev-lang/rust-1.53.0:stable: > * Package: dev-lang/rust-1.53.0 > * Repository: gentoo > * Maintainer: gyakovlev@gentoo.org rust@gentoo.org > * USE: abi_x86_64 abi_x86_x32 amd64 cpu_flags_x86_sse2 elibc_glibc kernel_linux llvm_targets_X86 userland_GNU > * FEATURES: network-sandbox preserve-libs sandbox userpriv usersandbox > * Checking for at least 11520 MiB disk space at "/var/tmp/portage/dev-lang/rust-1.53.0/temp" ... > [ ok ] > * Using python3.9 to build > /var/tmp/portage/dev-lang/rust-1.53.0/temp/environment: line 3985: /var/tmp/portage/dev-lang/rust-1.53.0/work/rust-1.52.0-x86_64-pc-linux-gnux32/install.sh: No such file or directory > * ERROR: dev-lang/rust-1.53.0::gentoo failed (prepare phase): > * (no error message) > * > * Call stack: > * ebuild.sh, line 127: Called src_prepare > * environment, line 3985: Called die > * The specific snippet of code: > * "${WORKDIR}/${rust_stage0}"/install.sh --disable-ldconfig --without=rust-docs --destdir="${rust_stage0_root}" --prefix=/ || die; > * > * If you need support, post the output of `emerge --info '=dev-lang/rust-1.53.0::gentoo'`, > * the complete build log and the output of `emerge -pqv '=dev-lang/rust-1.53.0::gentoo'`. > * The complete build log is located at '/var/tmp/portage/dev-lang/rust-1.53.0/temp/build.log'. > * The ebuild environment file is located at '/var/tmp/portage/dev-lang/rust-1.53.0/temp/environment'. > * Working directory: '/var/tmp/portage/dev-lang/rust-1.53.0/work/rustc-1.53.0-src' > * S: '/var/tmp/portage/dev-lang/rust-1.53.0/work/rustc-1.53.0-src'
The upstream rust binary distribution *does* support x32 (x86_64-unknown-linux-gnux32) but as a target only, and requires the x32 rust-std (rustlib) component to be installed. The toolchain itself is amd64 only. For the purpose of bootstrapping a native x32 Rust toolchain, this enough. Patches follow...
Created attachment 776612 [details, diff] rust-bin ebuild patch adding x32 target rustlib
Created attachment 776615 [details, diff] rust eclass patch to add x32 triple mapping
Created attachment 776618 [details, diff] WIP patch to build native x32 rust toolchain This is WIP because -system-bootstrap isn't complete. It currently only works with system-bootstrap, although both dev-lang/rust-bin (amd64) and dev-lang/rust (x32) both work to bootstrap.
(In reply to Steven Newbury from comment #6) > Created attachment 776618 [details, diff] [details, diff] > WIP patch to build native x32 rust toolchain > > This is WIP because -system-bootstrap isn't complete. It currently only > works with system-bootstrap, although both dev-lang/rust-bin (amd64) and > dev-lang/rust (x32) both work to bootstrap. Also, only tested with system-llvm.
(In reply to Steven Newbury from comment #6) > Created attachment 776618 [details, diff] [details, diff] > WIP patch to build native x32 rust toolchain > > This is WIP because -system-bootstrap isn't complete. It currently only > works with system-bootstrap, although both dev-lang/rust-bin (amd64) and > dev-lang/rust (x32) both work to bootstrap. To get !system-boostrap working requires adding the x32 rustlib matching the rust release used for internal bootstrapping as I did for rust-bin.
Created attachment 776630 [details, diff] rust-bin ebuild patch adding x32 target rustlib Accidentally attached the wrong version.
Created attachment 777059 [details, diff] rust-bin ebuild patch adding x32 target rustlib Fixed bug
Created attachment 777062 [details, diff] rust-bin ebuild patch adding x32 target rustlib Forgot to mark obsolete
Created attachment 777068 [details, diff] rust-bin ebuild patch adding x32 target rustlib Apologies, this version works for both when x32 is multilib_is_native and when it isn't. Suffering from apparent brain failure.