From 0a9cfebb3a47b3404d3ff73a58e9f1a88d87fa78 Mon Sep 17 00:00:00 2001 From: Louis Rannou Date: Thu, 13 Feb 2025 16:05:42 +0100 Subject: [PATCH] bitbake: bitbake: data_smart: fix ??= operator for variable flags Variable flags have been fixed in commit 0329a7e3ac694737f2d2c1861f65492551360663 which introduces the "_defaultval_flag_" prefix for default values. This must not be ignored in delVarFlags and getVarFlags. Fixes [YOCTO #15685] (Bitbake rev: 2ee079fc1b7cf6d384ca17bd034b0a40461d9d18) Signed-off-by: Louis Rannou Signed-off-by: Richard Purdie --- bitbake/lib/bb/data_smart.py | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/bitbake/lib/bb/data_smart.py b/bitbake/lib/bb/data_smart.py index 897ceeb32c..5412596566 100644 --- a/bitbake/lib/bb/data_smart.py +++ b/bitbake/lib/bb/data_smart.py @@ -920,6 +920,8 @@ class DataSmart(MutableMapping): self.varhistory.record(**loginfo) del self.dict[var][flag] + if ("_defaultval_flag_" + flag) in self.dict[var]: + del self.dict[var]["_defaultval_flag_" + flag] def appendVarFlag(self, var, flag, value, **loginfo): loginfo['op'] = 'append' @@ -954,17 +956,22 @@ class DataSmart(MutableMapping): flags = {} if local_var: - for i in local_var: - if i.startswith(("_", ":")) and not internalflags: + for i, val in local_var.items(): + if i.startswith("_defaultval_flag_") and not internalflags: + i = i[len("_defaultval_flag_"):] + if i not in local_var: + flags[i] = val + elif i.startswith(("_", ":")) and not internalflags: continue - flags[i] = local_var[i] + else: + flags[i] = val + if expand and i in expand: flags[i] = self.expand(flags[i], var + "[" + i + "]") if len(flags) == 0: return None return flags - def delVarFlags(self, var, **loginfo): self.expand_cache = {} if not var in self.dict: