diff mbox series

[bitbake-devel,V4,1/3] lib/bb/cooker.py: fix reset in case of different featureset

Message ID 20251120073324.136238-1-Qi.Chen@windriver.com
State New
Headers show
Series [bitbake-devel,V4,1/3] lib/bb/cooker.py: fix reset in case of different featureset | expand

Commit Message

Chen, Qi Nov. 20, 2025, 7:33 a.m. UTC
From: Chen Qi <Qi.Chen@windriver.com>

The cooker needs to re-parse data in case of different featureset.
This needs to happen not only when some feature is added, but also
when some feature is removed.

Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
---
 lib/bb/cooker.py | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)
diff mbox series

Patch

diff --git a/lib/bb/cooker.py b/lib/bb/cooker.py
index 03f262ac1..1c06737ad 100644
--- a/lib/bb/cooker.py
+++ b/lib/bb/cooker.py
@@ -90,6 +90,11 @@  class CookerFeatures(object):
             return
         self._features.add(f)
 
+    def delFeature(self, f):
+        if f not in self._features:
+            return
+        self._features.remove(f)
+
     def __contains__(self, f):
         return f in self._features
 
@@ -237,7 +242,10 @@  class BBCooker:
         original_featureset = list(self.featureset)
         for feature in features:
             self.featureset.setFeature(feature)
-        bb.debug(1, "Features set %s (was %s)" % (original_featureset, list(self.featureset)))
+        for orig_feature in original_featureset:
+            if orig_feature not in features:
+                self.featureset.delFeature(orig_feature)
+        bb.debug(1, "Features set %s (was %s)" % (list(self.featureset), original_featureset))
         if (original_featureset != list(self.featureset)) and self.state != State.ERROR and hasattr(self, "data"):
             self.reset()