]> git.ipfire.org Git - thirdparty/openembedded/openembedded-core-contrib.git/commitdiff
bitbake/cache.py: Ensure skipped recipes make it into the cache to avoid reparsing
authorRichard Purdie <richard.purdie@linuxfoundation.org>
Sun, 10 Apr 2011 17:55:48 +0000 (10:55 -0700)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Fri, 6 May 2011 14:31:21 +0000 (15:31 +0100)
(From Poky rev: 001a555c2f755d4f8a69b113656d9307ca7ee597)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
lib/bb/cache.py
lib/bb/cooker.py
lib/bb/ui/knotty.py

index 6e3a6124dd0f99a2c4d568327aeb0e6eea62f32e..bc4a8dfd98b56065e861d65c9bec4b054bb5d078 100644 (file)
@@ -129,7 +129,10 @@ class RecipeInfo(namedtuple('RecipeInfo', recipe_fields)):
     @classmethod
     def from_metadata(cls, filename, metadata):
         if cls.getvar('__SKIPPED', metadata):
-            return cls.make_optional(skipped=True)
+            return cls.make_optional(skipped=True,
+                                     file_depends=metadata.getVar('__depends', False),
+                                     timestamp=bb.parse.cached_mtime(filename),
+                                     variants=cls.listvar('__VARIANTS', metadata) + [''])
 
         tasks = metadata.getVar('__BBTASKS', False)
 
@@ -480,11 +483,13 @@ class Cache(object):
         return bb.parse.cached_mtime_noerror(cachefile)
 
     def add_info(self, filename, info, cacheData, parsed=None):
-        cacheData.add_from_recipeinfo(filename, info)
+        if not info.skipped:
+            cacheData.add_from_recipeinfo(filename, info)
+
         if not self.has_cache:
             return
 
-        if 'SRCREVINACTION' not in info.pv and not info.nocache:
+        if (info.skipped or 'SRCREVINACTION' not in info.pv) and not info.nocache:
             if parsed:
                 self.cacheclean = False
             self.depends_cache[filename] = info
index 9f1fa2a6bcdcb49af84f668521a2c121c39539e2..06912bde65e36b4cbf72192160ba7ce7524cafb8 100644 (file)
@@ -1133,8 +1133,7 @@ class CookerParser(object):
         for virtualfn, info in result:
             if info.skipped:
                 self.skipped += 1
-            else:
-                self.bb_cache.add_info(virtualfn, info, self.cooker.status,
+            self.bb_cache.add_info(virtualfn, info, self.cooker.status,
                                         parsed=parsed)
         return True
 
index 9f2b78702fc4172d20f9e6eab451c4dd4f5e7f9b..1396939fcab74a639261b48084a7ab95db89c34e 100644 (file)
@@ -149,12 +149,17 @@ def main(server, eventHandler):
                 logger.info(event._message)
                 continue
             if isinstance(event, bb.event.ParseStarted):
+                if event.total == 0:
+                    continue
                 parseprogress = new_progress("Parsing recipes", event.total).start()
                 continue
             if isinstance(event, bb.event.ParseProgress):
                 parseprogress.update(event.current)
                 continue
             if isinstance(event, bb.event.ParseCompleted):
+                if not parseprogress:
+                    continue
+
                 parseprogress.finish()
                 print(("Parsing of %d .bb files complete (%d cached, %d parsed). %d targets, %d skipped, %d masked, %d errors."
                     % ( event.total, event.cached, event.parsed, event.virtuals, event.skipped, event.masked, event.errors)))