Correctly configure USE/env vars for Rust

Although `LLVM_TARGETS` is USE-forced for _llvm-core/llvm_, it is NOT
forced for _dev-lang/rust_.  The latter needs the target architecture
set in order to build the cross-compiled Rust standard library.
cross/main
Dustin 2024-12-19 18:28:43 -06:00
parent 48fd2abbda
commit 79a2645c17
1 changed files with 13 additions and 11 deletions

View File

@ -26,15 +26,6 @@ crossdev --stable -t "$1"
ln -s /var/db/repos/gentoo/sys-devel/rust-std /var/db/repos/crossdev/cross-${target}/ ln -s /var/db/repos/gentoo/sys-devel/rust-std /var/db/repos/crossdev/cross-${target}/
mkdir -p
/etc/portage/env/dev-lang \
/etc/portage/package.accept_keywords \
/etc/portage/package.use \
&& :
printf 'cross-%s/rust-std **\n' "${target}" \
> /etc/portage/package.accept-keywords/rust-cross
echo 'dev-lang/rust rust-src' \
> /etc/portage/package.use/rust-src
case ${target%%-*} in case ${target%%-*} in
aarch64) aarch64)
llvm_target=AArch64 llvm_target=AArch64
@ -47,9 +38,20 @@ arm*)
exit 1 exit 1
;; ;;
esac esac
printf '( %s:%s:%s )\n' \
mkdir -p \
/etc/portage/env/dev-lang \
/etc/portage/package.accept_keywords \
/etc/portage/package.use \
&& :
printf 'cross-%s/rust-std **\n' "${target}" \
> /etc/portage/package.accept_keywords/rust-cross
printf 'dev-lang/rust rust-src LLVM_TARGETS: %s\n' \
"${llvm_target}" \
> /etc/portage/package.use/rust-src
printf 'RUST_CROSS_TARGETS=( %s:%s:%s )\n' \
"${llvm_target}" \ "${llvm_target}" \
"${target}" \ "${target}" \
"${target}" \ "${target}" \
>> /etc/portage/env/dev-lang/rust >> /etc/portage/env/dev-lang/rust
emerge -vbknuUj cross-${target}/rust-std emerge -vbknj cross-${target}/rust-std