[bitbake-devel] [PATCH 3/3] knotty.py: Make sure bitbake.lock is unlocked before exiting

leonardo.sandoval.gonzalez at linux.intel.com leonardo.sandoval.gonzalez at linux.intel.com
Tue Jul 7 09:46:01 UTC 2015


From: Leonardo Sandoval <leonardo.sandoval.gonzalez at linux.intel.com>

Before exiting the UI, unlocks the bitbake.lock owned by cooker; this
way consecutive bitbake executions can lock it again without trouble.

[Yocto #7941]

Signed-off-by: Leonardo Sandoval <leonardo.sandoval.gonzalez at linux.intel.com>
---
 bitbake/lib/bb/ui/knotty.py | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)

diff --git a/bitbake/lib/bb/ui/knotty.py b/bitbake/lib/bb/ui/knotty.py
index 2bee242..9788a92 100644
--- a/bitbake/lib/bb/ui/knotty.py
+++ b/bitbake/lib/bb/ui/knotty.py
@@ -310,6 +310,7 @@ def main(server, eventHandler, params, tf = TerminalFilter):
     errors = 0
     warnings = 0
     taskfailures = []
+    locktries = 10
 
     termfilter = tf(main, helper, console, errconsole, format)
     atexit.register(termfilter.finish)
@@ -537,6 +538,25 @@ def main(server, eventHandler, params, tf = TerminalFilter):
                 _, error = server.runCommand(["stateForceShutdown"])
             main.shutdown = 2
     try:
+        topdir, error = server.runCommand(["getVariable", "TOPDIR"])
+        if error:
+            logger.warn("Unable to get the value of TOPDIR variable: %s" % error)
+        else:
+            lockfile = "%s/bitbake.lock" % topdir
+            _, error = server.runCommand(["unlockBitbake"])
+            if error:
+                logger.warn("Unable to unlock the file %s" % lockfile)
+            else:
+                while locktries:
+                    lf = bb.utils.lockfile(lockfile, False, False)
+                    if not lf:
+                        time.sleep(1)
+                        locktries -=1
+                    else:
+                        bb.utils.unlockfile(lf)
+                        break
+                if not locktries:
+                    logger.warn("Knotty could not lock the file ${TOPDIR}/bitbake.lock, probably locked by cooker and not unlocked yet. Immediate bitbake commands may failed")
         summary = ""
         if taskfailures:
             summary += pluralise("\nSummary: %s task failed:",
-- 
1.8.4.5




More information about the bitbake-devel mailing list