diff options
Diffstat (limited to 'meta/classes/cml1.bbclass')
-rw-r--r-- | 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 eb8e7907f6..0bab22efed 100644 --- a/meta/classes/cml1.bbclass +++ b/meta/classes/cml1.bbclass | |||
@@ -26,8 +26,28 @@ python do_menuconfig() { | |||
26 | except OSError: | 26 | except OSError: |
27 | mtime = 0 | 27 | mtime = 0 |
28 | 28 | ||
29 | 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'), | 29 | # We need to know when the command completes but some terminals (including gnome-terminal |
30 | # and tmux) gives us no way to do this. We therefore write the pid to a temporal file | ||
31 | # then monitor the pid until it exits. | ||
32 | import tempfile | ||
33 | pidfile = tempfile.NamedTemporaryFile(delete = False).name | ||
34 | try: | ||
35 | 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')), | ||
30 | d.getVar('PN') + ' Configuration', d) | 36 | d.getVar('PN') + ' Configuration', d) |
37 | while os.stat(pidfile).st_size <= 0: | ||
38 | continue | ||
39 | with open(pidfile, "r") as f: | ||
40 | pid = int(f.readline()) | ||
41 | finally: | ||
42 | os.unlink(pidfile) | ||
43 | |||
44 | import time | ||
45 | while True: | ||
46 | try: | ||
47 | os.kill(pid, 0) | ||
48 | time.sleep(0.1) | ||
49 | except OSError: | ||
50 | break | ||
31 | 51 | ||
32 | # FIXME this check can be removed when the minimum bitbake version has been bumped | 52 | # FIXME this check can be removed when the minimum bitbake version has been bumped |
33 | if hasattr(bb.build, 'write_taint'): | 53 | if hasattr(bb.build, 'write_taint'): |