summaryrefslogtreecommitdiffstats
path: root/meta/recipes-devtools/rust/rust_1.70.0.bb
diff options
context:
space:
mode:
authorYash Shinde <Yash.Shinde@windriver.com>2023-07-11 14:33:46 +0400
committerRichard Purdie <richard.purdie@linuxfoundation.org>2023-07-19 18:00:32 +0100
commita1096d4a57942e1b57bdd0884b363a028ac479d5 (patch)
tree224254e6bd4b3dda5b63f6ff09ad504d8201975e /meta/recipes-devtools/rust/rust_1.70.0.bb
parentd101e64b1c2be0e16769e7d3b856e4a85cbaaf68 (diff)
downloadpoky-a1096d4a57942e1b57bdd0884b363a028ac479d5.tar.gz
oeqa/selftest: Add rust selftests
The patch implements Rust testing framework similar to other selftest, specifically the gcc selftest in OE. It uses the client and server based method to test the binaries for cross-target on the image. The test framework is a wrapper around the Rust build system as ./x.py test. It tests many functionalities of Rust distribution like tools, documentation, libraries, packages, tools, Cargo, Crater etc. Please refer the following link for detailed description of Rust testing:- https://rustc-dev-guide.rust-lang.org/tests/intro.html#tool-tests To support the rust tests in oe-core, the following functions were added:- setup_cargo_environment(): Build bootstrap and some early stage tools. do_rust_setup_snapshot(): Install the snapshot version of rust binaries. do_configure(): To generate config.toml do_compile(): To build "remote-test-server" for qemu target image. Approximate Number of Tests Run in the Rust Testsuite :- 18000 Approximate Number of Tests that FAIL in bitbake environment :- 100-150 Normally majority of the testcases are present in major folder "test/" It contributes to more than 80% of the testcases present in Rust test framework. These tests pass as expected on any Rust versions without much fuss. The tests that fail are of less important and contribute to less than 2% of the total testcases. These minor tests are observed to work on some versions and fail on others. They have to be added, ignored or excluded for different versions as per the behavior. These tests have been ignored or excluded in the Rust selftest environment to generate success of completing the testsuite. These tests work in parallel mode even in the skipped test mode as expected. Although the patch to disable tests is large, it is very simple in that it only disables tests. When updating to a newer version of Rust, the patch can usually be ported in a day. Tested for X86, X86-64, ARM, ARM64 and MIPS64 on Ubuntu 22.04. (From OE-Core rev: 7c3346d8fbe85302b605bb3f772b029ea7bfaa6c) Signed-off-by: pgowda <pgowda.cve@gmail.com> Signed-off-by: Vinay Kumar <vinay.m.engg@gmail.com> Signed-off-by: Yash Shinde <yashinde145@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/recipes-devtools/rust/rust_1.70.0.bb')
-rw-r--r--meta/recipes-devtools/rust/rust_1.70.0.bb6
1 files changed, 6 insertions, 0 deletions
diff --git a/meta/recipes-devtools/rust/rust_1.70.0.bb b/meta/recipes-devtools/rust/rust_1.70.0.bb
index 8669291d08..3b9c05a19f 100644
--- a/meta/recipes-devtools/rust/rust_1.70.0.bb
+++ b/meta/recipes-devtools/rust/rust_1.70.0.bb
@@ -66,6 +66,7 @@ do_rust_setup_snapshot () {
66 fi 66 fi
67} 67}
68addtask rust_setup_snapshot after do_unpack before do_configure 68addtask rust_setup_snapshot after do_unpack before do_configure
69addtask do_test_compile after do_configure do_rust_gen_targets
69do_rust_setup_snapshot[dirs] += "${WORKDIR}/rust-snapshot" 70do_rust_setup_snapshot[dirs] += "${WORKDIR}/rust-snapshot"
70do_rust_setup_snapshot[vardepsexclude] += "UNINATIVE_LOADER" 71do_rust_setup_snapshot[vardepsexclude] += "UNINATIVE_LOADER"
71 72
@@ -223,6 +224,11 @@ FILES:${PN}-dev = ""
223do_compile () { 224do_compile () {
224} 225}
225 226
227do_test_compile[dirs] = "${B}"
228do_test_compile () {
229 rust_runx build src/tools/remote-test-server --target "${RUST_TARGET_SYS}"
230}
231
226ALLOW_EMPTY:${PN} = "1" 232ALLOW_EMPTY:${PN} = "1"
227 233
228PACKAGES =+ "${PN}-tools-clippy ${PN}-tools-rustfmt" 234PACKAGES =+ "${PN}-tools-clippy ${PN}-tools-rustfmt"