]> git.ipfire.org Git - thirdparty/openembedded/openembedded-core-contrib.git/commitdiff
lib/bb/cache.py: invalidate cache when file checksum entry no longer exists
authorPaul Eggleton <paul.eggleton@linux.intel.com>
Tue, 4 Jun 2013 08:59:37 +0000 (09:59 +0100)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Fri, 7 Jun 2013 16:12:15 +0000 (17:12 +0100)
Go through the cached list of file checksums and check if any of the
files no longer exist; if any are missing then invalidate the cached
recipe, which will force it to be reparsed and thus force the list of
files to be collected again. This prevents a warning when moving a file
to a different location that is still picked up by the recipe, e.g.
moving a file from a "files" subdirectory to one named with the recipe
name (${BPN}).

Fixes [YOCTO #4474].

Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
lib/bb/cache.py

index 9e89742235e0f1d324d5dd90b867d47f49888a0c..eee83b7d09c858d57f2c81a26f9931132bda34c0 100644 (file)
@@ -524,6 +524,15 @@ class Cache(object):
                     self.remove(fn)
                     return False
 
+        if hasattr(info_array[0], 'file_checksums'):
+            for _, fl in info_array[0].file_checksums.items():
+                for f in fl.split():
+                    if not os.path.exists(f):
+                        logger.debug(2, "Cache: %s's file checksum list file %s was removed",
+                                        fn, f)
+                        self.remove(fn)
+                        return False
+
         if appends != info_array[0].appends:
             logger.debug(2, "Cache: appends for %s changed", fn)
             logger.debug(2, "%s to %s" % (str(appends), str(info_array[0].appends)))