From: Paul Eggleton Date: Tue, 22 Sep 2015 16:21:22 +0000 (+0100) Subject: lib/oe/patch: fix for git am not cleaning up after itself X-Git-Tag: lucaceresoli/bug-15201-perf-libtraceevent-missing~28841 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=21fdbd76f458b70a6646dd6d0749e3a465ebd320;p=thirdparty%2Fopenembedded%2Fopenembedded-core-contrib.git lib/oe/patch: fix for git am not cleaning up after itself Unfortunately it appears that under certain circumstances, a failed git am followed by git am --abort won't clean up any changes the patch might have made - this was seen when running "devtool extract" on the unzip recipe; unzip-6.0_overflow3.diff has a malformed date as far as git am is concerned but it triggers this condition. Add a git reset --hard HEAD followed by git clean -f in order to recover from this scenario. Signed-off-by: Paul Eggleton Signed-off-by: Richard Purdie --- diff --git a/meta/lib/oe/patch.py b/meta/lib/oe/patch.py index 108bf1de564..7441214006f 100644 --- a/meta/lib/oe/patch.py +++ b/meta/lib/oe/patch.py @@ -407,6 +407,13 @@ class GitApplyTree(PatchTree): runcmd(["sh", "-c", " ".join(shellcmd)], self.dir) except CmdError: pass + # git am won't always clean up after itself, sadly, so... + shellcmd = ["git", "--work-tree=%s" % reporoot, "reset", "--hard", "HEAD"] + runcmd(["sh", "-c", " ".join(shellcmd)], self.dir) + # Also need to take care of any stray untracked files + shellcmd = ["git", "--work-tree=%s" % reporoot, "clean", "-f"] + runcmd(["sh", "-c", " ".join(shellcmd)], self.dir) + # Fall back to git apply shellcmd = ["git", "--git-dir=%s" % reporoot, "apply", "-p%s" % patch['strippath']] try: