]> git.ipfire.org Git - thirdparty/openembedded/openembedded-core.git/commit
rust-target-config: fix nativesdk-libstd-rs build with baremetal
authorOvidiu Panait <ovidiu.panait@windriver.com>
Mon, 10 Nov 2025 22:27:10 +0000 (00:27 +0200)
committerSteve Sakoman <steve@sakoman.com>
Wed, 19 Nov 2025 16:11:20 +0000 (08:11 -0800)
commit4c3f321304f2aa8b75cb58699b59fea80a23690c
tree2dbab2f18c514df1e2b97096edd3a8d90318b797
parentbbdd7d54b070f62f13967df8a13f5f14f2c36120
rust-target-config: fix nativesdk-libstd-rs build with baremetal

If TCLIBC='baremetal' is set in local.conf, nativesdk-libstd-rs build fails
with:

| error[E0412]: cannot find type `c_char` in the crate root
|   --> /usr/src/debug/libstd-rs/1.75.0/rustc-1.75.0-src/vendor/libc/src/unix/mod.rs:56:29
|    |
| 6  | pub type c_schar = i8;
|    | ---------------------- similarly named type alias `c_schar` defined here
| ...
| 56 |         pub gr_name: *mut ::c_char,
|    |                             ^^^^^^

This happens because rust_gen_target() sets os="none" when TCLIBC is
'baremetal' - even for nativesdk targets. However, nativesdk packages are
built against glibc, so the correct 'os' value should be "linux".

Fix this by setting the os field based on {TARGET,HOST,BUILD}_OS variables,
as it is already done in rust_base_triple(), instead of relying on TCLIBC.

Signed-off-by: Ovidiu Panait <ovidiu.panait@windriver.com>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(master rev: 3eaf2cd5647585a1e6df03fc20e2753da27bb692) -- backport
Signed-off-by: Stefan Ghinea <stefan.ghinea@windriver.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
meta/classes-recipe/rust-target-config.bbclass