mirror of
https://git.yoctoproject.org/poky
synced 2026-05-08 17:19:20 +00:00
cargo: Drop cross-canadian variant and fix/use nativesdk
The cargo-cross-candian variant made no sense as one version of cargo in the SDK can work for all targets. Replace it with nativesdk-cargo instead. Move the SDK env to rust-cross-canadian. (From OE-Core rev: 6d6d135924eff5993736ee58ba8cc5d00ca635f3) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
@@ -90,7 +90,6 @@ RECIPE_MAINTAINER:pn-bzip2 = "Denys Dmytriyenko <denis@denix.org>"
|
||||
RECIPE_MAINTAINER:pn-ca-certificates = "Alexander Kanavin <alex.kanavin@gmail.com>"
|
||||
RECIPE_MAINTAINER:pn-cairo = "Anuj Mittal <anuj.mittal@intel.com>"
|
||||
RECIPE_MAINTAINER:pn-cargo = "Randy MacLeod <Randy.MacLeod@windriver.com>"
|
||||
RECIPE_MAINTAINER:pn-cargo-cross-canadian-${TRANSLATED_TARGET_ARCH} = "Randy MacLeod <Randy.MacLeod@windriver.com>"
|
||||
RECIPE_MAINTAINER:pn-cantarell-fonts = "Alexander Kanavin <alex.kanavin@gmail.com>"
|
||||
RECIPE_MAINTAINER:pn-ccache = "Robert Yang <liezhi.yang@windriver.com>"
|
||||
RECIPE_MAINTAINER:pn-cdrtools-native = "Yi Zhao <yi.zhao@windriver.com>"
|
||||
|
||||
@@ -6,12 +6,11 @@ inherit cross-canadian packagegroup
|
||||
PACKAGEGROUP_DISABLE_COMPLEMENTARY = "1"
|
||||
|
||||
RUST="rust-cross-canadian-${TRANSLATED_TARGET_ARCH}"
|
||||
CARGO="cargo-cross-canadian-${TRANSLATED_TARGET_ARCH}"
|
||||
RUST_TOOLS="rust-tools-cross-canadian-${TRANSLATED_TARGET_ARCH}"
|
||||
|
||||
RDEPENDS:${PN} = " \
|
||||
${@all_multilib_tune_values(d, 'RUST')} \
|
||||
${@all_multilib_tune_values(d, 'CARGO')} \
|
||||
nativesdk-cargo \
|
||||
rust-cross-canadian-src \
|
||||
${@all_multilib_tune_values(d, 'RUST_TOOLS')} \
|
||||
"
|
||||
|
||||
@@ -1,85 +0,0 @@
|
||||
SUMMARY = "Cargo, a package manager for Rust cross canadian flavor."
|
||||
|
||||
RUST_ALTERNATE_EXE_PATH = "${STAGING_LIBDIR_NATIVE}/llvm-rust/bin/llvm-config"
|
||||
|
||||
HOST_SYS = "${HOST_ARCH}-unknown-linux-gnu"
|
||||
CARGO_RUST_TARGET_CCLD = "${RUST_BUILD_CCLD}"
|
||||
|
||||
inherit rust-target-config
|
||||
require cargo.inc
|
||||
|
||||
CARGO = "${WORKDIR}/${CARGO_SNAPSHOT}/bin/cargo"
|
||||
BASEDEPENDS:remove = "cargo-native"
|
||||
|
||||
export RUST_TARGET_PATH="${WORKDIR}/targets/"
|
||||
|
||||
RUSTLIB = " \
|
||||
-L ${STAGING_DIR_NATIVE}/${SDKPATHNATIVE}/usr/lib/${TARGET_SYS}/rustlib/${HOST_SYS}/lib \
|
||||
"
|
||||
|
||||
DEPENDS += "rust-native \
|
||||
rust-cross-canadian-${TRANSLATED_TARGET_ARCH} \
|
||||
virtual/nativesdk-${HOST_PREFIX}compilerlibs \
|
||||
nativesdk-openssl nativesdk-zlib \
|
||||
virtual/nativesdk-libc \
|
||||
"
|
||||
|
||||
inherit cross-canadian
|
||||
|
||||
PN = "cargo-cross-canadian-${TRANSLATED_TARGET_ARCH}"
|
||||
|
||||
RUST_TARGETGENS = "BUILD HOST"
|
||||
|
||||
do_compile:prepend () {
|
||||
PKG_CONFIG_PATH="${RECIPE_SYSROOT_NATIVE}/usr/lib/pkgconfig:${PKG_CONFIG_PATH}"
|
||||
}
|
||||
|
||||
create_sdk_wrapper () {
|
||||
file="$1"
|
||||
shift
|
||||
|
||||
cat <<- EOF > "${file}"
|
||||
#!/bin/sh
|
||||
\$$1 \$@
|
||||
EOF
|
||||
|
||||
chmod +x "$file"
|
||||
}
|
||||
|
||||
do_install () {
|
||||
SYS_BINDIR=$(dirname ${D}${bindir})
|
||||
install -d "${SYS_BINDIR}"
|
||||
install -m 755 "${B}/target/${CARGO_TARGET_SUBDIR}/cargo" "${SYS_BINDIR}"
|
||||
for i in ${SYS_BINDIR}/*; do
|
||||
chrpath -r "\$ORIGIN/../lib" ${i}
|
||||
done
|
||||
|
||||
# Uses SDK's CC as linker so linked binaries works out of box.
|
||||
create_sdk_wrapper "${SYS_BINDIR}/target-rust-ccld" "CC"
|
||||
|
||||
ENV_SETUP_DIR=${D}${base_prefix}/environment-setup.d
|
||||
mkdir "${ENV_SETUP_DIR}"
|
||||
ENV_SETUP_SH="${ENV_SETUP_DIR}/cargo.sh"
|
||||
cat <<- EOF > "${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 = "'${TARGET_SYS}'"' >> "\$CARGO_HOME/config"
|
||||
echo '# TARGET_SYS' >> "\$CARGO_HOME/config"
|
||||
echo '[target.'${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
|
||||
}
|
||||
|
||||
PKG_SYS_BINDIR = "${SDKPATHNATIVE}/usr/bin"
|
||||
FILES:${PN} += "${base_prefix}/environment-setup.d ${PKG_SYS_BINDIR}"
|
||||
|
||||
@@ -1,6 +0,0 @@
|
||||
require recipes-devtools/rust/rust-source.inc
|
||||
require recipes-devtools/rust/rust-snapshot.inc
|
||||
|
||||
FILESEXTRAPATHS:prepend := "${THISDIR}/cargo-${PV}:"
|
||||
|
||||
require cargo-cross-canadian.inc
|
||||
@@ -56,3 +56,8 @@ export LIBSSH2_SYS_USE_PKG_CONFIG = "1"
|
||||
# so we must use the locally set up snapshot to bootstrap the build.
|
||||
BASEDEPENDS:remove:class-native = "cargo-native"
|
||||
CARGO:class-native = "${WORKDIR}/${CARGO_SNAPSHOT}/bin/cargo"
|
||||
|
||||
DEPENDS:append:class-nativesdk = " nativesdk-rust"
|
||||
RUSTLIB:append:class-nativesdk = " -L ${STAGING_DIR_HOST}/${SDKPATHNATIVE}/usr/lib/rustlib/${RUST_HOST_SYS}/lib"
|
||||
|
||||
|
||||
|
||||
@@ -2,3 +2,4 @@ require recipes-devtools/rust/rust-source.inc
|
||||
require recipes-devtools/rust/rust-snapshot.inc
|
||||
require cargo.inc
|
||||
BBCLASSEXTEND = "native nativesdk"
|
||||
RUSTLIB_DEP:class-nativesdk = ""
|
||||
@@ -16,6 +16,18 @@ do_compile () {
|
||||
rust_runx build --stage 2
|
||||
}
|
||||
|
||||
create_sdk_wrapper () {
|
||||
file="$1"
|
||||
shift
|
||||
|
||||
cat <<- EOF > "${file}"
|
||||
#!/bin/sh
|
||||
\$$1 \$@
|
||||
EOF
|
||||
|
||||
chmod +x "$file"
|
||||
}
|
||||
|
||||
do_install () {
|
||||
# Rust requires /usr/lib to contain the libs.
|
||||
# Similar story is with /usr/bin ruquiring `lib` to be at the same level.
|
||||
@@ -51,6 +63,11 @@ do_install () {
|
||||
# Remove executable bit from any files so then SDK doesn't try to relocate.
|
||||
chmod -R -x+X ${SRC_DIR}
|
||||
|
||||
|
||||
# Uses SDK's CC as linker so linked binaries works out of box.
|
||||
install -d ${SYS_BINDIR}
|
||||
create_sdk_wrapper "${SYS_BINDIR}/target-rust-ccld" "CC"
|
||||
|
||||
ENV_SETUP_DIR=${D}${base_prefix}/environment-setup.d
|
||||
mkdir "${ENV_SETUP_DIR}"
|
||||
ENV_SETUP_SH="${ENV_SETUP_DIR}/rust.sh"
|
||||
@@ -61,6 +78,26 @@ do_install () {
|
||||
EOF
|
||||
|
||||
chown -R root.root ${D}
|
||||
|
||||
ENV_SETUP_SH="${ENV_SETUP_DIR}/cargo.sh"
|
||||
cat <<- EOF > "${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
|
||||
}
|
||||
|
||||
PKG_SYS_LIBDIR = "${SDKPATHNATIVE}/usr/lib"
|
||||
|
||||
Reference in New Issue
Block a user