* [PATCH] cml1.bbclass: wait until menuconfig terminal finishes
@ 2017-07-28 1:54 leonardo.sandoval.gonzalez
2017-07-31 16:38 ` Saul Wold
0 siblings, 1 reply; 2+ messages in thread
From: leonardo.sandoval.gonzalez @ 2017-07-28 1:54 UTC (permalink / raw)
To: openembedded-core
From: Leonardo Sandoval <leonardo.sandoval.gonzalez@linux.intel.com>
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]
Signed-off-by: Leonardo Sandoval <leonardo.sandoval.gonzalez@linux.intel.com>
---
meta/classes/cml1.bbclass | 22 +++++++++++++++++++++-
1 file changed, 21 insertions(+), 1 deletion(-)
diff --git a/meta/classes/cml1.bbclass b/meta/classes/cml1.bbclass
index 38e6613c48..1e84795aa2 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'):
--
2.12.3
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH] cml1.bbclass: wait until menuconfig terminal finishes
2017-07-28 1:54 [PATCH] cml1.bbclass: wait until menuconfig terminal finishes leonardo.sandoval.gonzalez
@ 2017-07-31 16:38 ` Saul Wold
0 siblings, 0 replies; 2+ messages in thread
From: Saul Wold @ 2017-07-31 16:38 UTC (permalink / raw)
To: leonardo.sandoval.gonzalez, openembedded-core
On Thu, 2017-07-27 at 18:54 -0700,
leonardo.sandoval.gonzalez@linux.intel.com wrote:
> From: Leonardo Sandoval <leonardo.sandoval.gonzalez@linux.intel.com>
>
> 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.
>
I am not sure that this should be specific to the menuconfig code, as
this will affect devshell also or if you enable dropping into shell for
patch fixing.
Please generalize the code in meta/lib/oe/terminal.py that gnome uses
to be useful by any terminal type.
Sau!
> [1]
> http://git.yoctoproject.org/cgit/cgit.cgi/poky/commit/?id=c706bfbabbf
> 9f7caf2cf509eb91381fb49aa44cb
>
> [YOCTO #11146]
>
> Signed-off-by: Leonardo Sandoval <leonardo.sandoval.gonzalez@linux.in
> tel.com>
> ---
> meta/classes/cml1.bbclass | 22 +++++++++++++++++++++-
> 1 file changed, 21 insertions(+), 1 deletion(-)
>
> diff --git a/meta/classes/cml1.bbclass b/meta/classes/cml1.bbclass
> index 38e6613c48..1e84795aa2 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'):
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2017-07-31 16:38 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-07-28 1:54 [PATCH] cml1.bbclass: wait until menuconfig terminal finishes leonardo.sandoval.gonzalez
2017-07-31 16:38 ` Saul Wold
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox