diff options
| author | Paul Eggleton <paul.eggleton@linux.intel.com> | 2016-07-14 09:04:23 +1200 | 
|---|---|---|
| committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2016-07-20 10:24:53 +0100 | 
| commit | 5067cdc73483b53d46d9bf584723e41957c7ec54 (patch) | |
| tree | 22a8baf44e0f643949a471a70d5069896d078fba /scripts/lib/devtool | |
| parent | b8d398516556eaf97679e28ad58448f570984b52 (diff) | |
| download | openembedded-core-5067cdc73483b53d46d9bf584723e41957c7ec54.tar.gz openembedded-core-5067cdc73483b53d46d9bf584723e41957c7ec54.tar.bz2 openembedded-core-5067cdc73483b53d46d9bf584723e41957c7ec54.zip | |
devtool: update-recipe: refactor to allow calling separately
This will be called by "devtool finish" to allow it to update the recipe
or create the bbappend depending on the destination.
Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Diffstat (limited to 'scripts/lib/devtool')
| -rw-r--r-- | scripts/lib/devtool/standard.py | 56 | 
1 files changed, 29 insertions, 27 deletions
| diff --git a/scripts/lib/devtool/standard.py b/scripts/lib/devtool/standard.py index 769c3ce592..5a5995f664 100644 --- a/scripts/lib/devtool/standard.py +++ b/scripts/lib/devtool/standard.py @@ -876,10 +876,10 @@ def _remove_file_entries(srcuri, filelist):                  break      return entries, remaining -def _remove_source_files(args, files, destpath): +def _remove_source_files(append, files, destpath):      """Unlink existing patch files"""      for path in files: -        if args.append: +        if append:              if not destpath:                  raise Exception('destpath should be set here')              path = os.path.join(destpath, os.path.basename(path)) @@ -1055,7 +1055,7 @@ def _determine_files_dir(rd):      return os.path.join(recipedir, rd.getVar('BPN', True)) -def _update_recipe_srcrev(args, srctree, rd, config_data): +def _update_recipe_srcrev(srctree, rd, appendlayerdir, wildcard_version, no_remove):      """Implement the 'srcrev' mode of update-recipe"""      import bb      import oe.recipeutils @@ -1084,7 +1084,7 @@ def _update_recipe_srcrev(args, srctree, rd, config_data):      try:          local_files_dir = tempfile.mkdtemp(dir=tempdir)          upd_f, new_f, del_f = _export_local_files(srctree, rd, local_files_dir) -        if not args.no_remove: +        if not no_remove:              # Find list of existing patches in recipe file              patches_dir = tempfile.mkdtemp(dir=tempdir)              old_srcrev = (rd.getVar('SRCREV', False) or '') @@ -1097,7 +1097,7 @@ def _update_recipe_srcrev(args, srctree, rd, config_data):                  removedentries = _remove_file_entries(srcuri, remove_files)[0]                  update_srcuri = True -        if args.append: +        if appendlayerdir:              files = dict((os.path.join(local_files_dir, key), val) for                            key, val in list(upd_f.items()) + list(new_f.items()))              removevalues = {} @@ -1105,7 +1105,7 @@ def _update_recipe_srcrev(args, srctree, rd, config_data):                  removevalues  = {'SRC_URI': removedentries}                  patchfields['SRC_URI'] = '\\\n    '.join(srcuri)              _, destpath = oe.recipeutils.bbappend_recipe( -                    rd, args.append, files, wildcardver=args.wildcard_version, +                    rd, appendlayerdir, files, wildcardver=wildcard_version,                      extralines=patchfields, removevalues=removevalues)          else:              files_dir = _determine_files_dir(rd) @@ -1129,21 +1129,21 @@ def _update_recipe_srcrev(args, srctree, rd, config_data):                      'point to a git repository where you have pushed your '                      'changes') -    _remove_source_files(args, remove_files, destpath) +    _remove_source_files(appendlayerdir, remove_files, destpath)      return True -def _update_recipe_patch(args, config, workspace, srctree, rd, config_data): +def _update_recipe_patch(recipename, workspace, srctree, rd, appendlayerdir, wildcard_version, no_remove, initial_rev):      """Implement the 'patch' mode of update-recipe"""      import bb      import oe.recipeutils      recipefile = rd.getVar('FILE', True) -    append = workspace[args.recipename]['bbappend'] +    append = workspace[recipename]['bbappend']      if not os.path.exists(append):          raise DevtoolError('unable to find workspace bbappend for recipe %s' % -                           args.recipename) +                           recipename) -    initial_rev, update_rev, changed_revs = _get_patchset_revs(srctree, append, args.initial_rev) +    initial_rev, update_rev, changed_revs = _get_patchset_revs(srctree, append, initial_rev)      if not initial_rev:          raise DevtoolError('Unable to find initial revision - please specify '                             'it with --initial-rev') @@ -1154,7 +1154,7 @@ def _update_recipe_patch(args, config, workspace, srctree, rd, config_data):          upd_f, new_f, del_f = _export_local_files(srctree, rd, local_files_dir)          remove_files = [] -        if not args.no_remove: +        if not no_remove:              # Get all patches from source tree and check if any should be removed              all_patches_dir = tempfile.mkdtemp(dir=tempdir)              upd_p, new_p, del_p = _export_patches(srctree, rd, initial_rev, @@ -1170,7 +1170,7 @@ def _update_recipe_patch(args, config, workspace, srctree, rd, config_data):          updaterecipe = False          destpath = None          srcuri = (rd.getVar('SRC_URI', False) or '').split() -        if args.append: +        if appendlayerdir:              files = dict((os.path.join(local_files_dir, key), val) for                           key, val in list(upd_f.items()) + list(new_f.items()))              files.update(dict((os.path.join(patches_dir, key), val) for @@ -1185,7 +1185,7 @@ def _update_recipe_patch(args, config, workspace, srctree, rd, config_data):                                       item in remaining]                          removevalues = {'SRC_URI': removedentries + remaining}                  _, destpath = oe.recipeutils.bbappend_recipe( -                                rd, args.append, files, +                                rd, appendlayerdir, files,                                  removevalues=removevalues)              else:                  logger.info('No patches or local source files needed updating') @@ -1235,7 +1235,7 @@ def _update_recipe_patch(args, config, workspace, srctree, rd, config_data):      finally:          shutil.rmtree(tempdir) -    _remove_source_files(args, remove_files, destpath) +    _remove_source_files(appendlayerdir, remove_files, destpath)      return True  def _guess_recipe_update_mode(srctree, rdata): @@ -1260,6 +1260,19 @@ def _guess_recipe_update_mode(srctree, rdata):      return 'patch' +def _update_recipe(recipename, workspace, rd, mode, appendlayerdir, wildcard_version, no_remove, initial_rev): +    srctree = workspace[recipename]['srctree'] +    if mode == 'auto': +        mode = _guess_recipe_update_mode(srctree, rd) + +    if mode == 'srcrev': +        updated = _update_recipe_srcrev(srctree, rd, appendlayerdir, wildcard_version, no_remove) +    elif mode == 'patch': +        updated = _update_recipe_patch(recipename, workspace, srctree, rd, appendlayerdir, wildcard_version, no_remove, initial_rev) +    else: +        raise DevtoolError('update_recipe: invalid mode %s' % mode) +    return updated +  def update_recipe(args, config, basepath, workspace):      """Entry point for the devtool 'update-recipe' subcommand"""      check_workspace_recipe(workspace, args.recipename) @@ -1278,18 +1291,7 @@ def update_recipe(args, config, basepath, workspace):      if not rd:          return 1 -    srctree = workspace[args.recipename]['srctree'] -    if args.mode == 'auto': -        mode = _guess_recipe_update_mode(srctree, rd) -    else: -        mode = args.mode - -    if mode == 'srcrev': -        updated = _update_recipe_srcrev(args, srctree, rd, tinfoil.config_data) -    elif mode == 'patch': -        updated = _update_recipe_patch(args, config, workspace, srctree, rd, tinfoil.config_data) -    else: -        raise DevtoolError('update_recipe: invalid mode %s' % mode) +    updated = _update_recipe(args.recipename, workspace, rd, args.mode, args.append, args.wildcard_version, args.no_remove, args.initial_rev)      if updated:          rf = rd.getVar('FILE', True) | 
