devtool: include bbappends in recipe parsing

In order to get correct metadata, SRCREV for example.

Fixes [YOCTO #7648].

(From OE-Core rev: 8b1794559dd7fd956716179d628e61cffdce1686)

Signed-off-by: Markus Lehtonen <markus.lehtonen@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Markus Lehtonen
2015-04-27 10:53:16 +01:00
committed by Richard Purdie
parent a8c7558c76
commit ca1f4d7279
2 changed files with 25 additions and 16 deletions

View File

@@ -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)

View File

@@ -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':