diff options
author | Paul Eggleton <paul.eggleton@linux.intel.com> | 2016-07-14 09:04:24 +1200 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2016-07-20 10:28:49 +0100 |
commit | 10a5af5eb4f928abe1fe12e63520f656b682d55d (patch) | |
tree | ad1a9258b7b67cf56c6afda20314e3bafdd1f3f5 | |
parent | 7af3295b0b2eb65e8f541f358c3091918db65ab9 (diff) | |
download | poky-10a5af5eb4f928abe1fe12e63520f656b682d55d.tar.gz |
devtool: upgrade: record original recipe files
This provides us with the information we need to remove the original
version recipe and associated files when running "devtool finish" after
"devtool upgrade".
(From OE-Core rev: 92eb42c347af919cd9f8739515fdf806c12b5ba8)
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>
-rw-r--r-- | meta/lib/oe/recipeutils.py | 4 | ||||
-rw-r--r-- | scripts/lib/devtool/upgrade.py | 16 |
2 files changed, 13 insertions, 7 deletions
diff --git a/meta/lib/oe/recipeutils.py b/meta/lib/oe/recipeutils.py index cb4ed53d0f..b8d481aeb8 100644 --- a/meta/lib/oe/recipeutils.py +++ b/meta/lib/oe/recipeutils.py | |||
@@ -365,6 +365,7 @@ def copy_recipe_files(d, tgt_dir, whole_dir=False, download=True): | |||
365 | # Copy local files to target directory and gather any remote files | 365 | # Copy local files to target directory and gather any remote files |
366 | bb_dir = os.path.dirname(d.getVar('FILE', True)) + os.sep | 366 | bb_dir = os.path.dirname(d.getVar('FILE', True)) + os.sep |
367 | remotes = [] | 367 | remotes = [] |
368 | copied = [] | ||
368 | includes = [path for path in d.getVar('BBINCLUDED', True).split() if | 369 | includes = [path for path in d.getVar('BBINCLUDED', True).split() if |
369 | path.startswith(bb_dir) and os.path.exists(path)] | 370 | path.startswith(bb_dir) and os.path.exists(path)] |
370 | for path in fetch.localpaths() + includes: | 371 | for path in fetch.localpaths() + includes: |
@@ -376,13 +377,14 @@ def copy_recipe_files(d, tgt_dir, whole_dir=False, download=True): | |||
376 | if not os.path.exists(subdir): | 377 | if not os.path.exists(subdir): |
377 | os.makedirs(subdir) | 378 | os.makedirs(subdir) |
378 | shutil.copy2(path, os.path.join(tgt_dir, relpath)) | 379 | shutil.copy2(path, os.path.join(tgt_dir, relpath)) |
380 | copied.append(relpath) | ||
379 | else: | 381 | else: |
380 | remotes.append(path) | 382 | remotes.append(path) |
381 | # Simply copy whole meta dir, if requested | 383 | # Simply copy whole meta dir, if requested |
382 | if whole_dir: | 384 | if whole_dir: |
383 | shutil.copytree(bb_dir, tgt_dir) | 385 | shutil.copytree(bb_dir, tgt_dir) |
384 | 386 | ||
385 | return remotes | 387 | return copied, remotes |
386 | 388 | ||
387 | 389 | ||
388 | def get_recipe_local_files(d, patches=False): | 390 | def get_recipe_local_files(d, patches=False): |
diff --git a/scripts/lib/devtool/upgrade.py b/scripts/lib/devtool/upgrade.py index 66e5f59a01..8ea72ef2b5 100644 --- a/scripts/lib/devtool/upgrade.py +++ b/scripts/lib/devtool/upgrade.py | |||
@@ -105,7 +105,7 @@ def _rename_recipe_files(oldrecipe, bpn, oldpv, newpv, path): | |||
105 | _rename_recipe_dirs(oldpv, newpv, path) | 105 | _rename_recipe_dirs(oldpv, newpv, path) |
106 | return _rename_recipe_file(oldrecipe, bpn, oldpv, newpv, path) | 106 | return _rename_recipe_file(oldrecipe, bpn, oldpv, newpv, path) |
107 | 107 | ||
108 | def _write_append(rc, srctree, same_dir, no_same_dir, rev, workspace, d): | 108 | def _write_append(rc, srctree, same_dir, no_same_dir, rev, copied, workspace, d): |
109 | """Writes an append file""" | 109 | """Writes an append file""" |
110 | if not os.path.exists(rc): | 110 | if not os.path.exists(rc): |
111 | raise DevtoolError("bbappend not created because %s does not exist" % rc) | 111 | raise DevtoolError("bbappend not created because %s does not exist" % rc) |
@@ -128,8 +128,12 @@ def _write_append(rc, srctree, same_dir, no_same_dir, rev, workspace, d): | |||
128 | b_is_s = use_external_build(same_dir, no_same_dir, d) | 128 | b_is_s = use_external_build(same_dir, no_same_dir, d) |
129 | if b_is_s: | 129 | if b_is_s: |
130 | f.write('EXTERNALSRC_BUILD_pn-%s = "%s"\n' % (pn, srctree)) | 130 | f.write('EXTERNALSRC_BUILD_pn-%s = "%s"\n' % (pn, srctree)) |
131 | f.write('\n') | ||
131 | if rev: | 132 | if rev: |
132 | f.write('\n# initial_rev: %s\n' % rev) | 133 | f.write('# initial_rev: %s\n' % rev) |
134 | if copied: | ||
135 | f.write('# original_path: %s\n' % os.path.dirname(d.getVar('FILE', True))) | ||
136 | f.write('# original_files: %s\n' % ' '.join(copied)) | ||
133 | return af | 137 | return af |
134 | 138 | ||
135 | def _cleanup_on_error(rf, srctree): | 139 | def _cleanup_on_error(rf, srctree): |
@@ -267,7 +271,7 @@ def _create_new_recipe(newpv, md5, sha256, srcrev, srcbranch, workspace, tinfoil | |||
267 | bpn = rd.getVar('BPN', True) | 271 | bpn = rd.getVar('BPN', True) |
268 | path = os.path.join(workspace, 'recipes', bpn) | 272 | path = os.path.join(workspace, 'recipes', bpn) |
269 | bb.utils.mkdirhier(path) | 273 | bb.utils.mkdirhier(path) |
270 | oe.recipeutils.copy_recipe_files(rd, path) | 274 | copied, _ = oe.recipeutils.copy_recipe_files(rd, path) |
271 | 275 | ||
272 | oldpv = rd.getVar('PV', True) | 276 | oldpv = rd.getVar('PV', True) |
273 | if not newpv: | 277 | if not newpv: |
@@ -317,7 +321,7 @@ def _create_new_recipe(newpv, md5, sha256, srcrev, srcbranch, workspace, tinfoil | |||
317 | rd = oe.recipeutils.parse_recipe(fullpath, None, tinfoil.config_data) | 321 | rd = oe.recipeutils.parse_recipe(fullpath, None, tinfoil.config_data) |
318 | oe.recipeutils.patch_recipe(rd, fullpath, newvalues) | 322 | oe.recipeutils.patch_recipe(rd, fullpath, newvalues) |
319 | 323 | ||
320 | return fullpath | 324 | return fullpath, copied |
321 | 325 | ||
322 | def upgrade(args, config, basepath, workspace): | 326 | def upgrade(args, config, basepath, workspace): |
323 | """Entry point for the devtool 'upgrade' subcommand""" | 327 | """Entry point for the devtool 'upgrade' subcommand""" |
@@ -360,7 +364,7 @@ def upgrade(args, config, basepath, workspace): | |||
360 | rev2, md5, sha256 = _extract_new_source(args.version, srctree, args.no_patch, | 364 | rev2, md5, sha256 = _extract_new_source(args.version, srctree, args.no_patch, |
361 | args.srcrev, args.branch, args.keep_temp, | 365 | args.srcrev, args.branch, args.keep_temp, |
362 | tinfoil, rd) | 366 | tinfoil, rd) |
363 | rf = _create_new_recipe(args.version, md5, sha256, args.srcrev, args.srcbranch, config.workspace_path, tinfoil, rd) | 367 | rf, copied = _create_new_recipe(args.version, md5, sha256, args.srcrev, args.srcbranch, config.workspace_path, tinfoil, rd) |
364 | except bb.process.CmdError as e: | 368 | except bb.process.CmdError as e: |
365 | _upgrade_error(e, rf, srctree) | 369 | _upgrade_error(e, rf, srctree) |
366 | except DevtoolError as e: | 370 | except DevtoolError as e: |
@@ -368,7 +372,7 @@ def upgrade(args, config, basepath, workspace): | |||
368 | standard._add_md5(config, pn, os.path.dirname(rf)) | 372 | standard._add_md5(config, pn, os.path.dirname(rf)) |
369 | 373 | ||
370 | af = _write_append(rf, srctree, args.same_dir, args.no_same_dir, rev2, | 374 | af = _write_append(rf, srctree, args.same_dir, args.no_same_dir, rev2, |
371 | config.workspace_path, rd) | 375 | copied, config.workspace_path, rd) |
372 | standard._add_md5(config, pn, af) | 376 | standard._add_md5(config, pn, af) |
373 | logger.info('Upgraded source extracted to %s' % srctree) | 377 | logger.info('Upgraded source extracted to %s' % srctree) |
374 | logger.info('New recipe is %s' % rf) | 378 | logger.info('New recipe is %s' % rf) |