diff options
Diffstat (limited to 'bitbake/lib/bb/command.py')
-rw-r--r-- | bitbake/lib/bb/command.py | 58 |
1 files changed, 24 insertions, 34 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 | |||
35 | async_cmds = {} | 35 | async_cmds = {} |
36 | sync_cmds = {} | 36 | sync_cmds = {} |
37 | 37 | ||
38 | |||
39 | class CommandCompleted(bb.event.Event): | ||
40 | pass | ||
41 | |||
42 | class CommandExit(bb.event.Event): | ||
43 | def __init__(self, exitcode): | ||
44 | bb.event.Event.__init__(self) | ||
45 | self.exitcode = int(exitcode) | ||
46 | |||
47 | class CommandFailed(CommandExit): | ||
48 | def __init__(self, message): | ||
49 | self.error = message | ||
50 | CommandExit.__init__(self, 1) | ||
51 | |||
38 | class Command: | 52 | class Command: |
39 | """ | 53 | """ |
40 | A queue of asynchronous commands for bitbake | 54 | A queue of asynchronous commands for bitbake |
41 | """ | 55 | """ |
42 | def __init__(self, cooker): | 56 | def __init__(self, cooker): |
43 | |||
44 | self.cooker = cooker | 57 | self.cooker = cooker |
45 | self.cmds_sync = CommandsSync() | 58 | self.cmds_sync = CommandsSync() |
46 | self.cmds_async = CommandsAsync() | 59 | self.cmds_async = CommandsAsync() |
@@ -105,11 +118,13 @@ class Command: | |||
105 | self.finishAsyncCommand(traceback.format_exc()) | 118 | self.finishAsyncCommand(traceback.format_exc()) |
106 | return False | 119 | return False |
107 | 120 | ||
108 | def finishAsyncCommand(self, error = None): | 121 | def finishAsyncCommand(self, msg=None, code=None): |
109 | if error: | 122 | if msg: |
110 | bb.event.fire(CookerCommandFailed(error), self.cooker.configuration.event_data) | 123 | bb.event.fire(CommandFailed(msg), self.cooker.configuration.event_data) |
124 | elif code: | ||
125 | bb.event.fire(CommandExit(code), self.cooker.configuration.event_data) | ||
111 | else: | 126 | else: |
112 | bb.event.fire(CookerCommandCompleted(), self.cooker.configuration.event_data) | 127 | bb.event.fire(CommandCompleted(), self.cooker.configuration.event_data) |
113 | self.currentAsyncCommand = None | 128 | self.currentAsyncCommand = None |
114 | 129 | ||
115 | 130 | ||
@@ -249,33 +264,8 @@ class CommandsAsync: | |||
249 | """ | 264 | """ |
250 | Parse the .bb files | 265 | Parse the .bb files |
251 | """ | 266 | """ |
252 | command.cooker.compareRevisions() | 267 | if bb.fetch.fetcher_compare_revisions(command.cooker.configuration.data): |
253 | command.finishAsyncCommand() | 268 | command.finishAsyncCommand(code=1) |
269 | else: | ||
270 | command.finishAsyncCommand() | ||
254 | compareRevisions.needcache = True | 271 | compareRevisions.needcache = True |
255 | |||
256 | # | ||
257 | # Events | ||
258 | # | ||
259 | class CookerCommandCompleted(bb.event.Event): | ||
260 | """ | ||
261 | Cooker command completed | ||
262 | """ | ||
263 | def __init__(self): | ||
264 | bb.event.Event.__init__(self) | ||
265 | |||
266 | |||
267 | class CookerCommandFailed(bb.event.Event): | ||
268 | """ | ||
269 | Cooker command completed | ||
270 | """ | ||
271 | def __init__(self, error): | ||
272 | bb.event.Event.__init__(self) | ||
273 | self.error = error | ||
274 | |||
275 | class CookerCommandSetExitCode(bb.event.Event): | ||
276 | """ | ||
277 | Set the exit code for a cooker command | ||
278 | """ | ||
279 | def __init__(self, exitcode): | ||
280 | bb.event.Event.__init__(self) | ||
281 | self.exitcode = int(exitcode) | ||