[bitbake-devel] [PATCH] cooker: bitbake memres server should not always reload the cache

Cristiana Voicu cristiana.voicu at intel.com
Wed Mar 26 08:05:45 UTC 2014


Due to commit dd15648fc2654b8d7c3e00ea7ab3dbf04f24f24b, after an async
command is executed, the state of the server is set back to state.initial,
so the cache is always reloaded.
This patch adds a sanity check on the validity of the cache and then only
reload if something has changed.
depends_cache variable is needed in this case, so the del statement needs
to be removed.

[YOCTO #5603]
Signed-off-by: Cristiana Voicu <cristiana.voicu at intel.com>
---
 bitbake/lib/bb/cache.py  |    2 --
 bitbake/lib/bb/cooker.py |   32 ++++++++++++++++++++++----------
 2 files changed, 22 insertions(+), 12 deletions(-)

diff --git a/bitbake/lib/bb/cache.py b/bitbake/lib/bb/cache.py
index 318781b..da9ad5d 100644
--- a/bitbake/lib/bb/cache.py
+++ b/bitbake/lib/bb/cache.py
@@ -612,8 +612,6 @@ class Cache(object):
                     cache_class_name = cache_class.__name__
                     file_dict[cache_class_name].close()
 
-        del self.depends_cache
-
     @staticmethod
     def mtime(cachefile):
         return bb.parse.cached_mtime_noerror(cachefile)
diff --git a/bitbake/lib/bb/cooker.py b/bitbake/lib/bb/cooker.py
index 07202e3..c90bb44 100644
--- a/bitbake/lib/bb/cooker.py
+++ b/bitbake/lib/bb/cooker.py
@@ -1265,21 +1265,33 @@ class BBCooker:
             raise bb.BBHandledException()
 
         if self.state != state.parsing:
-            self.parseConfiguration ()
+            check_cache = False
+            if self.parser:
+                self.parser.bb_cache.checked = set()
+                for filename in self.parser.filelist:
+                    appends = self.collection.get_file_appends(filename)
+                    if not self.parser.bb_cache.cacheValid(filename, appends):
+                        check_cache = True
+                        break
+            else:
+                check_cache = True
 
-            ignore = self.data.getVar("ASSUME_PROVIDED", True) or ""
-            self.recipecache.ignored_dependencies = set(ignore.split())
+            if check_cache:
+                self.parseConfiguration ()
+
+                ignore = self.data.getVar("ASSUME_PROVIDED", True) or ""
+                self.recipecache.ignored_dependencies = set(ignore.split())
 
-            for dep in self.configuration.extra_assume_provided:
-                self.recipecache.ignored_dependencies.add(dep)
+                for dep in self.configuration.extra_assume_provided:
+                    self.recipecache.ignored_dependencies.add(dep)
 
-            self.collection = CookerCollectFiles(self.recipecache.bbfile_config_priorities)
-            (filelist, masked) = self.collection.collect_bbfiles(self.data, self.event_data)
+                self.collection = CookerCollectFiles(self.recipecache.bbfile_config_priorities)
+                (filelist, masked) = self.collection.collect_bbfiles(self.data, self.event_data)
 
-            self.data.renameVar("__depends", "__base_depends")
+                self.data.renameVar("__depends", "__base_depends")
 
-            self.parser = CookerParser(self, filelist, masked)
-            self.state = state.parsing
+                self.parser = CookerParser(self, filelist, masked)
+                self.state = state.parsing
 
         if not self.parser.parse_next():
             collectlog.debug(1, "parsing complete")
-- 
1.7.9.5




More information about the bitbake-devel mailing list