Patchwork [bitbake-devel,1/2] Hob: Add filter for images listed in image combo

login
register
mail settings
Submitter Dongxiao Xu
Date May 15, 2012, 5:52 a.m.
Message ID <00949d15d6a5109294db49986497ac19df93f73b.1337060999.git.dongxiao.xu@intel.com>
Download mbox | patch
Permalink /patch/27749/
State New
Headers show

Comments

Dongxiao Xu - May 15, 2012, 5:52 a.m.
Define IMAGE_WHITE_PATTERN variable to indicate which image is allowed
to be displayed in image combobox.

Define IMAGE_BLACK_PATTERN variable to indicate which image is NOT
allowed to be displayed in image combobox.

This fixes [YOCTO #1581]

Signed-off-by: Dongxiao Xu <dongxiao.xu@intel.com>
---
 lib/bb/ui/crumbs/builder.py                |    4 +++
 lib/bb/ui/crumbs/hobeventhandler.py        |    2 +
 lib/bb/ui/crumbs/imageconfigurationpage.py |   37 +++++++++++++++++++++++++---
 3 files changed, 39 insertions(+), 4 deletions(-)
Richard Purdie - May 21, 2012, 7:55 a.m.
On Tue, 2012-05-15 at 13:52 +0800, Dongxiao Xu wrote:
> Define IMAGE_WHITE_PATTERN variable to indicate which image is allowed
> to be displayed in image combobox.
> 
> Define IMAGE_BLACK_PATTERN variable to indicate which image is NOT
> allowed to be displayed in image combobox.
> 
> This fixes [YOCTO #1581]

We need to namespace these with "BB" to indicate they're bitbake
variables, BBUI might be better again.

Cheers,

Richard

Patch

diff --git a/lib/bb/ui/crumbs/builder.py b/lib/bb/ui/crumbs/builder.py
index 42d0f2c..a4fb5eb 100755
--- a/lib/bb/ui/crumbs/builder.py
+++ b/lib/bb/ui/crumbs/builder.py
@@ -213,6 +213,8 @@  class Parameters:
         self.all_layers = []
         self.image_names = []
         self.enable_proxy = False
+        self.image_white_pattern = ""
+        self.image_black_pattern = ""
 
         # for build log to show
         self.bb_version = ""
@@ -230,6 +232,8 @@  class Parameters:
         self.runnable_machine_patterns = params["runnable_machine_patterns"].split()
         self.deployable_image_types = params["deployable_image_types"].split()
         self.tmpdir = params["tmpdir"]
+        self.image_white_pattern = params["image_white_pattern"]
+        self.image_black_pattern = params["image_black_pattern"]
         # for build log to show
         self.bb_version = params["bb_version"]
         self.target_arch = params["target_arch"]
diff --git a/lib/bb/ui/crumbs/hobeventhandler.py b/lib/bb/ui/crumbs/hobeventhandler.py
index 624d7b5..165688a 100644
--- a/lib/bb/ui/crumbs/hobeventhandler.py
+++ b/lib/bb/ui/crumbs/hobeventhandler.py
@@ -501,4 +501,6 @@  class HobHandler(gobject.GObject):
         params["cvs_proxy_host"] = self.runCommand(["getVariable", "CVS_PROXY_HOST"]) or ""
         params["cvs_proxy_port"] = self.runCommand(["getVariable", "CVS_PROXY_PORT"]) or ""
 
+        params["image_white_pattern"] = self.runCommand(["getVariable", "IMAGE_WHITE_PATTERN"]) or ""
+        params["image_black_pattern"] = self.runCommand(["getVariable", "IMAGE_BLACK_PATTERN"]) or ""
         return params
diff --git a/lib/bb/ui/crumbs/imageconfigurationpage.py b/lib/bb/ui/crumbs/imageconfigurationpage.py
index 0463ee8..1198817 100644
--- a/lib/bb/ui/crumbs/imageconfigurationpage.py
+++ b/lib/bb/ui/crumbs/imageconfigurationpage.py
@@ -22,6 +22,7 @@ 
 
 import gtk
 import glib
+import re
 from bb.ui.crumbs.progressbar import HobProgressBar
 from bb.ui.crumbs.hobcolor import HobColors
 from bb.ui.crumbs.hobwidget import hic, HobImageButton, HobInfoButton, HobAltButton, HobButton
@@ -345,6 +346,16 @@  class ImageConfigurationPage (HobPage):
         active = -1
         cnt = 0
 
+        white_pattern = []
+        if self.builder.parameters.image_white_pattern:
+            for i in self.builder.parameters.image_white_pattern.split():
+                white_pattern.append(re.compile(i))
+
+        black_pattern = []
+        if self.builder.parameters.image_black_pattern:
+            for i in self.builder.parameters.image_black_pattern.split():
+                black_pattern.append(re.compile(i))
+
         it = image_model.get_iter_first()
         self._image_combo_disconnect_signal()
         model = self.image_combo.get_model()
@@ -356,10 +367,28 @@  class ImageConfigurationPage (HobPage):
             image_name = image_model[path][recipe_model.COL_NAME]
             if image_name == self.builder.recipe_model.__dummy_image__:
                 continue
-            self.image_combo.append_text(image_name)
-            if image_name == selected_image:
-                active = cnt
-            cnt = cnt + 1
+
+            if black_pattern:
+                allow = True
+                for pattern in black_pattern:
+                    if pattern.search(image_name):
+                        allow = False
+                        break
+            elif white_pattern:
+                allow = False
+                for pattern in white_pattern:
+                    if pattern.search(image_name):
+                        allow = True
+                        break
+            else:
+                allow = True
+
+            if allow:
+                self.image_combo.append_text(image_name)
+                if image_name == selected_image:
+                    active = cnt
+                cnt = cnt + 1
+
         self.image_combo.append_text(self.builder.recipe_model.__dummy_image__)
         if selected_image == self.builder.recipe_model.__dummy_image__:
             active = cnt