1
0
mirror of https://git.yoctoproject.org/poky synced 2026-05-31 12:49:46 +00:00

bitbake: bitbake-layers: check layer dependencies before adding

In the original implementation, "bitbake-layers add-layers <layer>"
succeeded without error checking. This will further introduce
failures in recipe parsing only when "bitbake" command is executed.
Adding a meta layer without its dependency layer(s) should failed
and exit the process gracefully.

Added extra argument "-F" to force add a layer without checking
layer dependency.

[YOCTO #10913]

(Bitbake rev: 705ab252e631903e6d2e46202b419a9e8adcd861)

Signed-off-by: Phoong Stanley Cheong Kwan <stanley.cheong.kwan.phoong@intel.com>
Signed-off-by: Chang Rebecca Swee Fun <rebecca.swee.fun.chang@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Chang Rebecca Swee Fun
2017-06-05 16:43:55 +08:00
committed by Richard Purdie
parent 1125621b92
commit 576821ea0a
2 changed files with 23 additions and 4 deletions
+22 -4
View File
@@ -1,7 +1,9 @@
import fnmatch
import logging
import os
import shutil
import sys
import tempfile
import bb.utils
@@ -32,10 +34,26 @@ class ActionPlugin(LayerPlugin):
sys.stderr.write("Unable to find bblayers.conf\n")
return 1
notadded, _ = bb.utils.edit_bblayers_conf(bblayers_conf, layerdir, None)
if notadded:
for item in notadded:
sys.stderr.write("Specified layer %s is already in BBLAYERS\n" % item)
# Back up bblayers.conf to tempdir before we add layers
tempdir = tempfile.mkdtemp()
backup = tempdir + "/bblayers.conf.bak"
shutil.copy2(bblayers_conf, backup)
try:
notadded, _ = bb.utils.edit_bblayers_conf(bblayers_conf, layerdir, None)
if not (args.force or notadded):
try:
self.tinfoil.parseRecipes()
except bb.tinfoil.TinfoilUIException:
# Restore the back up copy of bblayers.conf
shutil.copy2(backup, bblayers_conf)
bb.fatal("Parse failure with the specified layer added")
else:
for item in notadded:
sys.stderr.write("Specified layer %s is already in BBLAYERS\n" % item)
finally:
# Remove the back up copy of bblayers.conf
shutil.rmtree(tempdir)
def do_remove_layer(self, args):
"""Remove a layer from bblayers.conf."""