From 098f63d6727e3b4db0a8906deee52c75f03047fb Mon Sep 17 00:00:00 2001 From: Chris Larson Date: Fri, 10 Dec 2010 16:53:19 -0700 Subject: [PATCH] Rename command events, adjust compareRevisions - Moved the logic for comparing revisions from cooker into command - Removed 'Cooker' from the event names - Renamed the 'ExitCode' event into CommandExit, and changed CommandFailed to be a subclass of CommandExit (Bitbake rev: c51ed5d7a9971fad6019dac6c35a71b8a54ab16a) Signed-off-by: Chris Larson Signed-off-by: Richard Purdie --- bitbake/lib/bb/command.py | 58 +++++++++++++------------------- bitbake/lib/bb/cooker.py | 4 --- bitbake/lib/bb/fetch/__init__.py | 2 +- bitbake/lib/bb/ui/depexp.py | 10 ++++-- bitbake/lib/bb/ui/knotty.py | 10 +++--- bitbake/lib/bb/ui/ncurses.py | 6 ++-- 6 files changed, 41 insertions(+), 49 deletions(-) diff --git a/bitbake/lib/bb/command.py b/bitbake/lib/bb/command.py index 30c7240cf2..b88089298c 100644 --- a/bitbake/lib/bb/command.py +++ b/bitbake/lib/bb/command.py @@ -35,12 +35,25 @@ import bb.data async_cmds = {} sync_cmds = {} + +class CommandCompleted(bb.event.Event): + pass + +class CommandExit(bb.event.Event): + def __init__(self, exitcode): + bb.event.Event.__init__(self) + self.exitcode = int(exitcode) + +class CommandFailed(CommandExit): + def __init__(self, message): + self.error = message + CommandExit.__init__(self, 1) + class Command: """ A queue of asynchronous commands for bitbake """ def __init__(self, cooker): - self.cooker = cooker self.cmds_sync = CommandsSync() self.cmds_async = CommandsAsync() @@ -105,11 +118,13 @@ class Command: self.finishAsyncCommand(traceback.format_exc()) return False - def finishAsyncCommand(self, error = None): - if error: - bb.event.fire(CookerCommandFailed(error), self.cooker.configuration.event_data) + def finishAsyncCommand(self, msg=None, code=None): + if msg: + bb.event.fire(CommandFailed(msg), self.cooker.configuration.event_data) + elif code: + bb.event.fire(CommandExit(code), self.cooker.configuration.event_data) else: - bb.event.fire(CookerCommandCompleted(), self.cooker.configuration.event_data) + bb.event.fire(CommandCompleted(), self.cooker.configuration.event_data) self.currentAsyncCommand = None @@ -249,33 +264,8 @@ class CommandsAsync: """ Parse the .bb files """ - command.cooker.compareRevisions() - command.finishAsyncCommand() + if bb.fetch.fetcher_compare_revisions(command.cooker.configuration.data): + command.finishAsyncCommand(code=1) + else: + command.finishAsyncCommand() compareRevisions.needcache = True - -# -# Events -# -class CookerCommandCompleted(bb.event.Event): - """ - Cooker command completed - """ - def __init__(self): - bb.event.Event.__init__(self) - - -class CookerCommandFailed(bb.event.Event): - """ - Cooker command completed - """ - def __init__(self, error): - bb.event.Event.__init__(self) - self.error = error - -class CookerCommandSetExitCode(bb.event.Event): - """ - Set the exit code for a cooker command - """ - def __init__(self, exitcode): - bb.event.Event.__init__(self) - self.exitcode = int(exitcode) diff --git a/bitbake/lib/bb/cooker.py b/bitbake/lib/bb/cooker.py index 3b4eae8c4c..8ac88b99a4 100644 --- a/bitbake/lib/bb/cooker.py +++ b/bitbake/lib/bb/cooker.py @@ -191,10 +191,6 @@ class BBCooker: logger.plain("%-35s %25s %25s", p, lateststr, prefstr) - def compareRevisions(self): - ret = bb.fetch.fetcher_compare_revisons(self.configuration.data) - bb.event.fire(bb.command.CookerCommandSetExitCode(ret), self.configuration.event_data) - def showEnvironment(self, buildfile = None, pkgs_to_build = []): """ Show the outer or per-package environment diff --git a/bitbake/lib/bb/fetch/__init__.py b/bitbake/lib/bb/fetch/__init__.py index 0562d72a23..668b788698 100644 --- a/bitbake/lib/bb/fetch/__init__.py +++ b/bitbake/lib/bb/fetch/__init__.py @@ -174,7 +174,7 @@ def fetcher_init(d): pd.addDomain("BB_URI_HEADREVS") pd.addDomain("BB_URI_LOCALCOUNT") -def fetcher_compare_revisons(d): +def fetcher_compare_revisions(d): """ Compare the revisions in the persistant cache with current values and return true/false on whether they've changed. diff --git a/bitbake/lib/bb/ui/depexp.py b/bitbake/lib/bb/ui/depexp.py index 31004db44a..a6039ec57d 100644 --- a/bitbake/lib/bb/ui/depexp.py +++ b/bitbake/lib/bb/ui/depexp.py @@ -21,6 +21,8 @@ import gobject import gtk import threading import xmlrpclib +import bb +import bb.event from bb.ui.crumbs.progress import ProgressBar # Package Model @@ -236,11 +238,13 @@ def main(server, eventHandler): parse(event._depgraph, dep.pkg_model, dep.depends_model) gtk.gdk.threads_leave() - if isinstance(event, bb.command.CookerCommandCompleted): + if isinstance(event, bb.command.CommandCompleted): continue - if isinstance(event, bb.command.CookerCommandFailed): + if isinstance(event, bb.command.CommandFailed): print("Command execution failed: %s" % event.error) - break + return event.exitcode + if isinstance(event, bb.command.CommandExit): + return event.exitcode if isinstance(event, bb.cooker.CookerExit): break diff --git a/bitbake/lib/bb/ui/knotty.py b/bitbake/lib/bb/ui/knotty.py index e0f08ecb6e..d3534a0f5b 100644 --- a/bitbake/lib/bb/ui/knotty.py +++ b/bitbake/lib/bb/ui/knotty.py @@ -163,15 +163,15 @@ def main(server, eventHandler): % ( event.total, event.cached, event.parsed, event.virtuals, event.skipped, event.masked, event.errors))) continue - if isinstance(event, bb.command.CookerCommandCompleted): + if isinstance(event, bb.command.CommandCompleted): break - if isinstance(event, bb.command.CookerCommandSetExitCode): + if isinstance(event, bb.command.CommandFailed): return_value = event.exitcode - continue - if isinstance(event, bb.command.CookerCommandFailed): - return_value = 1 logger.error("Command execution failed: %s" % event.error) break + if isinstance(event, bb.command.CommandExit): + return_value = event.exitcode + continue if isinstance(event, bb.cooker.CookerExit): break if isinstance(event, bb.event.MultipleProviders): diff --git a/bitbake/lib/bb/ui/ncurses.py b/bitbake/lib/bb/ui/ncurses.py index 3bc8373964..1db4ec173b 100644 --- a/bitbake/lib/bb/ui/ncurses.py +++ b/bitbake/lib/bb/ui/ncurses.py @@ -288,12 +288,14 @@ class NCursesUI: # else: # bb.msg.error(bb.msg.domain.Build, "see log in %s" % logfile) - if isinstance(event, bb.command.CookerCommandCompleted): + if isinstance(event, bb.command.CommandCompleted): exitflag = True - if isinstance(event, bb.command.CookerCommandFailed): + if isinstance(event, bb.command.CommandFailed): mw.appendText("Command execution failed: %s" % event.error) time.sleep(2) exitflag = True + if isinstance(event, bb.command.CommandExit): + exitflag = True if isinstance(event, bb.cooker.CookerExit): exitflag = True