From 3b5b74b430f0c62bcb4bbbcce02b18f2cb12d336 Mon Sep 17 00:00:00 2001 From: Leonardo Sandoval Date: Tue, 7 Jul 2015 09:46:01 +0000 Subject: bitbake: knotty.py: Make sure bitbake.lock is unlocked before exiting Before exiting the UI, unlocks the bitbake.lock owned by cooker; this way consecutive bitbake executions can lock it again without trouble. [Yocto #7941] (Bitbake rev: 69ecd15aece54753154950c55d7af42f85ad8606) Signed-off-by: Leonardo Sandoval Signed-off-by: Richard Purdie --- bitbake/lib/bb/ui/knotty.py | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'bitbake/lib') diff --git a/bitbake/lib/bb/ui/knotty.py b/bitbake/lib/bb/ui/knotty.py index 2bee242eb0..9788a9287c 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:", -- cgit v1.2.3-54-g00ecf