diff options
author | Jussi Kukkonen <jussi.kukkonen@intel.com> | 2016-10-10 11:30:04 +0300 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2016-10-11 08:29:43 +0100 |
commit | eee9231a543f1d0b9ef3cd8377fc46fd23afb97b (patch) | |
tree | f48d04dae7d8443e7054578fd95ae292150dfa1c | |
parent | 35927a98daeeb854ef5782e900206af6cd96b3d7 (diff) | |
download | bitbake-eee9231a543f1d0b9ef3cd8377fc46fd23afb97b.tar.gz |
depexp: Close UI with error message on NoProvider event
Without this the UI just sits there doing nothing. Showing an
infobar in-UI would be nicer but not much more useful since currently
user couldn't do anything in-UI to fix the situation. Implementation
is based on the one in knotty.
Fixes [YOCTO #9288]
Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r-- | lib/bb/ui/depexp.py | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/lib/bb/ui/depexp.py b/lib/bb/ui/depexp.py index 995703d3d..d879e04c0 100644 --- a/lib/bb/ui/depexp.py +++ b/lib/bb/ui/depexp.py @@ -301,6 +301,30 @@ def main(server, eventHandler, params): if isinstance(event, bb.command.CommandCompleted): continue + if isinstance(event, bb.event.NoProvider): + if event._runtime: + r = "R" + else: + r = "" + + extra = '' + if not event._reasons: + if event._close_matches: + extra = ". Close matches:\n %s" % '\n '.join(event._close_matches) + + if event._dependees: + print("Nothing %sPROVIDES '%s' (but %s %sDEPENDS on or otherwise requires it)%s" % r, event._item, ", ".join(event._dependees), r, extra) + else: + print("Nothing %sPROVIDES '%s'%s" % (r, event._item, extra)) + if event._reasons: + for reason in event._reasons: + print(reason) + + _, error = server.runCommand(["stateShutdown"]) + if error: + print('Unable to cleanly shutdown: %s' % error) + break + if isinstance(event, bb.command.CommandFailed): print("Command execution failed: %s" % event.error) return event.exitcode |