From: Deepthi Hemraj <[email protected]>
YOCTO [#15061]
The target independent variables like CARGO_HTTP_MULTIPLEXING and
CARGO_HTTP_CAINFO should be handled by the nativesdk-cargo recipe,
rather than being managed within rust-cross-canadian.
The build section of the Cargo configuration file is also
target-independent and hence moved to nativesdk-cargo.
The nativesdk-cargo recipe can then gather these entries from the individual
target-specific files to generate the final cargo_home/config file.
Target-specific configurations are specific to the rust-cross-canadian
variant and should remain there.
---
meta/recipes-devtools/rust/cargo_1.80.1.bb | 24 +++++++++++++++++++
.../rust/rust-cross-canadian.inc | 17 ++-----------
2 files changed, 26 insertions(+), 15 deletions(-)
diff --git a/meta/recipes-devtools/rust/cargo_1.80.1.bb
b/meta/recipes-devtools/rust/cargo_1.80.1.bb
index 123032cdf7..c98fa4a005 100644
--- a/meta/recipes-devtools/rust/cargo_1.80.1.bb
+++ b/meta/recipes-devtools/rust/cargo_1.80.1.bb
@@ -50,8 +50,32 @@ do_install:append:class-nativesdk() {
# sets to libdir but not base_libdir leading to symbol mismatches
depending on the
# host OS. Fully set LD_LIBRARY_PATH to contain both to avoid this.
create_wrapper ${D}/${bindir}/cargo
LD_LIBRARY_PATH=${libdir}:${base_libdir}
+
+ ENV_SETUP_DIR=${D}${base_prefix}/environment-setup.d
+ mkdir "${ENV_SETUP_DIR}"
+ CARGO_ENV_SETUP_SH="${ENV_SETUP_DIR}/cargo.sh"
+
+ RUST_HOST_TRIPLE=`echo ${RUST_HOST_SYS} | tr '[:lower:]' '[:upper:]' | sed
's/-/_/g'`
+
+ cat <<- EOF > "${CARGO_ENV_SETUP_SH}"
+ 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 ! grep -q '^\[build\]' "\$CARGO_HOME/config"; then
+ touch "\$CARGO_HOME/config"
+ echo "[build]" >> "\$CARGO_HOME/config"
+ echo 'linker = "target-rust-ccld"' >> "\$CARGO_HOME/config"
+ fi
+
+ # Keep the below off as long as HTTP/2 is disabled.
+ export CARGO_HTTP_MULTIPLEXING=false
+ export
CARGO_HTTP_CAINFO="\$OECORE_NATIVE_SYSROOT/etc/ssl/certs/ca-certificates.crt"
+ EOF
+
}
+FILES:${PN} += "${base_prefix}/environment-setup.d"
+
# Disabled due to incompatibility with libgit2 0.28.x
(https://github.com/rust-lang/git2-rs/issues/458,
https://bugs.gentoo.org/707746#c1)
# as shipped by Yocto Dunfell.
# According to
https://github.com/rust-lang/git2-rs/issues/458#issuecomment-522567539, there
are no compatibility guarantees between
diff --git a/meta/recipes-devtools/rust/rust-cross-canadian.inc
b/meta/recipes-devtools/rust/rust-cross-canadian.inc
index c34b839d15..5de22ad2b0 100644
--- a/meta/recipes-devtools/rust/rust-cross-canadian.inc
+++ b/meta/recipes-devtools/rust/rust-cross-canadian.inc
@@ -57,36 +57,23 @@ do_install () {
RUST_ENV_SETUP_SH="${ENV_SETUP_DIR}/rust.sh"
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)}
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
CARGO_TARGET_${RUST_HOST_TRIPLE}_RUNNER="\$OECORE_NATIVE_SYSROOT/lib/${SDKLOADER}"
export
RUST_TARGET_PATH="\$OECORE_NATIVE_SYSROOT/usr/lib/${TARGET_SYS}/rustlib"
- EOF
-
- chown -R root.root ${D}
-
- CARGO_ENV_SETUP_SH="${ENV_SETUP_DIR}/cargo.sh"
- cat <<- EOF > "${CARGO_ENV_SETUP_SH}"
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
touch "\$CARGO_HOME/config"
- echo "[build]" >> "\$CARGO_HOME/config"
echo 'target = "'${RUST_TARGET_SYS}'"' >> "\$CARGO_HOME/config"
echo '# TARGET_SYS' >> "\$CARGO_HOME/config"
echo '[target.'${RUST_TARGET_SYS}']' >> "\$CARGO_HOME/config"
- echo 'linker = "target-rust-ccld"' >> "\$CARGO_HOME/config"
fi
-
- # Keep the below off as long as HTTP/2 is disabled.
- export CARGO_HTTP_MULTIPLEXING=false
-
- export
CARGO_HTTP_CAINFO="\$OECORE_NATIVE_SYSROOT/etc/ssl/certs/ca-certificates.crt"
EOF
+
+ chown -R root.root ${D}
}
FILES:${PN} += "${base_prefix}/environment-setup.d"
--
2.43.0
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#207926):
https://lists.openembedded.org/g/openembedded-core/message/207926
Mute This Topic: https://lists.openembedded.org/mt/109805312/21656
Group Owner: [email protected]
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-