summaryrefslogtreecommitdiffstats
path: root/meta/recipes-devtools
diff options
context:
space:
mode:
authorAlejandro Hernandez Samaniego <alejandro@enedino.org>2022-12-17 09:20:57 -0700
committerRichard Purdie <richard.purdie@linuxfoundation.org>2022-12-21 10:16:31 +0000
commitcb33d63060eee74823482de07c1c50a4933ab8f1 (patch)
tree8222c83e29972a9c5ecf2166e72f9143964a2365 /meta/recipes-devtools
parent0d1023673b356c430a2370507cea973e7c8efa47 (diff)
downloadpoky-cb33d63060eee74823482de07c1c50a4933ab8f1.tar.gz
rust: Enable building rust from stable, beta and nightly channels
Rust follows the train release model via the stable, beta and nightly channels, by default we build rust from the stable channel, however there are certain features which are only available in the beta or nightly channels. Make these channels available by setting a RUST_CHANNEL variable which defaults to stable making this change transparent to the user. The snapshot version used by rust during its compilation wont necessarily match the version being built, specially if were building from an unstable channel, to avoid confusion rename this to SNAPSHOT_VERSION and use RUST_VERSION for the version to be built, which is automatically defined to PV. Append -beta or -nightly to rusts PV for signature awareness. It is important to note that this does not build rust from the beta/nightly published tarball (which today build rust v1.67.0 and v1.68.0 respectively), instead this builds rust from the current selected version (1.66.0) and enables the beta/nightly features for that version. Setting the variable RUST_CHANNEL=nightly results in the following: $ rustc -Vv rustc 1.66.0-nightly (From OE-Core rev: 807a52686682d0d0a151ea3dadd99880feb67cc0) Signed-off-by: Alejandro Hernandez Samaniego <alejandro@enedino.org> Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/recipes-devtools')
-rw-r--r--meta/recipes-devtools/rust/rust-snapshot.inc7
-rw-r--r--meta/recipes-devtools/rust/rust-source.inc5
-rw-r--r--meta/recipes-devtools/rust/rust.inc6
3 files changed, 12 insertions, 6 deletions
diff --git a/meta/recipes-devtools/rust/rust-snapshot.inc b/meta/recipes-devtools/rust/rust-snapshot.inc
index 222f34f9a8..6420bcff55 100644
--- a/meta/recipes-devtools/rust/rust-snapshot.inc
+++ b/meta/recipes-devtools/rust/rust-snapshot.inc
@@ -5,7 +5,8 @@
5## The version is replicated here. 5## The version is replicated here.
6## TODO: find a way to add additional SRC_URIs based on the contents of an 6## TODO: find a way to add additional SRC_URIs based on the contents of an
7## earlier SRC_URI. 7## earlier SRC_URI.
8RS_VERSION = "1.65.0" 8
9SNAPSHOT_VERSION = "1.65.0"
9CARGO_VERSION = "1.65.0" 10CARGO_VERSION = "1.65.0"
10 11
11# TODO: Add hashes for other architecture toolchains as well. Make a script? 12# TODO: Add hashes for other architecture toolchains as well. Make a script?
@@ -27,6 +28,6 @@ SRC_URI += " \
27 https://static.rust-lang.org/dist/${CARGO_SNAPSHOT}.tar.xz;name=cargo-snapshot-${RUST_BUILD_ARCH};subdir=rust-snapshot-components \ 28 https://static.rust-lang.org/dist/${CARGO_SNAPSHOT}.tar.xz;name=cargo-snapshot-${RUST_BUILD_ARCH};subdir=rust-snapshot-components \
28" 29"
29 30
30RUST_STD_SNAPSHOT = "rust-std-${RS_VERSION}-${RUST_BUILD_ARCH}-unknown-linux-gnu" 31RUST_STD_SNAPSHOT = "rust-std-${SNAPSHOT_VERSION}-${RUST_BUILD_ARCH}-unknown-linux-gnu"
31RUSTC_SNAPSHOT = "rustc-${RS_VERSION}-${RUST_BUILD_ARCH}-unknown-linux-gnu" 32RUSTC_SNAPSHOT = "rustc-${SNAPSHOT_VERSION}-${RUST_BUILD_ARCH}-unknown-linux-gnu"
32CARGO_SNAPSHOT = "cargo-${CARGO_VERSION}-${RUST_BUILD_ARCH}-unknown-linux-gnu" 33CARGO_SNAPSHOT = "cargo-${CARGO_VERSION}-${RUST_BUILD_ARCH}-unknown-linux-gnu"
diff --git a/meta/recipes-devtools/rust/rust-source.inc b/meta/recipes-devtools/rust/rust-source.inc
index 1c511917e2..91a6c5a942 100644
--- a/meta/recipes-devtools/rust/rust-source.inc
+++ b/meta/recipes-devtools/rust/rust-source.inc
@@ -1,4 +1,5 @@
1SRC_URI += "https://static.rust-lang.org/dist/rustc-${PV}-src.tar.xz;name=rust" 1RUST_VERSION ?= "${@d.getVar('PV').split('-')[0]}"
2SRC_URI += "https://static.rust-lang.org/dist/rustc-${RUST_VERSION}-src.tar.xz;name=rust"
2SRC_URI[rust.sha256sum] = "0dc176e34fae9871f855a6ba4cb30fa19d69c5b4428d29281a07419c4950715c" 3SRC_URI[rust.sha256sum] = "0dc176e34fae9871f855a6ba4cb30fa19d69c5b4428d29281a07419c4950715c"
3 4
4SRC_URI:append:class-target:pn-rust = " \ 5SRC_URI:append:class-target:pn-rust = " \
@@ -6,7 +7,7 @@ SRC_URI:append:class-target:pn-rust = " \
6 file://crossbeam_atomic.patch" 7 file://crossbeam_atomic.patch"
7SRC_URI:append:class-nativesdk:pn-nativesdk-rust = " file://hardcodepaths.patch" 8SRC_URI:append:class-nativesdk:pn-nativesdk-rust = " file://hardcodepaths.patch"
8 9
9RUSTSRC = "${WORKDIR}/rustc-${PV}-src" 10RUSTSRC = "${WORKDIR}/rustc-${RUST_VERSION}-src"
10 11
11UPSTREAM_CHECK_URI = "https://forge.rust-lang.org/infra/other-installation-methods.html" 12UPSTREAM_CHECK_URI = "https://forge.rust-lang.org/infra/other-installation-methods.html"
12UPSTREAM_CHECK_REGEX = "rustc-(?P<pver>\d+(\.\d+)+)-src" 13UPSTREAM_CHECK_REGEX = "rustc-(?P<pver>\d+(\.\d+)+)-src"
diff --git a/meta/recipes-devtools/rust/rust.inc b/meta/recipes-devtools/rust/rust.inc
index 8d25e7993a..f58aa46444 100644
--- a/meta/recipes-devtools/rust/rust.inc
+++ b/meta/recipes-devtools/rust/rust.inc
@@ -13,6 +13,10 @@ DEPENDS:append:class-nativesdk = " nativesdk-rust-llvm"
13 13
14S = "${RUSTSRC}" 14S = "${RUSTSRC}"
15 15
16# Use at your own risk, accepted values are stable, beta and nightly
17RUST_CHANNEL ?= "stable"
18PV .= "${@bb.utils.contains('RUST_CHANNEL', 'stable', '', '-${RUST_CHANNEL}', d)}"
19
16export FORCE_CRATE_HASH="${BB_TASKHASH}" 20export FORCE_CRATE_HASH="${BB_TASKHASH}"
17 21
18RUST_ALTERNATE_EXE_PATH ?= "${STAGING_LIBDIR}/llvm-rust/bin/llvm-config" 22RUST_ALTERNATE_EXE_PATH ?= "${STAGING_LIBDIR}/llvm-rust/bin/llvm-config"
@@ -116,7 +120,7 @@ python do_configure() {
116 # [rust] 120 # [rust]
117 config.add_section("rust") 121 config.add_section("rust")
118 config.set("rust", "rpath", e(True)) 122 config.set("rust", "rpath", e(True))
119 config.set("rust", "channel", e("stable")) 123 config.set("rust", "channel", e(d.expand("${RUST_CHANNEL}")))
120 124
121 # Whether or not to optimize the compiler and standard library 125 # Whether or not to optimize the compiler and standard library
122 config.set("rust", "optimize", e(True)) 126 config.set("rust", "optimize", e(True))