[gnome-continuous-yocto/gnomeostree-3.28-rocko: 7030/8267] cml1.bbclass: wait until menuconfig terminal finishes
- From: Emmanuele Bassi <ebassi src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-continuous-yocto/gnomeostree-3.28-rocko: 7030/8267] cml1.bbclass: wait until menuconfig terminal finishes
- Date: Sun, 17 Dec 2017 05:40:33 +0000 (UTC)
commit d2ebee7c3a0c8ab9a09ebad12a2fda51f8d10954
Author: Leonardo Sandoval <leonardo sandoval gonzalez linux intel com>
Date: Thu Jul 27 18:54:31 2017 -0700
cml1.bbclass: wait until menuconfig terminal finishes
There are at least two terminals types (gnome and tmux) that when
launched to show the kernel's menuconfig, we lost track of the corresponding
process ID, thus there is no way to see when they finish, yielding identical
timestamps before and after menuconfig thus compile's task
is never tainted. This commit takes the solution from [1] but now in the menuconfig's
context.
[1] http://git.yoctoproject.org/cgit/cgit.cgi/poky/commit/?id=c706bfbabbf9f7caf2cf509eb91381fb49aa44cb
[YOCTO #11146]
(From OE-Core rev: 7d02ea283b6587f3f79c5846b64b9ba1d6fe8026)
Signed-off-by: Leonardo Sandoval <leonardo sandoval gonzalez linux intel com>
Signed-off-by: Richard Purdie <richard purdie linuxfoundation org>
meta/classes/cml1.bbclass | 22 +++++++++++++++++++++-
1 files changed, 21 insertions(+), 1 deletions(-)
---
diff --git a/meta/classes/cml1.bbclass b/meta/classes/cml1.bbclass
index eb8e790..0bab22e 100644
--- a/meta/classes/cml1.bbclass
+++ b/meta/classes/cml1.bbclass
@@ -26,8 +26,28 @@ python do_menuconfig() {
except OSError:
mtime = 0
- oe_terminal("${SHELL} -c \"make %s; if [ \$? -ne 0 ]; then echo 'Command failed.'; printf 'Press any key
to continue... '; read r; fi\"" % d.getVar('KCONFIG_CONFIG_COMMAND'),
+ # We need to know when the command completes but some terminals (including gnome-terminal
+ # and tmux) gives us no way to do this. We therefore write the pid to a temporal file
+ # then monitor the pid until it exits.
+ import tempfile
+ pidfile = tempfile.NamedTemporaryFile(delete = False).name
+ try:
+ oe_terminal("${SHELL} -c \"echo $$ > %s; make %s; if [ \$? -ne 0 ]; then echo 'Command failed.';
printf 'Press any key to continue... '; read r; fi\"" % (pidfile, d.getVar('KCONFIG_CONFIG_COMMAND')),
d.getVar('PN') + ' Configuration', d)
+ while os.stat(pidfile).st_size <= 0:
+ continue
+ with open(pidfile, "r") as f:
+ pid = int(f.readline())
+ finally:
+ os.unlink(pidfile)
+
+ import time
+ while True:
+ try:
+ os.kill(pid, 0)
+ time.sleep(0.1)
+ except OSError:
+ break
# FIXME this check can be removed when the minimum bitbake version has been bumped
if hasattr(bb.build, 'write_taint'):
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]