[bitbake-devel] [PATCH] HOB:Proper handle of SIGINT
Valentin Popa
valentin.popa at intel.com
Wed Jul 3 11:31:44 UTC 2013
Modal dialogs doesn't run on the main loop so they cannot
catch any signal from the terminal. This patch makes sure
the dialogs are destroyed when a SIGINT is sent to HOB.
[YOCTO #3329]
Signed-off-by: Valentin Popa <valentin.popa at intel.com>
---
bitbake/lib/bb/ui/crumbs/builder.py | 13 +++++++++++--
1 file changed, 11 insertions(+), 2 deletions(-)
diff --git a/bitbake/lib/bb/ui/crumbs/builder.py b/bitbake/lib/bb/ui/crumbs/builder.py
index d5df60f..a2abb2a 100755
--- a/bitbake/lib/bb/ui/crumbs/builder.py
+++ b/bitbake/lib/bb/ui/crumbs/builder.py
@@ -30,6 +30,7 @@ import shlex
import re
import logging
import sys
+import signal
from bb.ui.crumbs.imageconfigurationpage import ImageConfigurationPage
from bb.ui.crumbs.recipeselectionpage import RecipeSelectionPage
from bb.ui.crumbs.packageselectionpage import PackageSelectionPage
@@ -441,6 +442,8 @@ class Builder(gtk.Window):
self.initiate_new_build_async()
+ signal.signal(signal.SIGINT, self.event_handle_SIGINT)
+
def create_visual_elements(self):
self.set_title("Hob")
self.set_icon_name("applications-development")
@@ -1028,7 +1031,7 @@ class Builder(gtk.Window):
dialog.destroy()
self.build_failed()
- def handler_task_started_cb(self, running_build, message):
+ def handler_task_started_cb(self, running_build, message):
fraction = message["current"] * 1.0/message["total"]
title = "Build packages"
if self.current_step == self.FAST_IMAGE_GENERATING:
@@ -1075,6 +1078,12 @@ class Builder(gtk.Window):
else:
gtk.main_quit()
+ def event_handle_SIGINT(self, signal, frame):
+ for w in gtk.window_list_toplevels():
+ if w.get_modal():
+ w.response(gtk.RESPONSE_DELETE_EVENT)
+ sys.exit(0)
+
def build_packages(self):
_, all_recipes = self.recipe_model.get_selected_recipes()
if not all_recipes:
@@ -1090,7 +1099,7 @@ class Builder(gtk.Window):
def build_image(self):
selected_packages = self.package_model.get_selected_packages()
- if not selected_packages:
+ if not selected_packages:
lbl = "<b>No selections made</b>\nYou have not made any selections"
lbl = lbl + " so there isn't anything to bake at this time."
dialog = CrumbsMessageDialog(self, lbl, gtk.STOCK_DIALOG_INFO)
--
1.8.1.2
More information about the bitbake-devel
mailing list