From: Alexander Kanavin Date: Tue, 1 Nov 2022 09:17:09 +0000 (+0100) Subject: rust-common.bbclass: use built-in rust targets for -native builds X-Git-Tag: lucaceresoli/bug-15201-perf-libtraceevent-missing~2661 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a918ea5645d8a67cedaf3ecf6c382520bbcad85b;p=thirdparty%2Fopenembedded%2Fopenembedded-core-contrib.git rust-common.bbclass: use built-in rust targets for -native builds Rust targets have the form of 'arch-unknown-linux-gnu' while oe's native targets are 'arch-linux-gnu', e.g. omit the vendor. The effect this has on rust-native builds is that rust first builds itself as stage0 for arch-unknown-linux-gnu, then builds itself again for arch-unknown-linux-gnu, then finally uses the compiler from second step to 'cross-compile' a compiler for 'arch-linux-gnu'. This last step is really not necessary, and we could save 4 minutes out of 12 if it is eliminated. Which is what this patch does by setting the target directly to 'arch-unknown-linux-gnu'; rust's build system then shortcuts the build process after the second step. Given a working rust-native will be needed as early as possible in a typical yocto build (e.g. when in a not too distant future making a useful kernel will not be possible without rust), producing it faster is important. Signed-off-by: Alexander Kanavin Signed-off-by: Richard Purdie --- diff --git a/meta/classes-recipe/rust-common.bbclass b/meta/classes-recipe/rust-common.bbclass index 93bf6c8be64..3338de75025 100644 --- a/meta/classes-recipe/rust-common.bbclass +++ b/meta/classes-recipe/rust-common.bbclass @@ -53,12 +53,9 @@ def rust_base_triple(d, thing): else: arch = oe.rust.arch_to_rust_arch(d.getVar('{}_ARCH'.format(thing))) - # When bootstrapping rust-native, BUILD must be the same as upstream snapshot tarballs - bpn = d.getVar('BPN') - if thing == "BUILD" and bpn in ["rust"]: - return arch + "-unknown-linux-gnu" - - vendor = d.getVar('{}_VENDOR'.format(thing)) + # Substituting "unknown" when vendor is empty will match rust's standard + # targets when building native recipes (including rust-native itself) + vendor = d.getVar('{}_VENDOR'.format(thing)) or "-unknown" # Default to glibc libc = "-gnu"