<div dir="ltr"><div>I would say this is a dangerous option, and I wouldn't want to have or use it. Backported patches may not actually be present in the newer version if they were taken from a development branch that has not yet been released.</div><div><br></div><div>Also, 'devtool upgrade' is using 'git rebase' to rebase all patches onto the newer code base, and most backports are dropped automatically at that step. If they aren't there's usually a merge conflict, where you can easily issue 'git rebase --skip' to remove the backport, or resolve conflicts if the backport needs to stay.</div><div><br></div><div>What prompted you to implement this?<br></div><div><br></div><div>Alex<br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, 2 Dec 2019 at 07:03, Chen Qi <<a href="mailto:Qi.Chen@windriver.com">Qi.Chen@windriver.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">When upgrading a package, most likely the backported patches are not<br>
needed any more, so add an option to `devtool upgrade' to handle such<br>
situation.<br>
<br>
Signed-off-by: Chen Qi <<a href="mailto:Qi.Chen@windriver.com" target="_blank">Qi.Chen@windriver.com</a>><br>
---<br>
scripts/lib/devtool/standard.py | 14 +++++++++++++-<br>
scripts/lib/devtool/upgrade.py | 3 ++-<br>
2 files changed, 15 insertions(+), 2 deletions(-)<br>
<br>
diff --git a/scripts/lib/devtool/standard.py b/scripts/lib/devtool/standard.py<br>
index 1c0cd8ab51..5fe848b6b8 100644<br>
--- a/scripts/lib/devtool/standard.py<br>
+++ b/scripts/lib/devtool/standard.py<br>
@@ -487,7 +487,7 @@ def symlink_oelocal_files_srctree(rd,srctree):<br>
bb.process.run('git %s commit -m "Committing local file symlinks\n\n%s"' % (' '.join(useroptions), oe.patch.GitApplyTree.ignore_commit_prefix), cwd=srctree)<br>
<br>
<br>
-def _extract_source(srctree, keep_temp, devbranch, sync, config, basepath, workspace, fixed_setup, d, tinfoil, no_overrides=False):<br>
+def _extract_source(srctree, keep_temp, devbranch, sync, config, basepath, workspace, fixed_setup, d, tinfoil, no_overrides=False, no_backported=False):<br>
"""Extract sources of a recipe"""<br>
import oe.recipeutils<br>
import oe.patch<br>
@@ -555,6 +555,14 @@ def _extract_source(srctree, keep_temp, devbranch, sync, config, basepath, works<br>
tempbasedir = d.getVar('WORKDIR')<br>
bb.utils.mkdirhier(tempbasedir)<br>
tempdir = tempfile.mkdtemp(prefix='devtooltmp-', dir=tempbasedir)<br>
+ patches = oe.recipeutils.get_recipe_patches(d)<br>
+ backported_patches = []<br>
+ for patch in patches:<br>
+ with open(patch, 'r') as pf:<br>
+ for line in pf.readlines():<br>
+ if 'Upstream-Status: Backport' in line:<br>
+ backported_patches.append(os.path.basename(patch))<br>
+ break<br>
try:<br>
tinfoil.logger.setLevel(logging.WARNING)<br>
<br>
@@ -579,6 +587,10 @@ def _extract_source(srctree, keep_temp, devbranch, sync, config, basepath, works<br>
f.write('DEVTOOL_EXTRA_OVERRIDES = "%s"\n' % ':'.join(extra_overrides))<br>
f.write('inherit devtool-source\n')<br>
f.write('###--- _extract_source\n')<br>
+ # deal with backported patches<br>
+ if no_backported and len(backported_patches) > 0:<br>
+ for patch_name in backported_patches:<br>
+ f.write('SRC_URI_remove = "file://%s"' % patch_name)<br>
<br>
update_unlockedsigs(basepath, workspace, fixed_setup, [pn])<br>
<br>
diff --git a/scripts/lib/devtool/upgrade.py b/scripts/lib/devtool/upgrade.py<br>
index cb6dce378a..d5e04ecdc5 100644<br>
--- a/scripts/lib/devtool/upgrade.py<br>
+++ b/scripts/lib/devtool/upgrade.py<br>
@@ -549,7 +549,7 @@ def upgrade(args, config, basepath, workspace):<br>
license_diff = None<br>
try:<br>
<a href="http://logger.info" rel="noreferrer" target="_blank">logger.info</a>('Extracting current version source...')<br>
- rev1, srcsubdir1 = standard._extract_source(srctree, False, 'devtool-orig', False, config, basepath, workspace, args.fixed_setup, rd, tinfoil, no_overrides=args.no_overrides)<br>
+ rev1, srcsubdir1 = standard._extract_source(srctree, False, 'devtool-orig', False, config, basepath, workspace, args.fixed_setup, rd, tinfoil, no_overrides=args.no_overrides, no_backported=args.no_backported)<br>
old_licenses = _extract_licenses(srctree, rd.getVar('LIC_FILES_CHKSUM'))<br>
<a href="http://logger.info" rel="noreferrer" target="_blank">logger.info</a>('Extracting upgraded version source...')<br>
rev2, md5, sha256, srcbranch, srcsubdir2 = _extract_new_source(args.version, srctree, args.no_patch,<br>
@@ -628,6 +628,7 @@ def register_commands(subparsers, context):<br>
parser_upgrade.add_argument('--branch', '-b', default="devtool", help='Name for new development branch to checkout (default "%(default)s")')<br>
parser_upgrade.add_argument('--no-patch', action="store_true", help='Do not apply patches from the recipe to the new source code')<br>
parser_upgrade.add_argument('--no-overrides', '-O', action="store_true", help='Do not create branches for other override configurations')<br>
+ parser_upgrade.add_argument('--no-backported', action="store_true", help='Do not apply backported patches to the new source code')<br>
group = parser_upgrade.add_mutually_exclusive_group()<br>
group.add_argument('--same-dir', '-s', help='Build in same directory as source', action="store_true")<br>
group.add_argument('--no-same-dir', help='Force build in a separate build directory', action="store_true")<br>
-- <br>
2.17.1<br>
<br>
-- <br>
_______________________________________________<br>
Openembedded-core mailing list<br>
<a href="mailto:Openembedded-core@lists.openembedded.org" target="_blank">Openembedded-core@lists.openembedded.org</a><br>
<a href="http://lists.openembedded.org/mailman/listinfo/openembedded-core" rel="noreferrer" target="_blank">http://lists.openembedded.org/mailman/listinfo/openembedded-core</a><br>
</blockquote></div>