On 09/27/2013 11:19 AM, cristiana.voicu wrote: > 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 I'll try to store the error log in /tmp (using mktemp, as Laurentiu suggested) >> +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. I'll move show_error_dialog in scripts. Thank you for the comments. >> + rm $ERROR_LOG >> +fi >> + >> exit $ret > Cristiana