[bitbake-devel] [PATCH 3/7] Hob: Make layers define in bblayers.conf as default

Xu, Dongxiao dongxiao.xu at intel.com
Sat Mar 31 00:32:11 UTC 2012


On Fri, 2012-03-30 at 09:10 -0700, Joshua Lock wrote:
> 
> On 30/03/12 05:01, Dongxiao Xu wrote:
> > For layers defined in bblayers.conf, we treat them as default layers
> > and users are not allowed to remove them.
> 
> Can you explain the rationale behind this change? I see what you're 
> doing but it's not entirely clear why.
> 
> I think this is a bad idea. Early on in the design of Hob we decided we 
> didn't want configuration made for non-Hob builds to affect builds made 
> with Hob, and vice versa.

The issue I am going to solve is that, with current local.conf
(DISTRO="poky") and bblayers.conf (bblayers="meta meta-yocto"), we are
not able to delete the meta-yocto layer in Hob since it will meet
local.conf parsing error since it could not find where "poky" is
defined.

This patch is to set those layers define in bblayers.conf as default
layers and they could not be removed. For example, in Yocto Project,
"meta", "meta-yocto", and "meta-hob" are not removable. For pure OE-Core
environment, "meta" and "meta-hob" are not removable.

Thanks,
Dongxiao

> 
> Thanks,
> Joshua
> 
> >
> > Signed-off-by: Dongxiao Xu<dongxiao.xu at intel.com>
> > ---
> >   lib/bb/ui/crumbs/builder.py |    4 ++--
> >   lib/bb/ui/crumbs/hig.py     |   23 +++++++++--------------
> >   2 files changed, 11 insertions(+), 16 deletions(-)
> >
> > diff --git a/lib/bb/ui/crumbs/builder.py b/lib/bb/ui/crumbs/builder.py
> > index 44b208a..3be799c 100755
> > --- a/lib/bb/ui/crumbs/builder.py
> > +++ b/lib/bb/ui/crumbs/builder.py
> > @@ -178,7 +178,7 @@ class Parameters:
> >           self.all_distros = []
> >           self.all_sdk_machines = []
> >           self.max_threads = params["max_threads"]
> > -        self.all_layers = []
> > +        self.layers_default = params["layer"].split()
> >           self.core_base = params["core_base"]
> >           self.image_names = []
> >           self.image_addr = params["image_addr"]
> > @@ -764,7 +764,7 @@ class Builder(gtk.Window):
> >       def show_layer_selection_dialog(self):
> >           dialog = LayerSelectionDialog(title = "Layers",
> >                        layers = copy.deepcopy(self.configuration.layers),
> > -                     all_layers = self.parameters.all_layers,
> > +                     layers_default = self.parameters.layers_default,
> >                        parent = self,
> >                        flags = gtk.DIALOG_MODAL
> >                            | gtk.DIALOG_DESTROY_WITH_PARENT
> > diff --git a/lib/bb/ui/crumbs/hig.py b/lib/bb/ui/crumbs/hig.py
> > index 9adb281..9a38bc0 100644
> > --- a/lib/bb/ui/crumbs/hig.py
> > +++ b/lib/bb/ui/crumbs/hig.py
> > @@ -850,7 +850,7 @@ class LayerSelectionDialog (CrumbsDialog):
> >               layer_store.remove(iter)
> >
> >
> > -    def gen_layer_widget(self, layers, layers_avail, window, tooltip=""):
> > +    def gen_layer_widget(self, layers, layers_default, window, tooltip=""):
> >           hbox = gtk.HBox(False, 6)
> >
> >           layer_tv = gtk.TreeView()
> > @@ -881,8 +881,8 @@ class LayerSelectionDialog (CrumbsDialog):
> >           for layer in layers:
> >               if layer.endswith("/meta"):
> >                   core_iter = layer_store.prepend([layer])
> > -            elif layer.endswith("/meta-hob") and core_iter:
> > -                layer_store.insert_after(core_iter, [layer])
> > +            elif layer in layers_default:
> > +                core_iter = layer_store.insert_after(core_iter, [layer])
> >               else:
> >                   layer_store.append([layer])
> >
> > @@ -924,12 +924,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_default, parent, flags, buttons=None):
> >           super(LayerSelectionDialog, self).__init__(title, parent, flags, buttons)
> >
> >           # class members from other objects
> >           self.layers = layers
> > -        self.all_layers = all_layers
> > +        self.layers_default = layers_default
> >           self.layers_changed = False
> >
> >           # icon for remove button in TreeView
> > @@ -945,7 +945,7 @@ class LayerSelectionDialog (CrumbsDialog):
> >           self.connect("response", self.response_cb)
> >
> >       def create_visual_elements(self):
> > -        layer_widget, self.layer_store = self.gen_layer_widget(self.layers, self.all_layers, self, None)
> > +        layer_widget, self.layer_store = self.gen_layer_widget(self.layers, self.layers_default, self, None)
> >           layer_widget.set_size_request(450, 250)
> >           self.vbox.pack_start(layer_widget, expand=True, fill=True)
> >           self.show_all()
> > @@ -972,9 +972,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_default:
> >               cell.set_sensitive(False)
> >               cell.set_property('pixbuf', None)
> >               cell.set_property('mode', gtk.CELL_RENDERER_MODE_INERT)
> > @@ -992,11 +990,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', "<b>Core layer for images: it cannot be removed</b>\n%s" % path)
> > -        elif name == "meta-hob":
> > -            cell.set_property('markup', "<b>Core layer for Hob: it cannot be removed</b>\n%s" % path)
> > +        if path in self.layers_default:
> > +            cell.set_property('markup', "<b>Core layer: it cannot be removed</b>\n%s" % path)
> >           else:
> >               cell.set_property('text', path)
> >
> 






More information about the bitbake-devel mailing list