From patchwork Tue Oct 30 12:06:11 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: [bitbake-devel] hob: make some layers non removable Date: Tue, 30 Oct 2012 12:06:11 -0000 From: Cristiana Voicu X-Patchwork-Id: 38709 Message-Id: <1351598771-31041-1-git-send-email-cristiana.voicu@intel.com> To: bitbake-devel@lists.openembedded.org - there are some layers which cannot be removed; so ,I have created a new variable called BBLAYERS_NON_REMOVABLE located in bblayers.conf, which contains those layers which cannot be deleted - "meta-hob" layer is added to this variable in hob code, like it's added to BBLAYERS var [YOCTO #3176] Signed-off-by: Cristiana Voicu --- bitbake/lib/bb/ui/crumbs/builder.py | 2 ++ bitbake/lib/bb/ui/crumbs/hig.py | 15 +++++---------- bitbake/lib/bb/ui/crumbs/hobeventhandler.py | 3 +++ meta-yocto/conf/bblayers.conf.sample | 4 ++++ 4 files changed, 14 insertions(+), 10 deletions(-) diff --git a/bitbake/lib/bb/ui/crumbs/builder.py b/bitbake/lib/bb/ui/crumbs/builder.py index e5222da..add067b 100755 --- a/bitbake/lib/bb/ui/crumbs/builder.py +++ b/bitbake/lib/bb/ui/crumbs/builder.py @@ -172,6 +172,7 @@ class Configuration: # self.extra_setting/self.toolchain_build # bblayers.conf self.layers = params["layer"].split() + self.layers_non_removable = params["layers_non_removable"].split() self.default_task = params["default_task"] # proxy settings @@ -1194,6 +1195,7 @@ class Builder(gtk.Window): def show_layer_selection_dialog(self): dialog = LayerSelectionDialog(title = "Layers", layers = copy.deepcopy(self.configuration.layers), + layers_non_removable = copy.deepcopy(self.configuration.layers_non_removable), all_layers = self.parameters.all_layers, parent = self, flags = gtk.DIALOG_MODAL diff --git a/bitbake/lib/bb/ui/crumbs/hig.py b/bitbake/lib/bb/ui/crumbs/hig.py index d973086..e56cf2a 100644 --- a/bitbake/lib/bb/ui/crumbs/hig.py +++ b/bitbake/lib/bb/ui/crumbs/hig.py @@ -1665,11 +1665,12 @@ class LayerSelectionDialog (CrumbsDialog): def add_leave_cb(self, button, event): self.im.set_from_file(hic.ICON_INDI_ADD_FILE) - def __init__(self, title, layers, all_layers, parent, flags, buttons=None): + def __init__(self, title, layers, layers_non_removable, all_layers, parent, flags, buttons=None): super(LayerSelectionDialog, self).__init__(title, parent, flags, buttons) # class members from other objects self.layers = layers + self.layers_non_removable = layers_non_removable self.all_layers = all_layers self.layers_changed = False @@ -1709,10 +1710,7 @@ class LayerSelectionDialog (CrumbsDialog): """ def draw_delete_button_cb(self, col, cell, model, it, tv): path = model.get_value(it, 0) - # Trailing slashes are uncommon in bblayers.conf but confuse os.path.basename - path.rstrip('/') - name = os.path.basename(path) - if name == "meta" or name == "meta-hob": + if path in self.layers_non_removable: cell.set_sensitive(False) cell.set_property('pixbuf', None) cell.set_property('mode', gtk.CELL_RENDERER_MODE_INERT) @@ -1730,11 +1728,8 @@ class LayerSelectionDialog (CrumbsDialog): """ def draw_layer_path_cb(self, col, cell, model, it): path = model.get_value(it, 0) - name = os.path.basename(path) - if name == "meta": - cell.set_property('markup', "Core layer for images: it cannot be removed\n%s" % path) - elif name == "meta-hob": - cell.set_property('markup', "Core layer for Hob: it cannot be removed\n%s" % path) + if path in self.layers_non_removable: + cell.set_property('markup', "It cannot be removed\n%s" % path) else: cell.set_property('text', path) diff --git a/bitbake/lib/bb/ui/crumbs/hobeventhandler.py b/bitbake/lib/bb/ui/crumbs/hobeventhandler.py index 7d3af6c..169eeed 100644 --- a/bitbake/lib/bb/ui/crumbs/hobeventhandler.py +++ b/bitbake/lib/bb/ui/crumbs/hobeventhandler.py @@ -439,8 +439,11 @@ class HobHandler(gobject.GObject): params["core_base"] = self.runCommand(["getVariable", "COREBASE"]) or "" hob_layer = params["core_base"] + "/meta-hob" params["layer"] = self.runCommand(["getVariable", "BBLAYERS"]) or "" + params["layers_non_removable"] = self.runCommand(["getVariable", "BBLAYERS_NON_REMOVABLE"]) if hob_layer not in params["layer"].split(): params["layer"] += (" " + hob_layer) + if hob_layer not in params["layers_non_removable"].split(): + params["layers_non_removable"] += (" " + hob_layer) params["dldir"] = self.runCommand(["getVariable", "DL_DIR"]) or "" params["machine"] = self.runCommand(["getVariable", "MACHINE"]) or "" params["distro"] = self.runCommand(["getVariable", "DISTRO"]) or "defaultsetup" diff --git a/meta-yocto/conf/bblayers.conf.sample b/meta-yocto/conf/bblayers.conf.sample index 98bfd70..7fd755d 100644 --- a/meta-yocto/conf/bblayers.conf.sample +++ b/meta-yocto/conf/bblayers.conf.sample @@ -10,3 +10,7 @@ BBLAYERS ?= " \ ##COREBASE##/meta-yocto \ ##COREBASE##/meta-yocto-bsp \ " +BBLAYERS_NON_REMOVABLE ?= " \ + ##COREBASE##/meta \ + ##COREBASE##/meta-yocto \ + "