* [PATCH v3] sanity.bbclass: warn on cargo config files outside the build tree
@ 2026-06-30 6:29 Hemanth.KumarMD
0 siblings, 0 replies; only message in thread
From: Hemanth.KumarMD @ 2026-06-30 6:29 UTC (permalink / raw)
To: openembedded-core; +Cc: Sundeep.Kokkonda, Hemanth.KumarMD
From: Hemanth Kumar M D <Hemanth.KumarMD@windriver.com>
Cargo walks from CWD up to the filesystem root merging every
.cargo/config[.toml] it finds. Any such file above BASE_WORKDIR
is silently picked up and can override Yocto's linker, registry
or compiler settings, leading to build failures.
Until cargo provides a proper fix upstream, add a warning so users
get a clear diagnostic instead of a build error.
Upstream meta-issue: https://github.com/rust-lang/cargo/issues/9769
[YOCTO #15637]
Signed-off-by: Hemanth Kumar M D <Hemanth.KumarMD@windriver.com>
---
meta/classes-global/sanity.bbclass | 25 +++++++++++++++++++++++++
1 file changed, 25 insertions(+)
diff --git a/meta/classes-global/sanity.bbclass b/meta/classes-global/sanity.bbclass
index bdfa7f059d..85e262d383 100644
--- a/meta/classes-global/sanity.bbclass
+++ b/meta/classes-global/sanity.bbclass
@@ -854,6 +854,30 @@ def sanity_check_locale(d):
except locale.Error:
raise_sanity_error("Your system needs to support the en_US.UTF-8 locale.", d)
+def check_cargo_config(d):
+ # Cargo merges .cargo/config[.toml] from every directory between CWD and
+ # the filesystem root. Warn for anything found in ancestor directories
+ # above BASE_WORKDIR that Cargo would pick up silently.
+ from pathlib import Path
+
+ base_workdir = Path(d.getVar('BASE_WORKDIR'))
+ found = []
+ for ancestor in base_workdir.parents:
+ for name in ('.cargo/config', '.cargo/config.toml'):
+ cfg = ancestor / name
+ if cfg.exists():
+ found.append(str(cfg))
+ break
+ if found:
+ bb.warn("Cargo config file(s) found at %s which is/are outside the build "
+ "directory. Cargo will silently apply their settings during the "
+ "rust/cargo build and can override Yocto's settings like linker, "
+ "registry or compiler settings causing build failures. You can "
+ "either remove these file(s) or move your build directory outside "
+ "of %s to fix this. "
+ "See https://bugzilla.yoctoproject.org/show_bug.cgi?id=15637 for more details."
+ % (', '.join(found), Path(found[-1]).parents[1]))
+
def check_sanity_everybuild(status, d):
import os, stat
# Sanity tests which test the users environment so need to run at each build (or are so cheap
@@ -873,6 +897,7 @@ def check_sanity_everybuild(status, d):
status.addresult('Bitbake version %s is required and version %s was found\n' % (minversion, bb.__version__))
sanity_check_locale(d)
+ check_cargo_config(d)
paths = d.getVar('PATH').split(":")
if "." in paths or "./" in paths or "" in paths:
--
2.49.0
^ permalink raw reply related [flat|nested] only message in thread
only message in thread, other threads:[~2026-06-30 6:32 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-06-30 6:29 [PATCH v3] sanity.bbclass: warn on cargo config files outside the build tree Hemanth.KumarMD
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.