[oe-commits] [bitbake] 02/08: cooker: fix file changes not triggering task re-execution with memres

git at git.openembedded.org git at git.openembedded.org
Fri Jun 9 16:28:33 UTC 2017


This is an automated email from the git hooks/post-receive script.

rpurdie pushed a commit to branch master
in repository bitbake.

commit fe4f3487368bc35043a1ba464e1c69d2c9cbefc6
Author: Paul Eggleton <paul.eggleton at linux.intel.com>
AuthorDate: Fri Jun 9 15:34:44 2017 +0200

    cooker: fix file changes not triggering task re-execution with memres
    
    If you build a recipe, modify one of the files referred to in SRC_URI,
    then build it again, it should re-run do_fetch and the tasks that depend
    upon it to incorporate the modified file. With memory resident mode this
    was not working unless you restarted the server, because the mtime of
    the file was cached and thus we never checked the actual file. Clear out
    the mtime caches in buildTargets() to ensure this isn't an issue. I did
    a minor refactoring to break this out to its own function since we were
    already clearing out the build mtime cache here.
    
    (The test I used for this was . ./oe-init-build-env-memres,
    bitbake -c fetch mdadm, modify the comments at the top of one of the
    patches referred to in the recipe, and then bitbake -c fetch mdadm again
    and it should re-execute the fetch task ("... 0 didn't need to be
    re-run".)
    
    Fixes [YOCTO #10732].
    
    Signed-off-by: Paul Eggleton <paul.eggleton at linux.intel.com>
    Signed-off-by: Richard Purdie <richard.purdie at linuxfoundation.org>
---
 lib/bb/cooker.py | 14 +++++++++++++-
 1 file changed, 13 insertions(+), 1 deletion(-)

diff --git a/lib/bb/cooker.py b/lib/bb/cooker.py
index 8846690..651b9c0 100644
--- a/lib/bb/cooker.py
+++ b/lib/bb/cooker.py
@@ -1313,6 +1313,18 @@ class BBCooker:
         self.data.setVar("DATE", time.strftime('%Y%m%d', t))
         self.data.setVar("TIME", time.strftime('%H%M%S', t))
 
+    def reset_mtime_caches(self):
+        """
+        Reset mtime caches - this is particularly important when memory resident as something
+        which is cached is not unlikely to have changed since the last invocation (e.g. a
+        file associated with a recipe might have been modified by the user).
+        """
+        build.reset_cache()
+        bb.fetch._checksum_cache.mtime_cache.clear()
+        siggen_cache = getattr(bb.parse.siggen, 'checksum_cache', None)
+        if siggen_cache:
+            bb.parse.siggen.checksum_cache.mtime_cache.clear()
+
     def matchFiles(self, bf):
         """
         Find the .bb files which match the expression in 'buildfile'.
@@ -1490,7 +1502,7 @@ class BBCooker:
                 return True
             return retval
 
-        build.reset_cache()
+        self.reset_mtime_caches()
         self.buildSetVars()
 
         # If we are told to do the None task then query the default task

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the Openembedded-commits mailing list