summaryrefslogtreecommitdiffstats
path: root/meta/recipes-devtools/rust
diff options
context:
space:
mode:
authorAlexander Kanavin <alex@linutronix.de>2024-05-21 14:50:39 +0200
committerRichard Purdie <richard.purdie@linuxfoundation.org>2024-05-28 15:09:01 +0100
commita7bf118441d81d47a8a2eb53a73b265d84c80d92 (patch)
tree71a9d7ad7575dce587287f55548516ecf1a934ad /meta/recipes-devtools/rust
parentd419566eda490870a51fff5b94834d0564718e10 (diff)
downloadpoky-a7bf118441d81d47a8a2eb53a73b265d84c80d92.tar.gz
rust: use rust-snapshot binaries only in rust-native
Otherwise, use rust-native and cargo-native binaries as that allows our native tweaks in them to be used for target/nativesdk rust - same as for everything else written in rust. In particular, this allows building target rust with cargo-native that includes important reproducibility tweaks. Unfortunately, this also breaks rust selftest, and that is partially addressed by the following commit. [YOCTO #15185] (From OE-Core rev: 8f2230cb51fe22ef4711a56fecfab4858c04e35b) Signed-off-by: Alexander Kanavin <alex@linutronix.de> Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/recipes-devtools/rust')
-rw-r--r--meta/recipes-devtools/rust/rust_1.75.0.bb14
1 files changed, 12 insertions, 2 deletions
diff --git a/meta/recipes-devtools/rust/rust_1.75.0.bb b/meta/recipes-devtools/rust/rust_1.75.0.bb
index c1b0a35e7b..d5bc057a45 100644
--- a/meta/recipes-devtools/rust/rust_1.75.0.bb
+++ b/meta/recipes-devtools/rust/rust_1.75.0.bb
@@ -11,6 +11,11 @@ DEPENDS += "file-native python3-native"
11DEPENDS:append:class-native = " rust-llvm-native" 11DEPENDS:append:class-native = " rust-llvm-native"
12DEPENDS:append:class-nativesdk = " nativesdk-rust-llvm" 12DEPENDS:append:class-nativesdk = " nativesdk-rust-llvm"
13 13
14# native rust uses cargo/rustc from binary snapshots to bootstrap
15# but everything else should use our native builds
16DEPENDS:append:class-target = " cargo-native rust-native"
17DEPENDS:append:class-nativesdk = " cargo-native rust-native"
18
14DEPENDS += "rust-llvm (=${PV})" 19DEPENDS += "rust-llvm (=${PV})"
15 20
16RDEPENDS:${PN}:append:class-target = " gcc g++ binutils" 21RDEPENDS:${PN}:append:class-target = " gcc g++ binutils"
@@ -68,6 +73,11 @@ addtask do_test_compile after do_configure do_rust_gen_targets
68do_rust_setup_snapshot[dirs] += "${WORKDIR}/rust-snapshot" 73do_rust_setup_snapshot[dirs] += "${WORKDIR}/rust-snapshot"
69do_rust_setup_snapshot[vardepsexclude] += "UNINATIVE_LOADER" 74do_rust_setup_snapshot[vardepsexclude] += "UNINATIVE_LOADER"
70 75
76RUSTC_BOOTSTRAP = "${STAGING_BINDIR_NATIVE}/rustc"
77CARGO_BOOTSTRAP = "${STAGING_BINDIR_NATIVE}/cargo"
78RUSTC_BOOTSTRAP:class-native = "${WORKDIR}/rust-snapshot/bin/rustc"
79CARGO_BOOTSTRAP:class-native = "${WORKDIR}/rust-snapshot/bin/cargo"
80
71python do_configure() { 81python do_configure() {
72 import json 82 import json
73 import configparser 83 import configparser
@@ -141,10 +151,10 @@ python do_configure() {
141 config.set("build", "docs", e(False)) 151 config.set("build", "docs", e(False))
142 config.set("build", "tools", ["rust-demangler",]) 152 config.set("build", "tools", ["rust-demangler",])
143 153
144 rustc = d.expand("${WORKDIR}/rust-snapshot/bin/rustc") 154 rustc = d.getVar('RUSTC_BOOTSTRAP')
145 config.set("build", "rustc", e(rustc)) 155 config.set("build", "rustc", e(rustc))
146 156
147 cargo = d.expand("${WORKDIR}/rust-snapshot/bin/cargo") 157 cargo = d.getVar('CARGO_BOOTSTRAP')
148 config.set("build", "cargo", e(cargo)) 158 config.set("build", "cargo", e(cargo))
149 159
150 config.set("build", "vendor", e(True)) 160 config.set("build", "vendor", e(True))