[gnome-continuous-yocto/gnomeostree-3.28-rocko: 6369/8267] bitbake: cooker: fix always loading cache on every UI start with memres



commit 0cb0e96c946e9c7fa75a3cb2e48fd61e15f1d5e9
Author: Paul Eggleton <paul eggleton linux intel com>
Date:   Wed Jun 14 12:10:24 2017 +0200

    bitbake: cooker: fix always loading cache on every UI start with memres
    
    The main point of memory resident bitbake is to avoid loading data
    unnecessarily on every bitbake invocation. Unfortunately the code that
    updated options from the UI was simply treating the fact that either
    of the "prefile" or "postfile" options were in the list of options
    passed in as an indication that the configuration was invalid, which was
    bad because these are always passed in. We only need to mark the
    configuration as invalid and thus reload it (and thus reload the cache)
    if the option value has actually changed.
    
    At the same time, the recently handled "tracking" option needs to be
    treated in a similar manner since the configuration needs to be reparsed
    if that has changed. Also, add a few extra debug messages to aid
    debugging this code in future.
    
    (Bitbake rev: 18dfd144d0da6ff662308ce4f9d135dc11412133)
    
    Signed-off-by: Paul Eggleton <paul eggleton linux intel com>
    Signed-off-by: Richard Purdie <richard purdie linuxfoundation org>

 bitbake/lib/bb/cooker.py |   17 ++++++++++++-----
 1 files changed, 12 insertions(+), 5 deletions(-)
---
diff --git a/bitbake/lib/bb/cooker.py b/bitbake/lib/bb/cooker.py
index 661cd0e..6a1b649 100644
--- a/bitbake/lib/bb/cooker.py
+++ b/bitbake/lib/bb/cooker.py
@@ -415,17 +415,24 @@ class BBCooker:
         self.ui_cmdline = cmdline
         clean = True
         for o in options:
-            if o in ['prefile', 'postfile']:
-                clean = False
-                server_val = getattr(self.configuration, "%s_server" % o)
+            if o in ['prefile', 'postfile', 'tracking']:
+                server_val = getattr(self.configuration, "%s_server" % o, None)
                 if not options[o] and server_val:
                     # restore value provided on server start
+                    logger.debug(1, "Restoring server value for option '%s'" % o)
                     setattr(self.configuration, o, server_val)
+                    clean = False
+                    continue
+                if getattr(self.configuration, o) == options[o]:
+                    # Value is the same, no need to mark dirty
                     continue
+                else:
+                    logger.debug(1, "Marking as dirty due to '%s' option change to '%s'" % (o, options[o]))
+                    clean = False
             setattr(self.configuration, o, options[o])
         for k in bb.utils.approved_variables():
             if k in environment and k not in self.configuration.env:
-                logger.debug(1, "Updating environment variable %s to %s" % (k, environment[k]))
+                logger.debug(1, "Updating new environment variable %s to %s" % (k, environment[k]))
                 self.configuration.env[k] = environment[k]
                 clean = False
             if k in self.configuration.env and k not in environment:
@@ -435,7 +442,7 @@ class BBCooker:
             if k not in self.configuration.env and k not in environment:
                  continue
             if environment[k] != self.configuration.env[k]:
-                logger.debug(1, "Updating environment variable %s to %s" % (k, environment[k]))
+                logger.debug(1, "Updating environment variable %s from %s to %s" % (k, 
self.configuration.env[k], environment[k]))
                 self.configuration.env[k] = environment[k]
                 clean = False
         if not clean:


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]