Hi Valentin, I have some comments on this patch: On 09/25/2013 02:18 PM, Valentin Popa wrote: > When the user starts HOB, he/she expects to see some GUI. > If bitbake signals an erros before HOB starts the error will > be visible only in console and hob script will terminate. > This patch allows bitbake to report errors inside a GUI dialog > when the user wants to use HOB. > WebHOB starts before bitbake's launch and a common solution > for this problem that applies to both HOB and WebHOB is not so obvious. > > Signed-off-by: Valentin Popa > --- > bitbake/lib/bb/ui/show_error_dialog | 62 > +++++++++++++++++++++++++++++++++++++ The new file doesn't have the extension .py > scripts/hob | 9 +++++- > 2 files changed, 70 insertions(+), 1 deletion(-) > create mode 100755 bitbake/lib/bb/ui/show_error_dialog > > diff --git a/bitbake/lib/bb/ui/show_error_dialog > b/bitbake/lib/bb/ui/show_error_dialog > new file mode 100755 > index 0000000..09d0c5c > --- /dev/null > +++ b/bitbake/lib/bb/ui/show_error_dialog > @@ -0,0 +1,62 @@ > +#!/usr/bin/env python > +# > +# BitBake graphical error reporting dialog used by hob script > +# > +# Copyright (C) 2013 Intel Corporation > +# > +# Authored by Valentin Popa > +# Authored by Andrei Dinu > +# > +# This program is free software; you can redistribute it and/or modify > +# it under the terms of the GNU General Public License version 2 as > +# published by the Free Software Foundation. > +# > +# This program is distributed in the hope that it will be useful, > +# but WITHOUT ANY WARRANTY; without even the implied warranty of > +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the > +# GNU General Public License for more details. > +# > +# You should have received a copy of the GNU General Public License > along > +# with this program; if not, write to the Free Software Foundation, > Inc., > +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. > + > +import sys > +import os > +requirements = "FATAL: Gtk+ 2.20.0 or higher & PyGtk 2.21.0 or higher > is required" > +try: > + import gtk > + import pygtk > + pygtk.require('2.0') # to be certain we don't have gtk+ 1.x !?! > + gtkver = gtk.gtk_version > + pygtkver = gtk.pygtk_version > + if gtkver < (2, 20, 0) or pygtkver < (2, 21, 0): > + sys.exit("%s,\nYou have Gtk+ %s and PyGtk %s." % (requirements, > + ".".join(map(str, gtkver)), > + ".".join(map(str, pygtkver)))) > +except ImportError as exc: > + sys.exit("%s (%s)." % (requirements, str(exc))) > + > +try: > + import crumbs > +except RuntimeError as exc: > + sys.exit(str(exc)) > +sys.path.insert(0, > os.path.dirname(os.path.dirname(os.path.dirname(__file__)))) > + > +from crumbs.hig.crumbsmessagedialog import CrumbsMessageDialog > +from crumbs.hobwidget import HobButton > + > +class HobError(gtk.Window): > + > + def __init__(self, error_log_file): > + message = open(error_log_file).readlines() > + label = "Hob found an error" > + dialog = CrumbsMessageDialog(self, label, gtk.MESSAGE_ERROR, > "".join(message)) > + button = dialog.add_button("Close", gtk.RESPONSE_OK) > + HobButton.style_button(button) > + button.connect("clicked", lambda w:sys.exit()) > + dialog.run() > + dialog.destroy() > + > +if __name__ == "__main__": > + HobError(sys.argv[1]) > + > diff --git a/scripts/hob b/scripts/hob > index 8d33ab1..bbb2366 100755 > --- a/scripts/hob > +++ b/scripts/hob > @@ -1,6 +1,13 @@ > #!/usr/bin/env bash > export BB_ENV_EXTRAWHITE="DISABLE_SANITY_CHECKS $BB_ENV_EXTRAWHITE" > -DISABLE_SANITY_CHECKS=1 bitbake -u hob $@ > +ERROR_LOG=$BUILDDIR/tmp/log/saved_errors.log Instead of $BUILDDIR/tmp you should use $TMPDIR > +DISABLE_SANITY_CHECKS=1 bitbake -u hob $@ > $ERROR_LOG > ret=$? > + > +if (( $ret == 1 )); then #there is an error and hob didn't start > + $BUILDDIR/../bitbake/lib/bb/ui/show_error_dialog $ERROR_LOG The path to show_error_dialog is hardcoded. For example, my poky directory is somewhere else. > + rm $ERROR_LOG > +fi > + > exit $ret Cristiana