diff options
Diffstat (limited to 'meta/lib/oe/patch.py')
| -rw-r--r-- | meta/lib/oe/patch.py | 24 |
1 files changed, 20 insertions, 4 deletions
diff --git a/meta/lib/oe/patch.py b/meta/lib/oe/patch.py index af3adec140..cad50157dd 100644 --- a/meta/lib/oe/patch.py +++ b/meta/lib/oe/patch.py | |||
| @@ -281,6 +281,8 @@ class GitApplyTree(PatchTree): | |||
| 281 | 281 | ||
| 282 | def __init__(self, dir, d): | 282 | def __init__(self, dir, d): |
| 283 | PatchTree.__init__(self, dir, d) | 283 | PatchTree.__init__(self, dir, d) |
| 284 | self.commituser = d.getVar('PATCH_GIT_USER_NAME', True) | ||
| 285 | self.commitemail = d.getVar('PATCH_GIT_USER_EMAIL', True) | ||
| 284 | 286 | ||
| 285 | @staticmethod | 287 | @staticmethod |
| 286 | def extractPatchHeader(patchfile): | 288 | def extractPatchHeader(patchfile): |
| @@ -348,7 +350,17 @@ class GitApplyTree(PatchTree): | |||
| 348 | return outlines, author, date, subject | 350 | return outlines, author, date, subject |
| 349 | 351 | ||
| 350 | @staticmethod | 352 | @staticmethod |
| 351 | def prepareCommit(patchfile): | 353 | def gitCommandUserOptions(cmd, commituser=None, commitemail=None, d=None): |
| 354 | if d: | ||
| 355 | commituser = d.getVar('PATCH_GIT_USER_NAME', True) | ||
| 356 | commitemail = d.getVar('PATCH_GIT_USER_EMAIL', True) | ||
| 357 | if commituser: | ||
| 358 | cmd += ['-c', 'user.name="%s"' % commituser] | ||
| 359 | if commitemail: | ||
| 360 | cmd += ['-c', 'user.email="%s"' % commitemail] | ||
| 361 | |||
| 362 | @staticmethod | ||
| 363 | def prepareCommit(patchfile, commituser=None, commitemail=None): | ||
| 352 | """ | 364 | """ |
| 353 | Prepare a git commit command line based on the header from a patch file | 365 | Prepare a git commit command line based on the header from a patch file |
| 354 | (typically this is useful for patches that cannot be applied with "git am" due to formatting) | 366 | (typically this is useful for patches that cannot be applied with "git am" due to formatting) |
| @@ -380,7 +392,9 @@ class GitApplyTree(PatchTree): | |||
| 380 | for line in outlines: | 392 | for line in outlines: |
| 381 | tf.write(line) | 393 | tf.write(line) |
| 382 | # Prepare git command | 394 | # Prepare git command |
| 383 | cmd = ["git", "commit", "-F", tmpfile] | 395 | cmd = ["git"] |
| 396 | GitApplyTree.gitCommandUserOptions(cmd, commituser, commitemail) | ||
| 397 | cmd += ["commit", "-F", tmpfile] | ||
| 384 | # git doesn't like plain email addresses as authors | 398 | # git doesn't like plain email addresses as authors |
| 385 | if author and '<' in author: | 399 | if author and '<' in author: |
| 386 | cmd.append('--author="%s"' % author) | 400 | cmd.append('--author="%s"' % author) |
| @@ -456,7 +470,9 @@ class GitApplyTree(PatchTree): | |||
| 456 | try: | 470 | try: |
| 457 | patchfilevar = 'PATCHFILE="%s"' % os.path.basename(patch['file']) | 471 | patchfilevar = 'PATCHFILE="%s"' % os.path.basename(patch['file']) |
| 458 | try: | 472 | try: |
| 459 | shellcmd = [patchfilevar, "git", "--work-tree=%s" % reporoot, "am", "-3", "--keep-cr", "-p%s" % patch['strippath']] | 473 | shellcmd = [patchfilevar, "git", "--work-tree=%s" % reporoot] |
| 474 | self.gitCommandUserOptions(shellcmd, self.commituser, self.commitemail) | ||
| 475 | shellcmd += ["am", "-3", "--keep-cr", "-p%s" % patch['strippath']] | ||
| 460 | return _applypatchhelper(shellcmd, patch, force, reverse, run) | 476 | return _applypatchhelper(shellcmd, patch, force, reverse, run) |
| 461 | except CmdError: | 477 | except CmdError: |
| 462 | # Need to abort the git am, or we'll still be within it at the end | 478 | # Need to abort the git am, or we'll still be within it at the end |
| @@ -486,7 +502,7 @@ class GitApplyTree(PatchTree): | |||
| 486 | shellcmd = ["git", "reset", "HEAD", self.patchdir] | 502 | shellcmd = ["git", "reset", "HEAD", self.patchdir] |
| 487 | output += runcmd(["sh", "-c", " ".join(shellcmd)], self.dir) | 503 | output += runcmd(["sh", "-c", " ".join(shellcmd)], self.dir) |
| 488 | # Commit the result | 504 | # Commit the result |
| 489 | (tmpfile, shellcmd) = self.prepareCommit(patch['file']) | 505 | (tmpfile, shellcmd) = self.prepareCommit(patch['file'], self.commituser, self.commitemail) |
| 490 | try: | 506 | try: |
| 491 | shellcmd.insert(0, patchfilevar) | 507 | shellcmd.insert(0, patchfilevar) |
| 492 | output += runcmd(["sh", "-c", " ".join(shellcmd)], self.dir) | 508 | output += runcmd(["sh", "-c", " ".join(shellcmd)], self.dir) |
