summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul Eggleton <paul.eggleton@linux.intel.com>2016-05-30 10:20:56 +1200
committerRichard Purdie <richard.purdie@linuxfoundation.org>2016-06-01 12:38:41 +0100
commitc93602c2ac2e1cec8317069075e23ba6c3293fab (patch)
tree6b2db2b8609fcefb955df06342964a83fd6762a8
parentfcc2c3c4b3ca08528722442c90acd27e89291405 (diff)
downloadpoky-c93602c2ac2e1cec8317069075e23ba6c3293fab.tar.gz
lib/oe/recipeutils: split out patch_recipe_lines()
Split out a function from patch_recipe_file() that takes just the lines as input so we can edit recipe lines in memory. This will be used within recipetool to ensure we insert new values in the right place. (From OE-Core rev: d780642f950fb3a9699f466a405a2710d870dd08) Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r--meta/lib/oe/recipeutils.py23
1 files changed, 18 insertions, 5 deletions
diff --git a/meta/lib/oe/recipeutils.py b/meta/lib/oe/recipeutils.py
index 6c7adb5bdb..ef827550eb 100644
--- a/meta/lib/oe/recipeutils.py
+++ b/meta/lib/oe/recipeutils.py
@@ -158,9 +158,8 @@ def split_var_value(value, assignment=True):
158 return outlist 158 return outlist
159 159
160 160
161def patch_recipe_file(fn, values, patch=False, relpath=''): 161def patch_recipe_lines(fromlines, values):
162 """Update or insert variable values into a recipe file (assuming you 162 """Update or insert variable values into lines from a recipe.
163 have already identified the exact file you want to update.)
164 Note that some manual inspection/intervention may be required 163 Note that some manual inspection/intervention may be required
165 since this cannot handle all situations. 164 since this cannot handle all situations.
166 """ 165 """
@@ -247,8 +246,7 @@ def patch_recipe_file(fn, values, patch=False, relpath=''):
247 246
248 # First run - establish which values we want to set are already in the file 247 # First run - establish which values we want to set are already in the file
249 varlist = [re.escape(item) for item in values.keys()] 248 varlist = [re.escape(item) for item in values.keys()]
250 with open(fn, 'r') as f: 249 bb.utils.edit_metadata(fromlines, varlist, patch_recipe_varfunc)
251 changed, fromlines = bb.utils.edit_metadata(f, varlist, patch_recipe_varfunc)
252 # Second run - actually set everything 250 # Second run - actually set everything
253 modifying = True 251 modifying = True
254 varlist.extend(recipe_progression_restrs) 252 varlist.extend(recipe_progression_restrs)
@@ -260,6 +258,21 @@ def patch_recipe_file(fn, values, patch=False, relpath=''):
260 for k in remainingnames.keys(): 258 for k in remainingnames.keys():
261 outputvalue(k, tolines) 259 outputvalue(k, tolines)
262 260
261 return changed, tolines
262
263
264def patch_recipe_file(fn, values, patch=False, relpath=''):
265 """Update or insert variable values into a recipe file (assuming you
266 have already identified the exact file you want to update.)
267 Note that some manual inspection/intervention may be required
268 since this cannot handle all situations.
269 """
270
271 with open(fn, 'r') as f:
272 fromlines = f.readlines()
273
274 _, tolines = patch_recipe_lines(fromlines, values)
275
263 if patch: 276 if patch:
264 relfn = os.path.relpath(fn, relpath) 277 relfn = os.path.relpath(fn, relpath)
265 diff = difflib.unified_diff(fromlines, tolines, 'a/%s' % relfn, 'b/%s' % relfn) 278 diff = difflib.unified_diff(fromlines, tolines, 'a/%s' % relfn, 'b/%s' % relfn)