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()
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
"""
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)
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
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.
import gtk
import threading
import xmlrpclib
+import bb
+import bb.event
from bb.ui.crumbs.progress import ProgressBar
# Package Model
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
% ( 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):
# 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