diff mbox series

rust-cross-canadian: Fix file conflicts for arm and aarch64

Message ID 20231108060904.2305647-1-Deepthi.Hemraj@windriver.com
State New
Headers show
Series rust-cross-canadian: Fix file conflicts for arm and aarch64 | expand

Commit Message

Deepthi H Nov. 8, 2023, 6:09 a.m. UTC
From: Deepthi Hemraj <Deepthi.Hemraj@windriver.com>

[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 <Deepthi.Hemraj@windriver.com>
---
 .../rust/rust-cross-canadian.inc              | 25 +++++++++++++++++++
 1 file changed, 25 insertions(+)

Comments

Khem Raj Nov. 8, 2023, 6:52 a.m. UTC | #1
On Tue, Nov 7, 2023 at 10:09 PM Hemraj, Deepthi via
lists.openembedded.org
<Deepthi.Hemraj=windriver.com@lists.openembedded.org> wrote:
>
> From: Deepthi Hemraj <Deepthi.Hemraj@windriver.com>
>
> [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 <Deepthi.Hemraj@windriver.com>
> ---
>  .../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

change this check to '='

> +       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

same here

> +       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/1997914
> Group Owner: openembedded-core+owner@lists.openembedded.org
> Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [raj.khem@gmail.com]
> -=-=-=-=-=-=-=-=-=-=-=-
>
diff mbox series

Patch

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"