diff options
| author | Paul Eggleton <paul.eggleton@linux.intel.com> | 2015-11-23 10:14:44 +1300 | 
|---|---|---|
| committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2015-12-01 21:30:54 +0000 | 
| commit | 8b8f04226ebf464fa61c05ca7af7c6cbda392339 (patch) | |
| tree | 4a96bb23c56007e6762d6c6f2b6f53fd80bd1019 | |
| parent | 65354e066f87df7d3138adceb22d6a05d1685904 (diff) | |
| download | openembedded-core-8b8f04226ebf464fa61c05ca7af7c6cbda392339.tar.gz openembedded-core-8b8f04226ebf464fa61c05ca7af7c6cbda392339.tar.bz2 openembedded-core-8b8f04226ebf464fa61c05ca7af7c6cbda392339.zip | |
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
Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
| -rw-r--r-- | scripts/lib/devtool/upgrade.py | 34 | 
1 files changed, 20 insertions, 14 deletions
| diff --git a/scripts/lib/devtool/upgrade.py b/scripts/lib/devtool/upgrade.py index 5410c9dd02..14eff665b6 100644 --- a/scripts/lib/devtool/upgrade.py +++ b/scripts/lib/devtool/upgrade.py @@ -91,15 +91,13 @@ def _remove_patch_dirs(recipefolder):          for d in dirs:              shutil.rmtree(os.path.join(root,d)) -def _recipe_contains(rf, var): -    import re -    found = False -    with open(rf) as f: -        for line in f: -            if re.match("^%s.*=.*" % var, line): -                found = True -                break -    return found +def _recipe_contains(rd, var): +    rf = rd.getVar('FILE', True) +    varfiles = oe.recipeutils.get_var_files(rf, [var], rd) +    for var, fn in varfiles.iteritems(): +        if fn and fn.startswith(os.path.dirname(rf) + os.sep): +            return True +    return False  def _rename_recipe_dirs(oldpv, newpv, path):      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      return (rev, md5, sha256) -def _create_new_recipe(newpv, md5, sha256, workspace, rd): +def _create_new_recipe(newpv, md5, sha256, srcrev, workspace, tinfoil, rd):      """Creates the new recipe under workspace"""      crd = rd.createCopy() @@ -271,8 +269,16 @@ def _create_new_recipe(newpv, md5, sha256, workspace, rd):          newpv = oldpv      fullpath = _rename_recipe_files(bpn, oldpv, newpv, path) -    if _recipe_contains(fullpath, 'PV') and newpv != oldpv: -        oe.recipeutils.patch_recipe(d, fullpath, {'PV':newpv}) +    newvalues = {} +    if _recipe_contains(rd, 'PV') and newpv != oldpv: +        newvalues['PV'] = newpv + +    if srcrev: +        newvalues['SRCREV'] = srcrev + +    if newvalues: +        rd = oe.recipeutils.parse_recipe(fullpath, None, tinfoil.config_data) +        oe.recipeutils.patch_recipe(rd, fullpath, newvalues)      if md5 and sha256:          # Unfortunately, oe.recipeutils.patch_recipe cannot update flags. @@ -294,7 +300,7 @@ def upgrade(args, config, basepath, workspace):      if reason:          raise DevtoolError(reason) -    tinfoil = setup_tinfoil(basepath=basepath) +    tinfoil = setup_tinfoil(basepath=basepath, tracking=True)      rd = parse_recipe(config, tinfoil, args.recipename, True)      if not rd: @@ -316,7 +322,7 @@ def upgrade(args, config, basepath, workspace):          rev2, md5, sha256 = _extract_new_source(args.version, args.srctree, args.no_patch,                                                  args.srcrev, args.branch, args.keep_temp,                                                  tinfoil, rd) -        rf = _create_new_recipe(args.version, md5, sha256, config.workspace_path, rd) +        rf = _create_new_recipe(args.version, md5, sha256, args.srcrev, config.workspace_path, tinfoil, rd)      except bb.process.CmdError as e:          _upgrade_error(e, rf, args.srctree)      except DevtoolError as e: | 
