summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--meta/classes/patch.bbclass26
1 files changed, 21 insertions, 5 deletions
diff --git a/meta/classes/patch.bbclass b/meta/classes/patch.bbclass
index 609e1a1415..ba0f19215d 100644
--- a/meta/classes/patch.bbclass
+++ b/meta/classes/patch.bbclass
@@ -187,6 +187,24 @@ def patch_init(d):
187 def Clean(self): 187 def Clean(self):
188 """""" 188 """"""
189 189
190 class GitApplyTree(PatchTree):
191 def __init__(self, dir, d):
192 PatchTree.__init__(self, dir, d)
193
194 def _applypatch(self, patch, force = False, reverse = False, run = True):
195 shellcmd = ["git", "--git-dir=.", "apply", "-p%s" % patch['strippath']]
196
197 if reverse:
198 shellcmd.append('-R')
199
200 shellcmd.append(patch['file'])
201
202 if not run:
203 return "sh" + "-c" + " ".join(shellcmd)
204
205 return runcmd(["sh", "-c", " ".join(shellcmd)], self.dir)
206
207
190 class QuiltTree(PatchSet): 208 class QuiltTree(PatchSet):
191 def _runcmd(self, args, run = True): 209 def _runcmd(self, args, run = True):
192 quiltrc = bb.data.getVar('QUILTRCFILE', self.d, 1) 210 quiltrc = bb.data.getVar('QUILTRCFILE', self.d, 1)
@@ -425,6 +443,7 @@ def patch_init(d):
425 g["PatchSet"] = PatchSet 443 g["PatchSet"] = PatchSet
426 g["PatchTree"] = PatchTree 444 g["PatchTree"] = PatchTree
427 g["QuiltTree"] = QuiltTree 445 g["QuiltTree"] = QuiltTree
446 g["GitApplyTree"] = GitApplyTree
428 g["Resolver"] = Resolver 447 g["Resolver"] = Resolver
429 g["UserResolver"] = UserResolver 448 g["UserResolver"] = UserResolver
430 g["NOOPResolver"] = NOOPResolver 449 g["NOOPResolver"] = NOOPResolver
@@ -451,6 +470,7 @@ python patch_do_patch() {
451 patchsetmap = { 470 patchsetmap = {
452 "patch": PatchTree, 471 "patch": PatchTree,
453 "quilt": QuiltTree, 472 "quilt": QuiltTree,
473 "git": GitApplyTree,
454 } 474 }
455 475
456 cls = patchsetmap[bb.data.getVar('PATCHTOOL', d, 1) or 'quilt'] 476 cls = patchsetmap[bb.data.getVar('PATCHTOOL', d, 1) or 'quilt']
@@ -544,12 +564,8 @@ python patch_do_patch() {
544 bb.note("Applying patch '%s'" % pname) 564 bb.note("Applying patch '%s'" % pname)
545 try: 565 try:
546 patchset.Import({"file":unpacked, "remote":url, "strippath": pnum}, True) 566 patchset.Import({"file":unpacked, "remote":url, "strippath": pnum}, True)
547 except NotFoundError:
548 import sys
549 raise bb.build.FuncFailed(str(sys.exc_value))
550 try:
551 resolver.Resolve() 567 resolver.Resolve()
552 except PatchError: 568 except:
553 import sys 569 import sys
554 raise bb.build.FuncFailed(str(sys.exc_value)) 570 raise bb.build.FuncFailed(str(sys.exc_value))
555} 571}