summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--scripts/lib/devtool/__init__.py26
-rw-r--r--scripts/lib/devtool/build.py4
2 files changed, 23 insertions, 7 deletions
diff --git a/scripts/lib/devtool/__init__.py b/scripts/lib/devtool/__init__.py
index 253e4d5e35..0405d22874 100644
--- a/scripts/lib/devtool/__init__.py
+++ b/scripts/lib/devtool/__init__.py
@@ -146,19 +146,35 @@ def parse_recipe(config, tinfoil, pn, appends):
return oe.recipeutils.parse_recipe(recipefile, append_files,
tinfoil.config_data)
-def check_workspace_recipe(workspace, pn, checksrc=True):
+def check_workspace_recipe(workspace, pn, checksrc=True, bbclassextend=False):
"""
Check that a recipe is in the workspace and (optionally) that source
is present.
"""
- if not pn in workspace:
+
+ workspacepn = pn
+
+ for recipe, value in workspace.iteritems():
+ if recipe == pn:
+ break
+ if bbclassextend:
+ recipefile = value['recipefile']
+ if recipefile:
+ targets = get_bbclassextend_targets(recipefile, recipe)
+ if pn in targets:
+ workspacepn = recipe
+ break
+ else:
raise DevtoolError("No recipe named '%s' in your workspace" % pn)
+
if checksrc:
- srctree = workspace[pn]['srctree']
+ srctree = workspace[workspacepn]['srctree']
if not os.path.exists(srctree):
- raise DevtoolError("Source tree %s for recipe %s does not exist" % (srctree, pn))
+ raise DevtoolError("Source tree %s for recipe %s does not exist" % (srctree, workspacepn))
if not os.listdir(srctree):
- raise DevtoolError("Source tree %s for recipe %s is empty" % (srctree, pn))
+ raise DevtoolError("Source tree %s for recipe %s is empty" % (srctree, workspacepn))
+
+ return workspacepn
def use_external_build(same_dir, no_same_dir, d):
"""
diff --git a/scripts/lib/devtool/build.py b/scripts/lib/devtool/build.py
index a9a077882c..c4c0c9f50f 100644
--- a/scripts/lib/devtool/build.py
+++ b/scripts/lib/devtool/build.py
@@ -51,11 +51,11 @@ def _get_build_task(config):
def build(args, config, basepath, workspace):
"""Entry point for the devtool 'build' subcommand"""
- check_workspace_recipe(workspace, args.recipename)
+ workspacepn = check_workspace_recipe(workspace, args.recipename, bbclassextend=True)
build_task = _get_build_task(config)
- bbappend = workspace[args.recipename]['bbappend']
+ bbappend = workspace[workspacepn]['bbappend']
if args.disable_parallel_make:
logger.info("Disabling 'make' parallelism")
_set_file_values(bbappend, {'PARALLEL_MAKE': ''})