From 8b1794559dd7fd956716179d628e61cffdce1686 Mon Sep 17 00:00:00 2001 From: Markus Lehtonen Date: Mon, 27 Apr 2015 10:53:16 +0100 Subject: devtool: include bbappends in recipe parsing In order to get correct metadata, SRCREV for example. Fixes [YOCTO #7648]. Signed-off-by: Markus Lehtonen Signed-off-by: Richard Purdie --- meta/lib/oe/recipeutils.py | 6 +++--- scripts/lib/devtool/standard.py | 35 ++++++++++++++++++++++------------- 2 files changed, 25 insertions(+), 16 deletions(-) diff --git a/meta/lib/oe/recipeutils.py b/meta/lib/oe/recipeutils.py index 159a103719..09bd7fdb46 100644 --- a/meta/lib/oe/recipeutils.py +++ b/meta/lib/oe/recipeutils.py @@ -44,10 +44,10 @@ def get_unavailable_reasons(cooker, pn): return taskdata.get_reasons(pn) -def parse_recipe(fn, d): +def parse_recipe(fn, appends, d): """Parse an individual recipe""" import bb.cache - envdata = bb.cache.Cache.loadDataFull(fn, [], d) + envdata = bb.cache.Cache.loadDataFull(fn, appends, d) return envdata @@ -55,7 +55,7 @@ def get_var_files(fn, varlist, d): """Find the file in which each of a list of variables is set. Note: requires variable history to be enabled when parsing. """ - envdata = parse_recipe(fn, d) + envdata = parse_recipe(fn, [], d) varfiles = {} for v in varlist: history = envdata.varhistory.variable(v) diff --git a/scripts/lib/devtool/standard.py b/scripts/lib/devtool/standard.py index aa30a98090..faf5c92176 100644 --- a/scripts/lib/devtool/standard.py +++ b/scripts/lib/devtool/standard.py @@ -130,18 +130,29 @@ def _get_recipe_file(cooker, pn): logger.error("Unable to find any recipe file matching %s" % pn) return recipefile +def _parse_recipe(config, tinfoil, pn, appends): + """Parse recipe of a package""" + import oe.recipeutils + recipefile = _get_recipe_file(tinfoil.cooker, pn) + if not recipefile: + # Error already logged + return None + if appends: + append_files = tinfoil.cooker.collection.get_file_appends(recipefile) + # Filter out appends from the workspace + append_files = [path for path in append_files if + not path.startswith(config.workspace_path)] + return oe.recipeutils.parse_recipe(recipefile, append_files, + tinfoil.config_data) def extract(args, config, basepath, workspace): import bb - import oe.recipeutils tinfoil = setup_tinfoil() - recipefile = _get_recipe_file(tinfoil.cooker, args.recipename) - if not recipefile: - # Error already logged + rd = _parse_recipe(config, tinfoil, args.recipename, True) + if not rd: return -1 - rd = oe.recipeutils.parse_recipe(recipefile, tinfoil.config_data) srctree = os.path.abspath(args.srctree) initial_rev = _extract_source(srctree, args.keep_temp, args.branch, rd) @@ -327,11 +338,10 @@ def modify(args, config, basepath, workspace): tinfoil = setup_tinfoil() - recipefile = _get_recipe_file(tinfoil.cooker, args.recipename) - if not recipefile: - # Error already logged + rd = _parse_recipe(config, tinfoil, args.recipename, True) + if not rd: return -1 - rd = oe.recipeutils.parse_recipe(recipefile, tinfoil.config_data) + recipefile = rd.getVar('FILE', True) if not _check_compatible_recipe(args.recipename, rd): return -1 @@ -428,11 +438,10 @@ def update_recipe(args, config, basepath, workspace): from oe.patch import GitApplyTree import oe.recipeutils - recipefile = _get_recipe_file(tinfoil.cooker, args.recipename) - if not recipefile: - # Error already logged + rd = _parse_recipe(config, tinfoil, args.recipename, True) + if not rd: return -1 - rd = oe.recipeutils.parse_recipe(recipefile, tinfoil.config_data) + recipefile = rd.getVar('FILE', True) orig_src_uri = rd.getVar('SRC_URI', False) or '' if args.mode == 'auto': -- cgit 1.2.3-korg