diff options
author | Dale Farnsworth <dfarnsworth@mvista.com> | 2009-07-08 13:47:18 -0700 |
---|---|---|
committer | Chris Larson <clarson@mvista.com> | 2009-08-24 14:14:21 -0700 |
commit | 97cd9822750689a733b07b01b21acf93f3877e33 (patch) | |
tree | afc7f3859aa0cc9bad71847216fc6d2d835ad3a0 | |
parent | 140ad9e1ac785a906d115468097afd3e294e9968 (diff) |
patch.bbclass: Add "git" patchtool mechanism, which uses git-apply
It can be selected by setting PATCHTOOL = "git".
This is useful because git-apply honors the permissions information
produced by git-format-patch.
Signed-off-by: Dale Farnsworth <dfarnsworth@mvista.com>
Signed-off-by: Chris Larson <clarson@mvista.com>
Acked-by: Denys Dmytriyenko <denis@denix.org>
-rw-r--r-- | classes/patch.bbclass | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/classes/patch.bbclass b/classes/patch.bbclass index 2f99e4cf30..dfb8ec960f 100644 --- a/classes/patch.bbclass +++ b/classes/patch.bbclass @@ -189,6 +189,24 @@ def patch_init(d): def Clean(self): """""" + class GitApplyTree(PatchTree): + def __init__(self, dir, d): + PatchTree.__init__(self, dir, d) + + def _applypatch(self, patch, force = False, reverse = False, run = True): + shellcmd = ["git", "--git-dir=.", "apply", "-p%s" % patch['strippath']] + + if reverse: + shellcmd.append('-R') + + shellcmd.append(patch['file']) + + if not run: + return "sh" + "-c" + " ".join(shellcmd) + + return runcmd(["sh", "-c", " ".join(shellcmd)], self.dir) + + class QuiltTree(PatchSet): def _runcmd(self, args, run = True): quiltrc = bb.data.getVar('QUILTRCFILE', self.d, 1) @@ -424,6 +442,7 @@ def patch_init(d): g["PatchSet"] = PatchSet g["PatchTree"] = PatchTree g["QuiltTree"] = QuiltTree + g["GitApplyTree"] = GitApplyTree g["Resolver"] = Resolver g["UserResolver"] = UserResolver g["NOOPResolver"] = NOOPResolver @@ -449,6 +468,7 @@ python patch_do_patch() { patchsetmap = { "patch": PatchTree, "quilt": QuiltTree, + "git": GitApplyTree, } cls = patchsetmap[bb.data.getVar('PATCHTOOL', d, 1) or 'quilt'] |