summaryrefslogtreecommitdiffstats
path: root/scripts
diff options
context:
space:
mode:
authorPaul Eggleton <paul.eggleton@linux.intel.com>2015-11-22 21:14:44 (GMT)
committerRichard Purdie <richard.purdie@linuxfoundation.org>2015-12-01 21:32:03 (GMT)
commit9a704441b7a40e93626af606cb51c282a8f66850 (patch)
tree251784f36ee3e0299054c2aa74424b9e456079f8 /scripts
parent6a52c738ba0734f0f37b45af7e6836b2fe06fe8a (diff)
downloadpoky-9a704441b7a40e93626af606cb51c282a8f66850.tar.gz
devtool: upgrade: fix updating PV and SRCREV
This code was clearly never tested. Fix the following issues: * Actually set SRCREV if it's been specified * Enable history tracking and reparse so that we handle if variables are set in an inc file next to the recipe * Use a more accurate check for PV being in the recipe which will work if it's in an inc file next to the recipe (From OE-Core rev: 8b8f04226ebf464fa61c05ca7af7c6cbda392339) Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'scripts')
-rw-r--r--scripts/lib/devtool/upgrade.py34
1 files changed, 20 insertions, 14 deletions
diff --git a/scripts/lib/devtool/upgrade.py b/scripts/lib/devtool/upgrade.py
index 5410c9d..14eff66 100644
--- a/scripts/lib/devtool/upgrade.py
+++ b/scripts/lib/devtool/upgrade.py
@@ -91,15 +91,13 @@ def _remove_patch_dirs(recipefolder):
91 for d in dirs: 91 for d in dirs:
92 shutil.rmtree(os.path.join(root,d)) 92 shutil.rmtree(os.path.join(root,d))
93 93
94def _recipe_contains(rf, var): 94def _recipe_contains(rd, var):
95 import re 95 rf = rd.getVar('FILE', True)
96 found = False 96 varfiles = oe.recipeutils.get_var_files(rf, [var], rd)
97 with open(rf) as f: 97 for var, fn in varfiles.iteritems():
98 for line in f: 98 if fn and fn.startswith(os.path.dirname(rf) + os.sep):
99 if re.match("^%s.*=.*" % var, line): 99 return True
100 found = True 100 return False
101 break
102 return found
103 101
104def _rename_recipe_dirs(oldpv, newpv, path): 102def _rename_recipe_dirs(oldpv, newpv, path):
105 for root, dirs, files in os.walk(path): 103 for root, dirs, files in os.walk(path):
@@ -257,7 +255,7 @@ def _extract_new_source(newpv, srctree, no_patch, srcrev, branch, keep_temp, tin
257 255
258 return (rev, md5, sha256) 256 return (rev, md5, sha256)
259 257
260def _create_new_recipe(newpv, md5, sha256, workspace, rd): 258def _create_new_recipe(newpv, md5, sha256, srcrev, workspace, tinfoil, rd):
261 """Creates the new recipe under workspace""" 259 """Creates the new recipe under workspace"""
262 crd = rd.createCopy() 260 crd = rd.createCopy()
263 261
@@ -271,8 +269,16 @@ def _create_new_recipe(newpv, md5, sha256, workspace, rd):
271 newpv = oldpv 269 newpv = oldpv
272 fullpath = _rename_recipe_files(bpn, oldpv, newpv, path) 270 fullpath = _rename_recipe_files(bpn, oldpv, newpv, path)
273 271
274 if _recipe_contains(fullpath, 'PV') and newpv != oldpv: 272 newvalues = {}
275 oe.recipeutils.patch_recipe(d, fullpath, {'PV':newpv}) 273 if _recipe_contains(rd, 'PV') and newpv != oldpv:
274 newvalues['PV'] = newpv
275
276 if srcrev:
277 newvalues['SRCREV'] = srcrev
278
279 if newvalues:
280 rd = oe.recipeutils.parse_recipe(fullpath, None, tinfoil.config_data)
281 oe.recipeutils.patch_recipe(rd, fullpath, newvalues)
276 282
277 if md5 and sha256: 283 if md5 and sha256:
278 # Unfortunately, oe.recipeutils.patch_recipe cannot update flags. 284 # Unfortunately, oe.recipeutils.patch_recipe cannot update flags.
@@ -294,7 +300,7 @@ def upgrade(args, config, basepath, workspace):
294 if reason: 300 if reason:
295 raise DevtoolError(reason) 301 raise DevtoolError(reason)
296 302
297 tinfoil = setup_tinfoil(basepath=basepath) 303 tinfoil = setup_tinfoil(basepath=basepath, tracking=True)
298 304
299 rd = parse_recipe(config, tinfoil, args.recipename, True) 305 rd = parse_recipe(config, tinfoil, args.recipename, True)
300 if not rd: 306 if not rd:
@@ -316,7 +322,7 @@ def upgrade(args, config, basepath, workspace):
316 rev2, md5, sha256 = _extract_new_source(args.version, args.srctree, args.no_patch, 322 rev2, md5, sha256 = _extract_new_source(args.version, args.srctree, args.no_patch,
317 args.srcrev, args.branch, args.keep_temp, 323 args.srcrev, args.branch, args.keep_temp,
318 tinfoil, rd) 324 tinfoil, rd)
319 rf = _create_new_recipe(args.version, md5, sha256, config.workspace_path, rd) 325 rf = _create_new_recipe(args.version, md5, sha256, args.srcrev, config.workspace_path, tinfoil, rd)
320 except bb.process.CmdError as e: 326 except bb.process.CmdError as e:
321 _upgrade_error(e, rf, args.srctree) 327 _upgrade_error(e, rf, args.srctree)
322 except DevtoolError as e: 328 except DevtoolError as e: