Message ID | 20221217012158.923251-1-alejandro@enedino.org |
---|---|
State | Accepted, archived |
Commit | 807a52686682d0d0a151ea3dadd99880feb67cc0 |
Headers | show |
Series | [v2] rust: Enable building rust from stable, beta and nightly channels | expand |
On Fri, 2022-12-16 at 18:21 -0700, Alejandro Hernandez Samaniego wrote: > From: Alejandro Hernandez Samaniego <alejandro@enedino.org> > > 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 > > Signed-off-by: Alejandro Hernandez Samaniego <alejandro@enedino.org> > --- > meta/recipes-devtools/rust/rust-snapshot.inc | 7 ++++--- > meta/recipes-devtools/rust/rust-source.inc | 5 +++-- > meta/recipes-devtools/rust/rust.inc | 6 +++++- > 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 @@ > ## The version is replicated here. > ## TODO: find a way to add additional SRC_URIs based on the contents of an > ## earlier SRC_URI. > -RS_VERSION = "1.65.0" > + > +SNAPSHOT_VERSION = "1.65.0" > CARGO_VERSION = "1.65.0" > > # TODO: Add hashes for other architecture toolchains as well. Make a script? > @@ -27,6 +28,6 @@ SRC_URI += " \ > https://static.rust-lang.org/dist/${CARGO_SNAPSHOT}.tar.xz;name=cargo-snapshot-${RUST_BUILD_ARCH};subdir=rust-snapshot-components \ > " > > -RUST_STD_SNAPSHOT = "rust-std-${RS_VERSION}-${RUST_BUILD_ARCH}-unknown-linux-gnu" > -RUSTC_SNAPSHOT = "rustc-${RS_VERSION}-${RUST_BUILD_ARCH}-unknown-linux-gnu" > +RUST_STD_SNAPSHOT = "rust-std-${SNAPSHOT_VERSION}-${RUST_BUILD_ARCH}-unknown-linux-gnu" > +RUSTC_SNAPSHOT = "rustc-${SNAPSHOT_VERSION}-${RUST_BUILD_ARCH}-unknown-linux-gnu" > CARGO_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 @@ > -SRC_URI += "https://static.rust-lang.org/dist/rustc-${PV}-src.tar.xz;name=rust" > +RUST_VERSION ?= "${@d.getVar('PV').split('-')[0]}" > +SRC_URI += "https://static.rust-lang.org/dist/rustc-${RUST_VERSION}-src.tar.xz;name=rust" > SRC_URI[rust.sha256sum] = "0dc176e34fae9871f855a6ba4cb30fa19d69c5b4428d29281a07419c4950715c" > > SRC_URI:append:class-target:pn-rust = " \ > @@ -6,7 +7,7 @@ SRC_URI:append:class-target:pn-rust = " \ > file://crossbeam_atomic.patch" > SRC_URI:append:class-nativesdk:pn-nativesdk-rust = " file://hardcodepaths.patch" > > -RUSTSRC = "${WORKDIR}/rustc-${PV}-src" > +RUSTSRC = "${WORKDIR}/rustc-${RUST_VERSION}-src" > > UPSTREAM_CHECK_URI = "https://forge.rust-lang.org/infra/other-installation-methods.html" > UPSTREAM_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..37a04e1204 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" > > S = "${RUSTSRC}" > > +# Use at your own risk, accepted values are stable, beta and nightly > +RUST_CHANNEL ?= "stable" > +PV:append = "${@bb.utils.contains('RUST_CHANNEL', 'stable', '', '-${RUST_CHANNEL}', d)}" > + > export FORCE_CRATE_HASH="${BB_TASKHASH}" Did you try it with .= instead of append? I'd really prefer not to use append unless we have to, mainly so we lead by example... Cheers, Richard
On Sat, Dec 17, 2022, 2:56 AM Richard Purdie < richard.purdie@linuxfoundation.org> wrote: > On Fri, 2022-12-16 at 18:21 -0700, Alejandro Hernandez Samaniego wrote: > > From: Alejandro Hernandez Samaniego <alejandro@enedino.org> > > > > 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 > > > > Signed-off-by: Alejandro Hernandez Samaniego <alejandro@enedino.org> > > --- > > meta/recipes-devtools/rust/rust-snapshot.inc | 7 ++++--- > > meta/recipes-devtools/rust/rust-source.inc | 5 +++-- > > meta/recipes-devtools/rust/rust.inc | 6 +++++- > > 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 @@ > > ## The version is replicated here. > > ## TODO: find a way to add additional SRC_URIs based on the contents of > an > > ## earlier SRC_URI. > > -RS_VERSION = "1.65.0" > > + > > +SNAPSHOT_VERSION = "1.65.0" > > CARGO_VERSION = "1.65.0" > > > > # TODO: Add hashes for other architecture toolchains as well. Make a > script? > > @@ -27,6 +28,6 @@ SRC_URI += " \ > > > https://static.rust-lang.org/dist/${CARGO_SNAPSHOT}.tar.xz;name=cargo-snapshot-${RUST_BUILD_ARCH};subdir=rust-snapshot-components > \ > > " > > > > -RUST_STD_SNAPSHOT = > "rust-std-${RS_VERSION}-${RUST_BUILD_ARCH}-unknown-linux-gnu" > > -RUSTC_SNAPSHOT = > "rustc-${RS_VERSION}-${RUST_BUILD_ARCH}-unknown-linux-gnu" > > +RUST_STD_SNAPSHOT = > "rust-std-${SNAPSHOT_VERSION}-${RUST_BUILD_ARCH}-unknown-linux-gnu" > > +RUSTC_SNAPSHOT = > "rustc-${SNAPSHOT_VERSION}-${RUST_BUILD_ARCH}-unknown-linux-gnu" > > CARGO_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 @@ > > -SRC_URI += " > https://static.rust-lang.org/dist/rustc-${PV}-src.tar.xz;name=rust" > > +RUST_VERSION ?= "${@d.getVar('PV').split('-')[0]}" > > +SRC_URI += " > https://static.rust-lang.org/dist/rustc-${RUST_VERSION}-src.tar.xz;name=rust > " > > SRC_URI[rust.sha256sum] = > "0dc176e34fae9871f855a6ba4cb30fa19d69c5b4428d29281a07419c4950715c" > > > > SRC_URI:append:class-target:pn-rust = " \ > > @@ -6,7 +7,7 @@ SRC_URI:append:class-target:pn-rust = " \ > > file://crossbeam_atomic.patch" > > SRC_URI:append:class-nativesdk:pn-nativesdk-rust = " > file://hardcodepaths.patch" > > > > -RUSTSRC = "${WORKDIR}/rustc-${PV}-src" > > +RUSTSRC = "${WORKDIR}/rustc-${RUST_VERSION}-src" > > > > UPSTREAM_CHECK_URI = " > https://forge.rust-lang.org/infra/other-installation-methods.html" > > UPSTREAM_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..37a04e1204 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" > > > > S = "${RUSTSRC}" > > > > +# Use at your own risk, accepted values are stable, beta and nightly > > +RUST_CHANNEL ?= "stable" > > +PV:append = "${@bb.utils.contains('RUST_CHANNEL', 'stable', '', > '-${RUST_CHANNEL}', d)}" > > + > > export FORCE_CRATE_HASH="${BB_TASKHASH}" > > Did you try it with .= instead of append? I'd really prefer not to use > append unless we have to, mainly so we lead by example... > > Cheers, > > Richard You are right, I should've done this with .= instead, my mistake, I will test it and send a v3. Cheers, Alejandro > > > > >
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 @@ ## The version is replicated here. ## TODO: find a way to add additional SRC_URIs based on the contents of an ## earlier SRC_URI. -RS_VERSION = "1.65.0" + +SNAPSHOT_VERSION = "1.65.0" CARGO_VERSION = "1.65.0" # TODO: Add hashes for other architecture toolchains as well. Make a script? @@ -27,6 +28,6 @@ SRC_URI += " \ https://static.rust-lang.org/dist/${CARGO_SNAPSHOT}.tar.xz;name=cargo-snapshot-${RUST_BUILD_ARCH};subdir=rust-snapshot-components \ " -RUST_STD_SNAPSHOT = "rust-std-${RS_VERSION}-${RUST_BUILD_ARCH}-unknown-linux-gnu" -RUSTC_SNAPSHOT = "rustc-${RS_VERSION}-${RUST_BUILD_ARCH}-unknown-linux-gnu" +RUST_STD_SNAPSHOT = "rust-std-${SNAPSHOT_VERSION}-${RUST_BUILD_ARCH}-unknown-linux-gnu" +RUSTC_SNAPSHOT = "rustc-${SNAPSHOT_VERSION}-${RUST_BUILD_ARCH}-unknown-linux-gnu" CARGO_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 @@ -SRC_URI += "https://static.rust-lang.org/dist/rustc-${PV}-src.tar.xz;name=rust" +RUST_VERSION ?= "${@d.getVar('PV').split('-')[0]}" +SRC_URI += "https://static.rust-lang.org/dist/rustc-${RUST_VERSION}-src.tar.xz;name=rust" SRC_URI[rust.sha256sum] = "0dc176e34fae9871f855a6ba4cb30fa19d69c5b4428d29281a07419c4950715c" SRC_URI:append:class-target:pn-rust = " \ @@ -6,7 +7,7 @@ SRC_URI:append:class-target:pn-rust = " \ file://crossbeam_atomic.patch" SRC_URI:append:class-nativesdk:pn-nativesdk-rust = " file://hardcodepaths.patch" -RUSTSRC = "${WORKDIR}/rustc-${PV}-src" +RUSTSRC = "${WORKDIR}/rustc-${RUST_VERSION}-src" UPSTREAM_CHECK_URI = "https://forge.rust-lang.org/infra/other-installation-methods.html" UPSTREAM_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..37a04e1204 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" S = "${RUSTSRC}" +# Use at your own risk, accepted values are stable, beta and nightly +RUST_CHANNEL ?= "stable" +PV:append = "${@bb.utils.contains('RUST_CHANNEL', 'stable', '', '-${RUST_CHANNEL}', d)}" + export FORCE_CRATE_HASH="${BB_TASKHASH}" RUST_ALTERNATE_EXE_PATH ?= "${STAGING_LIBDIR}/llvm-rust/bin/llvm-config" @@ -116,7 +120,7 @@ python do_configure() { # [rust] config.add_section("rust") config.set("rust", "rpath", e(True)) - config.set("rust", "channel", e("stable")) + config.set("rust", "channel", e(d.expand("${RUST_CHANNEL}"))) # Whether or not to optimize the compiler and standard library config.set("rust", "optimize", e(True))