From: Deepthi Hemraj <[email protected]>
YOCTO [#15061]
Rust multilib sdks broken because of the conflicts between attempted
installs of rust-cross-canadian for multilibs
Multilibs trying to install cargo.sh and rust.sh in the same path
which resulted in the issue
The target dependent variables are retained on the rust-cross-canadian and
others are moved to the nativesdk-cargo recipe.
By appending ${RUST_TARGET_SYS} to environment script filenames,
conflicts between architectures are resolved.
Signed-off-by: Deepthi Hemraj <[email protected]>
---
meta/recipes-devtools/rust/cargo_1.80.1.bb | 2 +-
meta/recipes-devtools/rust/rust-cross-canadian.inc | 6 ++----
meta/recipes-devtools/rust/rust_1.80.1.bb | 13 +++++++++++++
3 files changed, 16 insertions(+), 5 deletions(-)
diff --git a/meta/recipes-devtools/rust/cargo_1.80.1.bb
b/meta/recipes-devtools/rust/cargo_1.80.1.bb
index 623cda0471..e67e7e9254 100644
--- a/meta/recipes-devtools/rust/cargo_1.80.1.bb
+++ b/meta/recipes-devtools/rust/cargo_1.80.1.bb
@@ -61,7 +61,7 @@ do_install:append:class-nativesdk() {
export
CARGO_TARGET_${RUST_HOST_TRIPLE}_RUNNER="\$OECORE_NATIVE_SYSROOT/lib/${SDKLOADER}"
export CARGO_HOME="\$OECORE_TARGET_SYSROOT/home/cargo"
mkdir -p "\$CARGO_HOME"
- if [ ! -f "\$CARGO_HOME/config" ]; then
+ if ! grep -q '^\[build\]' "\$CARGO_HOME/config"; then
touch "\$CARGO_HOME/config"
echo "[build]" >> "\$CARGO_HOME/config"
echo 'linker = "target-rust-ccld"' >> "\$CARGO_HOME/config"
diff --git a/meta/recipes-devtools/rust/rust-cross-canadian.inc
b/meta/recipes-devtools/rust/rust-cross-canadian.inc
index b2a212df40..4941914b74 100644
--- a/meta/recipes-devtools/rust/rust-cross-canadian.inc
+++ b/meta/recipes-devtools/rust/rust-cross-canadian.inc
@@ -54,18 +54,16 @@ do_install () {
ENV_SETUP_DIR=${D}${base_prefix}/environment-setup.d
mkdir "${ENV_SETUP_DIR}"
- RUST_ENV_SETUP_SH="${ENV_SETUP_DIR}/rust.sh"
+ RUST_ENV_SETUP_SH="${ENV_SETUP_DIR}/${RUST_TARGET_SYS}_rust.sh"
RUST_TARGET_TRIPLE=`echo ${RUST_TARGET_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)}
cat <<- EOF > "${RUST_ENV_SETUP_SH}"
export
CARGO_TARGET_${RUST_TARGET_TRIPLE}_RUSTFLAGS="--sysroot=\$OECORE_TARGET_SYSROOT/usr
-C link-arg=--sysroot=\$OECORE_TARGET_SYSROOT"
- export
RUST_TARGET_PATH="\$OECORE_NATIVE_SYSROOT/usr/lib/${TARGET_SYS}/rustlib"
export CARGO_HOME="\$OECORE_TARGET_SYSROOT/home/cargo"
mkdir -p "\$CARGO_HOME"
- # Init the default target once, it might be otherwise user modified.
- if [ ! -f "\$CARGO_HOME/config" ]; then
+ if ! grep -q '^\[target.${RUST_TARGET_SYS}]' "\$CARGO_HOME/config"; then
touch "\$CARGO_HOME/config"
echo 'target = "'${RUST_TARGET_SYS}'"' >> "\$CARGO_HOME/config"
echo '# TARGET_SYS' >> "\$CARGO_HOME/config"
diff --git a/meta/recipes-devtools/rust/rust_1.80.1.bb
b/meta/recipes-devtools/rust/rust_1.80.1.bb
index eae1f28bb8..544f2ac8a0 100644
--- a/meta/recipes-devtools/rust/rust_1.80.1.bb
+++ b/meta/recipes-devtools/rust/rust_1.80.1.bb
@@ -271,8 +271,21 @@ rust_do_install:class-nativesdk() {
rm ${D}${libdir}/rustlib/uninstall.sh
rm ${D}${libdir}/rustlib/install.log
rm ${D}${libdir}/rustlib/manifest*
+
+ ENV_SETUP_DIR=${D}${base_prefix}/environment-setup.d
+ mkdir "${ENV_SETUP_DIR}"
+ RUST_ENV_SETUP_SH="${ENV_SETUP_DIR}/rust.sh"
+
+ cat <<- EOF > "${RUST_ENV_SETUP_SH}"
+ export
RUST_TARGET_PATH="\$RUST_TARGET_PATH:\$OECORE_NATIVE_SYSROOT/usr/lib/${TARGET_SYS}/rustlib"
+ EOF
+
+ chown -R root.root ${D}
+
}
+FILES:${PN} += "${base_prefix}/environment-setup.d"
+
EXTRA_TOOLS ?= "cargo-clippy clippy-driver rustfmt"
rust_do_install:class-target() {
export PSEUDO_UNLOAD=1
--
2.43.0
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#208004):
https://lists.openembedded.org/g/openembedded-core/message/208004
Mute This Topic: https://lists.openembedded.org/mt/109831598/21656
Group Owner: [email protected]
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-