[1/2,v2] cooker: Restore sys.path and sys.modules between parses

Message ID 20220331200543.1583022-1-richard.purdie@linuxfoundation.org
State Accepted, archived
Commit 951942c3c284ec2c62e730e145688033190af9b2
Headers show
Series [1/2,v2] cooker: Restore sys.path and sys.modules between parses | expand

Commit Message

Richard Purdie March 31, 2022, 8:05 p.m. UTC
When memory resident bitbake is active and we re-parse, the old module
configuration is present which can lead to strange errors. Reset this
when reparsing so the state is consistent. This fixes memory resident
bitbake errors.

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
---
 lib/bb/cooker.py | 8 ++++++++
 1 file changed, 8 insertions(+)

Patch

diff --git a/lib/bb/cooker.py b/lib/bb/cooker.py
index 1359d33f77..0d29aa03a0 100644
--- a/lib/bb/cooker.py
+++ b/lib/bb/cooker.py
@@ -159,6 +159,9 @@  class BBCooker:
             for f in featureSet:
                 self.featureset.setFeature(f)
 
+        self.orig_syspath = sys.path.copy()
+        self.orig_sysmodules = [*sys.modules]
+
         self.configuration = bb.cookerdata.CookerConfiguration()
 
         self.idleCallBackRegister = idleCallBackRegister
@@ -350,6 +353,11 @@  class BBCooker:
         self.state = state.initial
         self.caches_array = []
 
+        sys.path = self.orig_syspath.copy()
+        for mod in [*sys.modules]:
+            if mod not in self.orig_sysmodules:
+                del sys.modules[mod]
+
         # Need to preserve BB_CONSOLELOG over resets
         consolelog = None
         if hasattr(self, "data"):