summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard Purdie <richard.purdie@linuxfoundation.org>2022-08-05 13:39:43 +0100
committerRichard Purdie <richard.purdie@linuxfoundation.org>2022-08-08 15:44:20 +0100
commit251f55374d26b5c24d8833aa87c95432be8b81b2 (patch)
treed83905b2963e8604ea754d85d1176d2fef417ab3
parentcdd65a42a8b7c23d3640d341c84e747dfb96d269 (diff)
downloadpoky-251f55374d26b5c24d8833aa87c95432be8b81b2.tar.gz
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>
-rw-r--r--meta/conf/distro/include/maintainers.inc1
-rw-r--r--meta/recipes-core/packagegroups/packagegroup-rust-cross-canadian.bb3
-rw-r--r--meta/recipes-devtools/cargo/cargo-cross-canadian.inc85
-rw-r--r--meta/recipes-devtools/cargo/cargo-cross-canadian_1.62.0.bb6
-rw-r--r--meta/recipes-devtools/cargo/cargo.inc5
-rw-r--r--meta/recipes-devtools/cargo/cargo_1.62.0.bb1
-rw-r--r--meta/recipes-devtools/rust/rust-cross-canadian.inc37
7 files changed, 44 insertions, 94 deletions
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 <denis@denix.org>"
90RECIPE_MAINTAINER:pn-ca-certificates = "Alexander Kanavin <alex.kanavin@gmail.com>" 90RECIPE_MAINTAINER:pn-ca-certificates = "Alexander Kanavin <alex.kanavin@gmail.com>"
91RECIPE_MAINTAINER:pn-cairo = "Anuj Mittal <anuj.mittal@intel.com>" 91RECIPE_MAINTAINER:pn-cairo = "Anuj Mittal <anuj.mittal@intel.com>"
92RECIPE_MAINTAINER:pn-cargo = "Randy MacLeod <Randy.MacLeod@windriver.com>" 92RECIPE_MAINTAINER:pn-cargo = "Randy MacLeod <Randy.MacLeod@windriver.com>"
93RECIPE_MAINTAINER:pn-cargo-cross-canadian-${TRANSLATED_TARGET_ARCH} = "Randy MacLeod <Randy.MacLeod@windriver.com>"
94RECIPE_MAINTAINER:pn-cantarell-fonts = "Alexander Kanavin <alex.kanavin@gmail.com>" 93RECIPE_MAINTAINER:pn-cantarell-fonts = "Alexander Kanavin <alex.kanavin@gmail.com>"
95RECIPE_MAINTAINER:pn-ccache = "Robert Yang <liezhi.yang@windriver.com>" 94RECIPE_MAINTAINER:pn-ccache = "Robert Yang <liezhi.yang@windriver.com>"
96RECIPE_MAINTAINER:pn-cdrtools-native = "Yi Zhao <yi.zhao@windriver.com>" 95RECIPE_MAINTAINER:pn-cdrtools-native = "Yi Zhao <yi.zhao@windriver.com>"
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
6PACKAGEGROUP_DISABLE_COMPLEMENTARY = "1" 6PACKAGEGROUP_DISABLE_COMPLEMENTARY = "1"
7 7
8RUST="rust-cross-canadian-${TRANSLATED_TARGET_ARCH}" 8RUST="rust-cross-canadian-${TRANSLATED_TARGET_ARCH}"
9CARGO="cargo-cross-canadian-${TRANSLATED_TARGET_ARCH}"
10RUST_TOOLS="rust-tools-cross-canadian-${TRANSLATED_TARGET_ARCH}" 9RUST_TOOLS="rust-tools-cross-canadian-${TRANSLATED_TARGET_ARCH}"
11 10
12RDEPENDS:${PN} = " \ 11RDEPENDS:${PN} = " \
13 ${@all_multilib_tune_values(d, 'RUST')} \ 12 ${@all_multilib_tune_values(d, 'RUST')} \
14 ${@all_multilib_tune_values(d, 'CARGO')} \ 13 nativesdk-cargo \
15 rust-cross-canadian-src \ 14 rust-cross-canadian-src \
16 ${@all_multilib_tune_values(d, 'RUST_TOOLS')} \ 15 ${@all_multilib_tune_values(d, 'RUST_TOOLS')} \
17" 16"
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 @@
1SUMMARY = "Cargo, a package manager for Rust cross canadian flavor."
2
3RUST_ALTERNATE_EXE_PATH = "${STAGING_LIBDIR_NATIVE}/llvm-rust/bin/llvm-config"
4
5HOST_SYS = "${HOST_ARCH}-unknown-linux-gnu"
6CARGO_RUST_TARGET_CCLD = "${RUST_BUILD_CCLD}"
7
8inherit rust-target-config
9require cargo.inc
10
11CARGO = "${WORKDIR}/${CARGO_SNAPSHOT}/bin/cargo"
12BASEDEPENDS:remove = "cargo-native"
13
14export RUST_TARGET_PATH="${WORKDIR}/targets/"
15
16RUSTLIB = " \
17 -L ${STAGING_DIR_NATIVE}/${SDKPATHNATIVE}/usr/lib/${TARGET_SYS}/rustlib/${HOST_SYS}/lib \
18"
19
20DEPENDS += "rust-native \
21 rust-cross-canadian-${TRANSLATED_TARGET_ARCH} \
22 virtual/nativesdk-${HOST_PREFIX}compilerlibs \
23 nativesdk-openssl nativesdk-zlib \
24 virtual/nativesdk-libc \
25"
26
27inherit cross-canadian
28
29PN = "cargo-cross-canadian-${TRANSLATED_TARGET_ARCH}"
30
31RUST_TARGETGENS = "BUILD HOST"
32
33do_compile:prepend () {
34 PKG_CONFIG_PATH="${RECIPE_SYSROOT_NATIVE}/usr/lib/pkgconfig:${PKG_CONFIG_PATH}"
35}
36
37create_sdk_wrapper () {
38 file="$1"
39 shift
40
41 cat <<- EOF > "${file}"
42 #!/bin/sh
43 \$$1 \$@
44 EOF
45
46 chmod +x "$file"
47}
48
49do_install () {
50 SYS_BINDIR=$(dirname ${D}${bindir})
51 install -d "${SYS_BINDIR}"
52 install -m 755 "${B}/target/${CARGO_TARGET_SUBDIR}/cargo" "${SYS_BINDIR}"
53 for i in ${SYS_BINDIR}/*; do
54 chrpath -r "\$ORIGIN/../lib" ${i}
55 done
56
57 # Uses SDK's CC as linker so linked binaries works out of box.
58 create_sdk_wrapper "${SYS_BINDIR}/target-rust-ccld" "CC"
59
60 ENV_SETUP_DIR=${D}${base_prefix}/environment-setup.d
61 mkdir "${ENV_SETUP_DIR}"
62 ENV_SETUP_SH="${ENV_SETUP_DIR}/cargo.sh"
63 cat <<- EOF > "${ENV_SETUP_SH}"
64 export CARGO_HOME="\$OECORE_TARGET_SYSROOT/home/cargo"
65 mkdir -p "\$CARGO_HOME"
66 # Init the default target once, it might be otherwise user modified.
67 if [ ! -f "\$CARGO_HOME/config" ]; then
68 touch "\$CARGO_HOME/config"
69 echo "[build]" >> "\$CARGO_HOME/config"
70 echo 'target = "'${TARGET_SYS}'"' >> "\$CARGO_HOME/config"
71 echo '# TARGET_SYS' >> "\$CARGO_HOME/config"
72 echo '[target.'${TARGET_SYS}']' >> "\$CARGO_HOME/config"
73 echo 'linker = "target-rust-ccld"' >> "\$CARGO_HOME/config"
74 fi
75
76 # Keep the below off as long as HTTP/2 is disabled.
77 export CARGO_HTTP_MULTIPLEXING=false
78
79 export CARGO_HTTP_CAINFO="\$OECORE_NATIVE_SYSROOT/etc/ssl/certs/ca-certificates.crt"
80 EOF
81}
82
83PKG_SYS_BINDIR = "${SDKPATHNATIVE}/usr/bin"
84FILES:${PN} += "${base_prefix}/environment-setup.d ${PKG_SYS_BINDIR}"
85
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 @@
1require recipes-devtools/rust/rust-source.inc
2require recipes-devtools/rust/rust-snapshot.inc
3
4FILESEXTRAPATHS:prepend := "${THISDIR}/cargo-${PV}:"
5
6require 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"
56# so we must use the locally set up snapshot to bootstrap the build. 56# so we must use the locally set up snapshot to bootstrap the build.
57BASEDEPENDS:remove:class-native = "cargo-native" 57BASEDEPENDS:remove:class-native = "cargo-native"
58CARGO:class-native = "${WORKDIR}/${CARGO_SNAPSHOT}/bin/cargo" 58CARGO:class-native = "${WORKDIR}/${CARGO_SNAPSHOT}/bin/cargo"
59
60DEPENDS:append:class-nativesdk = " nativesdk-rust"
61RUSTLIB:append:class-nativesdk = " -L ${STAGING_DIR_HOST}/${SDKPATHNATIVE}/usr/lib/rustlib/${RUST_HOST_SYS}/lib"
62
63
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
2require recipes-devtools/rust/rust-snapshot.inc 2require recipes-devtools/rust/rust-snapshot.inc
3require cargo.inc 3require cargo.inc
4BBCLASSEXTEND = "native nativesdk" 4BBCLASSEXTEND = "native nativesdk"
5RUSTLIB_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 () {
16 rust_runx build --stage 2 16 rust_runx build --stage 2
17} 17}
18 18
19create_sdk_wrapper () {
20 file="$1"
21 shift
22
23 cat <<- EOF > "${file}"
24 #!/bin/sh
25 \$$1 \$@
26 EOF
27
28 chmod +x "$file"
29}
30
19do_install () { 31do_install () {
20 # Rust requires /usr/lib to contain the libs. 32 # Rust requires /usr/lib to contain the libs.
21 # Similar story is with /usr/bin ruquiring `lib` to be at the same level. 33 # Similar story is with /usr/bin ruquiring `lib` to be at the same level.
@@ -51,6 +63,11 @@ do_install () {
51 # Remove executable bit from any files so then SDK doesn't try to relocate. 63 # Remove executable bit from any files so then SDK doesn't try to relocate.
52 chmod -R -x+X ${SRC_DIR} 64 chmod -R -x+X ${SRC_DIR}
53 65
66
67 # Uses SDK's CC as linker so linked binaries works out of box.
68 install -d ${SYS_BINDIR}
69 create_sdk_wrapper "${SYS_BINDIR}/target-rust-ccld" "CC"
70
54 ENV_SETUP_DIR=${D}${base_prefix}/environment-setup.d 71 ENV_SETUP_DIR=${D}${base_prefix}/environment-setup.d
55 mkdir "${ENV_SETUP_DIR}" 72 mkdir "${ENV_SETUP_DIR}"
56 ENV_SETUP_SH="${ENV_SETUP_DIR}/rust.sh" 73 ENV_SETUP_SH="${ENV_SETUP_DIR}/rust.sh"
@@ -61,6 +78,26 @@ do_install () {
61 EOF 78 EOF
62 79
63 chown -R root.root ${D} 80 chown -R root.root ${D}
81
82 ENV_SETUP_SH="${ENV_SETUP_DIR}/cargo.sh"
83 cat <<- EOF > "${ENV_SETUP_SH}"
84 export CARGO_HOME="\$OECORE_TARGET_SYSROOT/home/cargo"
85 mkdir -p "\$CARGO_HOME"
86 # Init the default target once, it might be otherwise user modified.
87 if [ ! -f "\$CARGO_HOME/config" ]; then
88 touch "\$CARGO_HOME/config"
89 echo "[build]" >> "\$CARGO_HOME/config"
90 echo 'target = "'${RUST_TARGET_SYS}'"' >> "\$CARGO_HOME/config"
91 echo '# TARGET_SYS' >> "\$CARGO_HOME/config"
92 echo '[target.'${RUST_TARGET_SYS}']' >> "\$CARGO_HOME/config"
93 echo 'linker = "target-rust-ccld"' >> "\$CARGO_HOME/config"
94 fi
95
96 # Keep the below off as long as HTTP/2 is disabled.
97 export CARGO_HTTP_MULTIPLEXING=false
98
99 export CARGO_HTTP_CAINFO="\$OECORE_NATIVE_SYSROOT/etc/ssl/certs/ca-certificates.crt"
100 EOF
64} 101}
65 102
66PKG_SYS_LIBDIR = "${SDKPATHNATIVE}/usr/lib" 103PKG_SYS_LIBDIR = "${SDKPATHNATIVE}/usr/lib"