diff options
author | Jason Wessel <jason.wessel@windriver.com> | 2012-09-17 17:43:49 -0500 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2012-09-24 15:31:13 +0100 |
commit | cffe80d82a46aaf52ff4a7b6409435754043553f (patch) | |
tree | 580b4ae3f86180391efbadcfda1c31e4a31a73ec /lib/bb/ui | |
parent | a6cc53cdb3c34fc8fd01bbc5ce0008429dc6785c (diff) | |
download | openembedded-core-contrib-cffe80d82a46aaf52ff4a7b6409435754043553f.tar.gz |
event.py, knotty.py, ncurses.py, runningbuild.py: Add support for LogExecTTY event
The LogExecTTY even is intended to provide the ability to spawn a task
on a the controlling tty, if a tty is availble. When a controlling
tty is not availble the previous behavior is preserved where a warning
is issued about the action an end user must execute.
All the available UI's were tested against the new event type.
This feature is primarily intended for hooking up a screen client
session automatically on the controlling tty to allow for a more
streamlined end user experience when using a pure command line driven
environment. The changes that send the LogExecTTY event are in the
oe-core side.
Signed-off-by: Jason Wessel <jason.wessel@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'lib/bb/ui')
-rw-r--r-- | lib/bb/ui/crumbs/runningbuild.py | 15 | ||||
-rw-r--r-- | lib/bb/ui/knotty.py | 19 | ||||
-rw-r--r-- | lib/bb/ui/ncurses.py | 2 |
3 files changed, 36 insertions, 0 deletions
diff --git a/lib/bb/ui/crumbs/runningbuild.py b/lib/bb/ui/crumbs/runningbuild.py index a57d6db5e5..700fd65015 100644 --- a/lib/bb/ui/crumbs/runningbuild.py +++ b/lib/bb/ui/crumbs/runningbuild.py @@ -375,6 +375,21 @@ class RunningBuild (gobject.GObject): msg += ("%s\n" % reason) self.emit("no-provider", msg) self.emit("log", msg) + elif isinstance(event, bb.event.LogExecTTY): + icon = "dialog-warning" + color = HobColors.WARNING + if self.sequential or not parent: + tree_add = self.model.append + else: + tree_add = self.model.prepend + tree_add(parent, + (None, + package, + task, + event.msg, + icon, + color, + 0)) else: if not isinstance(event, (bb.event.BuildBase, bb.event.StampUpdate, diff --git a/lib/bb/ui/knotty.py b/lib/bb/ui/knotty.py index 858cacfe55..d81ad5d540 100644 --- a/lib/bb/ui/knotty.py +++ b/lib/bb/ui/knotty.py @@ -27,6 +27,7 @@ import logging import progressbar import signal import bb.msg +import time import fcntl import struct import copy @@ -216,6 +217,10 @@ def main(server, eventHandler, tf = TerminalFilter): includelogs = server.runCommand(["getVariable", "BBINCLUDELOGS"]) loglines = server.runCommand(["getVariable", "BBINCLUDELOGS_LINES"]) consolelogfile = server.runCommand(["getVariable", "BB_CONSOLELOG"]) + if sys.stdin.isatty() and sys.stdout.isatty(): + log_exec_tty = True + else: + log_exec_tty = False helper = uihelper.BBUIHelper() @@ -271,6 +276,20 @@ def main(server, eventHandler, tf = TerminalFilter): if not main.shutdown: main.shutdown = 1 + if isinstance(event, bb.event.LogExecTTY): + if log_exec_tty: + tries = event.retries + while tries: + print "Trying to run: %s" % event.prog + if os.system(event.prog) == 0: + break + time.sleep(event.sleep_delay) + tries -= 1 + if tries: + continue + logger.warn(event.msg) + continue + if isinstance(event, logging.LogRecord): if event.levelno >= format.ERROR: errors = errors + 1 diff --git a/lib/bb/ui/ncurses.py b/lib/bb/ui/ncurses.py index f573b95574..f6ea7f9bca 100644 --- a/lib/bb/ui/ncurses.py +++ b/lib/bb/ui/ncurses.py @@ -318,6 +318,8 @@ class NCursesUI: if isinstance(event, bb.cooker.CookerExit): exitflag = True + if isinstance(event, bb.event.LogExecTTY): + mw.appendText('WARN: ' + event.msg + '\n') if helper.needUpdate: activetasks, failedtasks = helper.getTasks() taw.erase() |