mirror of
https://github.com/flatcar/scripts.git
synced 2025-09-21 21:51:57 +02:00
boostrap_sdk: only build aarch64 cross-rust on x86 hosts
The rust ebuild has some magic to detect cross-toolchains present on the system and enable building additional cross targets. The code to trigger the rebuild of rust is part of install_cross_rust, and checks whether the cross directories exist in the rust installation. If they don't, then rust is removed and rebuilt to allow for the auto-detection to happen. Right now there are two issues with the code. Firstly, the path that is checked is wrong, which leads to rust always being removed and rebuilt. The path checked is /usr/lib/rust-*/rustlib but /usr/lib/rustlib is where the files are installed. The second issue is that it checks for aarch64 dirs when CHOST is aarch64-cros-linux-gnu. However, on an aarch64 host the aarch64 dirs will already exist from building the sdk itself. The rust ebuild is not ready to handle aarch64 hosts yet and blows up. The correct behavior is to combine the check for CHOST with a check for the right CBUILD. On an aarch64 host we should presumably check for the x86 CHOST and rust dirs, but that can be added later, because it needs more work. Signed-off-by: Jeremi Piotrowski <jpiotrowski@microsoft.com>
This commit is contained in:
parent
e4f57bea82
commit
4ba3218d6a
@ -399,6 +399,7 @@ install_cross_libs() {
|
|||||||
install_cross_rust() {
|
install_cross_rust() {
|
||||||
local cross_chost="$1"; shift
|
local cross_chost="$1"; shift
|
||||||
local emerge_flags=( "$@" --binpkg-respect-use=y --update )
|
local emerge_flags=( "$@" --binpkg-respect-use=y --update )
|
||||||
|
local cbuild="$(portageq envvar CBUILD)"
|
||||||
|
|
||||||
# may be called from either catalyst (root) or upgrade_chroot (user)
|
# may be called from either catalyst (root) or upgrade_chroot (user)
|
||||||
local sudo="env"
|
local sudo="env"
|
||||||
@ -406,10 +407,10 @@ install_cross_rust() {
|
|||||||
sudo="sudo -E"
|
sudo="sudo -E"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "${cross_chost}" = "aarch64-cros-linux-gnu" ]; then
|
if [ "${cbuild}" = "x86_64-pc-linux-gnu" ] && [ "${cross_chost}" = "aarch64-cros-linux-gnu" ]; then
|
||||||
echo "Building Rust for arm64"
|
echo "Building Rust for arm64"
|
||||||
# If no aarch64 folder exists, try to remove any existing Rust packages.
|
# If no aarch64 folder exists, try to remove any existing Rust packages.
|
||||||
[ ! -d /usr/lib/rust-*/rustlib/aarch64-unknown-linux-gnu ] && ($sudo emerge -C dev-lang/rust || true)
|
[ ! -d /usr/lib/rustlib/aarch64-unknown-linux-gnu ] && ($sudo emerge -C dev-lang/rust || true)
|
||||||
$sudo emerge "${emerge_flags[@]}" dev-lang/rust
|
$sudo emerge "${emerge_flags[@]}" dev-lang/rust
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user