Browse Source

bitbake-layers: fix error handling in add-layer / remove-layer

* Fix add-layer error message when a layer is already in BBLAYERS
* Ensure we show an error message if we can't find BBLAYERS at all

Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Paul Eggleton 9 years ago
parent
commit
1c743fd210
2 changed files with 9 additions and 1 deletions
  1. 1 1
      bin/bitbake-layers
  2. 8 0
      lib/bb/utils.py

+ 1 - 1
bin/bitbake-layers

@@ -130,7 +130,7 @@ usage: add-layer <layerdir>
         (notadded, _) = bb.utils.edit_bblayers_conf(bblayers_conf, layerdir, None)
         if notadded:
             for item in notadded:
-                sys.stderr.write("Specified layer %s not in BBLAYERS\n" % item)
+                sys.stderr.write("Specified layer %s is already in BBLAYERS\n" % item)
 
 
     def do_remove_layer(self, dirname):

+ 8 - 0
lib/bb/utils.py

@@ -1012,7 +1012,11 @@ def edit_bblayers_conf(bblayers_conf, add, remove):
     addlayers = layerlist_param(add)
     removelayers = layerlist_param(remove)
 
+    # Need to use a list here because we can't set non-local variables from a callback in python 2.x
+    bblayercalls = []
+
     def handle_bblayers(varname, origvalue):
+        bblayercalls.append(varname)
         updated = False
         bblayers = [remove_trailing_sep(x) for x in origvalue.split()]
         if removelayers:
@@ -1040,5 +1044,9 @@ def edit_bblayers_conf(bblayers_conf, add, remove):
             return (origvalue, 2, False)
 
     edit_metadata_file(bblayers_conf, ['BBLAYERS'], handle_bblayers)
+
+    if not bblayercalls:
+        raise Exception('Unable to find BBLAYERS in %s' % bblayers_conf)
+
     return (notadded, notremoved)