From 251f55374d26b5c24d8833aa87c95432be8b81b2 Mon Sep 17 00:00:00 2001 From: Richard Purdie Date: Fri, 5 Aug 2022 13:39:43 +0100 Subject: 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 --- meta/conf/distro/include/maintainers.inc | 1 - .../packagegroup-rust-cross-canadian.bb | 3 +- .../cargo/cargo-cross-canadian.inc | 85 ---------------------- .../cargo/cargo-cross-canadian_1.62.0.bb | 6 -- meta/recipes-devtools/cargo/cargo.inc | 5 ++ meta/recipes-devtools/cargo/cargo_1.62.0.bb | 1 + meta/recipes-devtools/rust/rust-cross-canadian.inc | 37 ++++++++++ 7 files changed, 44 insertions(+), 94 deletions(-) delete mode 100644 meta/recipes-devtools/cargo/cargo-cross-canadian.inc delete mode 100644 meta/recipes-devtools/cargo/cargo-cross-canadian_1.62.0.bb diff --git a/meta/conf/distro/include/maintainers.inc b/meta/conf/distro/include/maintainers.inc index e20275c674..b563c51796 100644 --- a/meta/conf/distro/include/maintainers.inc +++ b/meta/conf/distro/include/maintainers.inc @@ -90,7 +90,6 @@ RECIPE_MAINTAINER:pn-bzip2 = "Denys Dmytriyenko " RECIPE_MAINTAINER:pn-ca-certificates = "Alexander Kanavin " RECIPE_MAINTAINER:pn-cairo = "Anuj Mittal " RECIPE_MAINTAINER:pn-cargo = "Randy MacLeod " -RECIPE_MAINTAINER:pn-cargo-cross-canadian-${TRANSLATED_TARGET_ARCH} = "Randy MacLeod " RECIPE_MAINTAINER:pn-cantarell-fonts = "Alexander Kanavin " RECIPE_MAINTAINER:pn-ccache = "Robert Yang " RECIPE_MAINTAINER:pn-cdrtools-native = "Yi Zhao " diff --git a/meta/recipes-core/packagegroups/packagegroup-rust-cross-canadian.bb b/meta/recipes-core/packagegroups/packagegroup-rust-cross-canadian.bb index 0d4f5ec9ef..6d324002a1 100644 --- a/meta/recipes-core/packagegroups/packagegroup-rust-cross-canadian.bb +++ b/meta/recipes-core/packagegroups/packagegroup-rust-cross-canadian.bb @@ -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')} \ " diff --git a/meta/recipes-devtools/cargo/cargo-cross-canadian.inc b/meta/recipes-devtools/cargo/cargo-cross-canadian.inc deleted file mode 100644 index a2fac929d4..0000000000 --- a/meta/recipes-devtools/cargo/cargo-cross-canadian.inc +++ /dev/null @@ -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}" - diff --git a/meta/recipes-devtools/cargo/cargo-cross-canadian_1.62.0.bb b/meta/recipes-devtools/cargo/cargo-cross-canadian_1.62.0.bb deleted file mode 100644 index 63fd69107b..0000000000 --- a/meta/recipes-devtools/cargo/cargo-cross-canadian_1.62.0.bb +++ /dev/null @@ -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 diff --git a/meta/recipes-devtools/cargo/cargo.inc b/meta/recipes-devtools/cargo/cargo.inc index 978504052b..e34554a9d7 100644 --- a/meta/recipes-devtools/cargo/cargo.inc +++ b/meta/recipes-devtools/cargo/cargo.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" + + diff --git a/meta/recipes-devtools/cargo/cargo_1.62.0.bb b/meta/recipes-devtools/cargo/cargo_1.62.0.bb index eee58fc245..5c8527708c 100644 --- a/meta/recipes-devtools/cargo/cargo_1.62.0.bb +++ b/meta/recipes-devtools/cargo/cargo_1.62.0.bb @@ -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 = "" \ No newline at end of file diff --git a/meta/recipes-devtools/rust/rust-cross-canadian.inc b/meta/recipes-devtools/rust/rust-cross-canadian.inc index 8bbbd61bdc..677bd8842c 100644 --- a/meta/recipes-devtools/rust/rust-cross-canadian.inc +++ b/meta/recipes-devtools/rust/rust-cross-canadian.inc @@ -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" -- cgit v1.2.3-54-g00ecf