All of lore.kernel.org
 help / color / mirror / Atom feed
* [bitbake-devel][PATCH V2] lib/bb/parse/ast.py: error out for internal fragment in case of a previous value
@ 2025-11-14  6:02 Qi.Chen
  2025-11-14  6:15 ` Alexander Kanavin
                   ` (2 more replies)
  0 siblings, 3 replies; 12+ messages in thread
From: Qi.Chen @ 2025-11-14  6:02 UTC (permalink / raw)
  To: bitbake-devel; +Cc: alex.kanavin, richard.purdie, qi.chen

From: Chen Qi <Qi.Chen@windriver.com>

When an internal fragment is enabled, and there's already a value
for the corresponding variable, we should error out to avoid any
confusion.

For example, when 'machine/qemux86-64' fragement is enabled, and
we get some "MACHINE = xxx" in local.conf or env, we should error
out and recomment users to use 'bitbake-config-build disable-fragment'.

We should be tolerating weak assignments. For example, DISTRO defaults
to "nodistro", and when 'distro/poky" fragment is enabled, there should
be no confusion.

The implementation hacks the environment variable as a way to tell
bitbake that we're using 'bitbake-config-build'. Because we recommend
users to use bitbake-config-build, then it should not error out.

Fixes [YOCTO #16060]

Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
---
 bin/bitbake-layers  | 3 +++
 lib/bb/parse/ast.py | 7 +++++++
 2 files changed, 10 insertions(+)

diff --git a/bin/bitbake-layers b/bin/bitbake-layers
index 341ecbcd9..c4569c6c3 100755
--- a/bin/bitbake-layers
+++ b/bin/bitbake-layers
@@ -64,6 +64,9 @@ def main():
         if global_args.force > 1:
             bbpaths = []
         else:
+            if toolname == "bitbake-config-build":
+                os.environ["BB_ENV_PASSTHROUGH_ADDITIONS"] = os.getenv("BB_ENV_PASSTHROUGH_ADDITIONS") + " _BB_INTERNAL_RUN_BITBAKE_CONFIG_BUILD_"
+                os.environ["_BB_INTERNAL_RUN_BITBAKE_CONFIG_BUILD_"] = "1"
             tinfoil.prepare(True)
             bbpaths = tinfoil.config_data.getVar('BBPATH').split(':')
 
diff --git a/lib/bb/parse/ast.py b/lib/bb/parse/ast.py
index e6ff1ff76..70a2a37a6 100644
--- a/lib/bb/parse/ast.py
+++ b/lib/bb/parse/ast.py
@@ -364,6 +364,13 @@ class AddFragmentsNode(AstNode):
         def check_and_set_builtin_fragment(fragment, data, builtin_fragments):
             prefix, value = fragment.split('/', 1)
             if prefix in builtin_fragments.keys():
+                if data.getVar(builtin_fragments[prefix], noweakdefault=True) != None:
+                    if not os.getenv("_BB_INTERNAL_RUN_BITBAKE_CONFIG_BUILD_"):
+                        bb.fatal(
+                            ("A builtin fragment '%s' is used while %s has already got an assignment.\n"
+                             "Please either disable the fragment or remove the value assignment.\n"
+                             "To disable the fragment, use 'bitbake-config-build disable-fragment %s'."
+                             ) % (fragment, builtin_fragments[prefix], fragment))
                 fragment_history = data.varhistory.variable(self.fragments_variable)
                 loginfo={}
                 for fh in fragment_history[::-1]:
-- 
2.34.1



^ permalink raw reply related	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2025-11-17  2:37 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-11-14  6:02 [bitbake-devel][PATCH V2] lib/bb/parse/ast.py: error out for internal fragment in case of a previous value Qi.Chen
2025-11-14  6:15 ` Alexander Kanavin
2025-11-14  6:20   ` ChenQi
2025-11-14  6:28     ` Alexander Kanavin
2025-11-14  6:37       ` ChenQi
2025-11-14  6:49         ` Alexander Kanavin
2025-11-14  7:12           ` ChenQi
2025-11-14  7:17             ` ChenQi
2025-11-14 11:50               ` Alexander Kanavin
2025-11-14 12:14 ` Richard Purdie
     [not found] ` <1877DE8BA2A633E6.930811@lists.openembedded.org>
2025-11-14 12:17   ` Richard Purdie
2025-11-17  2:37     ` ChenQi

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.