summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--meta/lib/oe/recipeutils.py6
-rw-r--r--scripts/lib/devtool/standard.py35
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):
44 return taskdata.get_reasons(pn) 44 return taskdata.get_reasons(pn)
45 45
46 46
47def parse_recipe(fn, d): 47def parse_recipe(fn, appends, d):
48 """Parse an individual recipe""" 48 """Parse an individual recipe"""
49 import bb.cache 49 import bb.cache
50 envdata = bb.cache.Cache.loadDataFull(fn, [], d) 50 envdata = bb.cache.Cache.loadDataFull(fn, appends, d)
51 return envdata 51 return envdata
52 52
53 53
@@ -55,7 +55,7 @@ def get_var_files(fn, varlist, d):
55 """Find the file in which each of a list of variables is set. 55 """Find the file in which each of a list of variables is set.
56 Note: requires variable history to be enabled when parsing. 56 Note: requires variable history to be enabled when parsing.
57 """ 57 """
58 envdata = parse_recipe(fn, d) 58 envdata = parse_recipe(fn, [], d)
59 varfiles = {} 59 varfiles = {}
60 for v in varlist: 60 for v in varlist:
61 history = envdata.varhistory.variable(v) 61 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):
130 logger.error("Unable to find any recipe file matching %s" % pn) 130 logger.error("Unable to find any recipe file matching %s" % pn)
131 return recipefile 131 return recipefile
132 132
133def _parse_recipe(config, tinfoil, pn, appends):
134 """Parse recipe of a package"""
135 import oe.recipeutils
136 recipefile = _get_recipe_file(tinfoil.cooker, pn)
137 if not recipefile:
138 # Error already logged
139 return None
140 if appends:
141 append_files = tinfoil.cooker.collection.get_file_appends(recipefile)
142 # Filter out appends from the workspace
143 append_files = [path for path in append_files if
144 not path.startswith(config.workspace_path)]
145 return oe.recipeutils.parse_recipe(recipefile, append_files,
146 tinfoil.config_data)
133 147
134def extract(args, config, basepath, workspace): 148def extract(args, config, basepath, workspace):
135 import bb 149 import bb
136 import oe.recipeutils
137 150
138 tinfoil = setup_tinfoil() 151 tinfoil = setup_tinfoil()
139 152
140 recipefile = _get_recipe_file(tinfoil.cooker, args.recipename) 153 rd = _parse_recipe(config, tinfoil, args.recipename, True)
141 if not recipefile: 154 if not rd:
142 # Error already logged
143 return -1 155 return -1
144 rd = oe.recipeutils.parse_recipe(recipefile, tinfoil.config_data)
145 156
146 srctree = os.path.abspath(args.srctree) 157 srctree = os.path.abspath(args.srctree)
147 initial_rev = _extract_source(srctree, args.keep_temp, args.branch, rd) 158 initial_rev = _extract_source(srctree, args.keep_temp, args.branch, rd)
@@ -327,11 +338,10 @@ def modify(args, config, basepath, workspace):
327 338
328 tinfoil = setup_tinfoil() 339 tinfoil = setup_tinfoil()
329 340
330 recipefile = _get_recipe_file(tinfoil.cooker, args.recipename) 341 rd = _parse_recipe(config, tinfoil, args.recipename, True)
331 if not recipefile: 342 if not rd:
332 # Error already logged
333 return -1 343 return -1
334 rd = oe.recipeutils.parse_recipe(recipefile, tinfoil.config_data) 344 recipefile = rd.getVar('FILE', True)
335 345
336 if not _check_compatible_recipe(args.recipename, rd): 346 if not _check_compatible_recipe(args.recipename, rd):
337 return -1 347 return -1
@@ -428,11 +438,10 @@ def update_recipe(args, config, basepath, workspace):
428 from oe.patch import GitApplyTree 438 from oe.patch import GitApplyTree
429 import oe.recipeutils 439 import oe.recipeutils
430 440
431 recipefile = _get_recipe_file(tinfoil.cooker, args.recipename) 441 rd = _parse_recipe(config, tinfoil, args.recipename, True)
432 if not recipefile: 442 if not rd:
433 # Error already logged
434 return -1 443 return -1
435 rd = oe.recipeutils.parse_recipe(recipefile, tinfoil.config_data) 444 recipefile = rd.getVar('FILE', True)
436 445
437 orig_src_uri = rd.getVar('SRC_URI', False) or '' 446 orig_src_uri = rd.getVar('SRC_URI', False) or ''
438 if args.mode == 'auto': 447 if args.mode == 'auto':