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
"""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)
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)
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
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':