From: Deepthi Hemraj <[email protected]>

[YOCTO #15061]
Rust multilib sdks broken because of the conflicts between attempted installs 
of rust-cross-canadian for arm and aarch64.

Arm and aarch64 target architectures are trying to install cargo.sh and rust.sh 
in the same path which resulted in the issue.

The current patch modifies CARGO_ENV_SETUP_SH and RUST_ENV_SETUP_SH macros 
based on the architecture.
Hence, creates different file names for the environment setup scripts and 
resolves the issue.

Signed-off-by: Deepthi Hemraj <[email protected]>
---
 .../rust/rust-cross-canadian.inc              | 25 +++++++++++++++++++
 1 file changed, 25 insertions(+)

diff --git a/meta/recipes-devtools/rust/rust-cross-canadian.inc 
b/meta/recipes-devtools/rust/rust-cross-canadian.inc
index 7bfef6d175..94c3b0d696 100644
--- a/meta/recipes-devtools/rust/rust-cross-canadian.inc
+++ b/meta/recipes-devtools/rust/rust-cross-canadian.inc
@@ -54,6 +54,18 @@ do_install () {
     mkdir "${ENV_SETUP_DIR}"
     RUST_ENV_SETUP_SH="${ENV_SETUP_DIR}/rust.sh"
 
+    # Set up environment variables for AArch64
+    if [ "${TARGET_ARCH}" == "aarch64" ]; then
+       RUST_ENV_SETUP_SH="${ENV_SETUP_DIR}/rust-aarch64.sh"
+       RUST_TARGET_SYS="aarch64-unknown-linux-gnu"
+    # Set up environment variables for ARM
+    elif [ "${TARGET_ARCH}" == "arm" ]; then
+       RUST_ENV_SETUP_SH="${ENV_SETUP_DIR}/rust-arm.sh"
+       RUST_TARGET_SYS="arm-unknown-linux-gnueabi"
+    else
+       RUST_ENV_SETUP_SH="${ENV_SETUP_DIR}/rust.sh"
+    fi
+
     RUST_TARGET_TRIPLE=`echo ${RUST_TARGET_SYS} | tr '[:lower:]' '[:upper:]' | 
sed 's/-/_/g'`
     RUST_HOST_TRIPLE=`echo ${RUST_HOST_SYS} | tr '[:lower:]' '[:upper:]' | sed 
's/-/_/g'`
     SDKLOADER=${@bb.utils.contains('SDK_ARCH', 'x86_64', 
'ld-linux-x86-64.so.2', '', d)}${@bb.utils.contains('SDK_ARCH', 'i686', 
'ld-linux.so.2', '', d)}${@bb.utils.contains('SDK_ARCH', 'aarch64', 
'ld-linux-aarch64.so.1', '', d)}${@bb.utils.contains('SDK_ARCH', 'ppc64le', 
'ld64.so.2', '', d)}${@bb.utils.contains('SDK_ARCH', 'riscv64', 
'ld-linux-riscv64-lp64d.so.1', '', d)}
@@ -67,6 +79,19 @@ do_install () {
     chown -R root.root ${D}
 
     CARGO_ENV_SETUP_SH="${ENV_SETUP_DIR}/cargo.sh"
+
+    # Set up environment variables for AArch64
+    if [ "${TARGET_ARCH}" = "aarch64" ]; then
+       CARGO_ENV_SETUP_SH="${ENV_SETUP_DIR}/cargo-aarch64.sh"
+       CARGO_TARGET_SYS="aarch64-unknown-linux-gnu"
+    # Set up environment variables for ARM
+    elif [ "${TARGET_ARCH}" == "arm" ]; then
+       CARGO_ENV_SETUP_SH="${ENV_SETUP_DIR}/cargo-arm.sh"
+       CARGO_TARGET_SYS="arm-unknown-linux-gnueabi"
+    else
+       CARGO_ENV_SETUP_SH="${ENV_SETUP_DIR}/cargo.sh"
+    fi
+
     cat <<- EOF > "${CARGO_ENV_SETUP_SH}"
        export CARGO_HOME="\$OECORE_TARGET_SYSROOT/home/cargo"
        mkdir -p "\$CARGO_HOME"
-- 
2.42.0

-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#190304): 
https://lists.openembedded.org/g/openembedded-core/message/190304
Mute This Topic: https://lists.openembedded.org/mt/102459344/21656
Group Owner: [email protected]
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to