summaryrefslogtreecommitdiffstats
path: root/bitbake
diff options
context:
space:
mode:
authorPaul Eggleton <paul.eggleton@linux.intel.com>2017-11-08 15:17:06 +1300
committerRichard Purdie <richard.purdie@linuxfoundation.org>2017-11-21 13:06:45 +0000
commit2a9a6465ba04b6f0dd76a952e1b977e47668703a (patch)
treefa2a6e029e0fb77679dbdb7867f701dbba58e3c0 /bitbake
parentb77321ab244b374a1dc8e1ac020d7565c11b8eae (diff)
downloadpoky-2a9a6465ba04b6f0dd76a952e1b977e47668703a.tar.gz
bitbake: bitbake-layers: add-layer: enable adding multiple layers at once
Allow specifying multiple layers with bitbake-layers add-layer so that you can add more than one in a single command. This is not just useful, it's actually pretty important if you need to add a layer and its dependencies at the same time - since we now go through a parse process when the layer is added, without this you have to add them all in just the right order and wait for the parse each time which is somewhat painful. (Bitbake rev: ad6b14f01aa326a1c6baa31bfac33be238bce805) Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'bitbake')
-rw-r--r--bitbake/lib/bblayers/action.py24
1 files changed, 13 insertions, 11 deletions
diff --git a/bitbake/lib/bblayers/action.py b/bitbake/lib/bblayers/action.py
index b1326e5f53..a421380657 100644
--- a/bitbake/lib/bblayers/action.py
+++ b/bitbake/lib/bblayers/action.py
@@ -18,16 +18,18 @@ def plugin_init(plugins):
18 18
19class ActionPlugin(LayerPlugin): 19class ActionPlugin(LayerPlugin):
20 def do_add_layer(self, args): 20 def do_add_layer(self, args):
21 """Add a layer to bblayers.conf.""" 21 """Add one or more layers to bblayers.conf."""
22 layerdir = os.path.abspath(args.layerdir) 22 layerdirs = [os.path.abspath(ldir) for ldir in args.layerdir]
23 if not os.path.exists(layerdir):
24 sys.stderr.write("Specified layer directory doesn't exist\n")
25 return 1
26 23
27 layer_conf = os.path.join(layerdir, 'conf', 'layer.conf') 24 for layerdir in layerdirs:
28 if not os.path.exists(layer_conf): 25 if not os.path.exists(layerdir):
29 sys.stderr.write("Specified layer directory doesn't contain a conf/layer.conf file\n") 26 sys.stderr.write("Specified layer directory %s doesn't exist\n" % layerdir)
30 return 1 27 return 1
28
29 layer_conf = os.path.join(layerdir, 'conf', 'layer.conf')
30 if not os.path.exists(layer_conf):
31 sys.stderr.write("Specified layer directory %s doesn't contain a conf/layer.conf file\n" % layerdir)
32 return 1
31 33
32 bblayers_conf = os.path.join('conf', 'bblayers.conf') 34 bblayers_conf = os.path.join('conf', 'bblayers.conf')
33 if not os.path.exists(bblayers_conf): 35 if not os.path.exists(bblayers_conf):
@@ -40,7 +42,7 @@ class ActionPlugin(LayerPlugin):
40 shutil.copy2(bblayers_conf, backup) 42 shutil.copy2(bblayers_conf, backup)
41 43
42 try: 44 try:
43 notadded, _ = bb.utils.edit_bblayers_conf(bblayers_conf, layerdir, None) 45 notadded, _ = bb.utils.edit_bblayers_conf(bblayers_conf, layerdirs, None)
44 if not (args.force or notadded): 46 if not (args.force or notadded):
45 try: 47 try:
46 self.tinfoil.parseRecipes() 48 self.tinfoil.parseRecipes()
@@ -240,7 +242,7 @@ build results (as the layer priority order has effectively changed).
240 242
241 def register_commands(self, sp): 243 def register_commands(self, sp):
242 parser_add_layer = self.add_command(sp, 'add-layer', self.do_add_layer, parserecipes=False) 244 parser_add_layer = self.add_command(sp, 'add-layer', self.do_add_layer, parserecipes=False)
243 parser_add_layer.add_argument('layerdir', help='Layer directory to add') 245 parser_add_layer.add_argument('layerdir', nargs='+', help='Layer directory/directories to add')
244 246
245 parser_remove_layer = self.add_command(sp, 'remove-layer', self.do_remove_layer, parserecipes=False) 247 parser_remove_layer = self.add_command(sp, 'remove-layer', self.do_remove_layer, parserecipes=False)
246 parser_remove_layer.add_argument('layerdir', help='Layer directory to remove (wildcards allowed, enclose in quotes to avoid shell expansion)') 248 parser_remove_layer.add_argument('layerdir', help='Layer directory to remove (wildcards allowed, enclose in quotes to avoid shell expansion)')