summaryrefslogtreecommitdiffstats
path: root/meta/lib/oe/patch.py
diff options
context:
space:
mode:
authorPaul Eggleton <paul.eggleton@linux.intel.com>2016-08-29 20:40:38 +1200
committerRichard Purdie <richard.purdie@linuxfoundation.org>2016-09-03 23:45:52 +0100
commit4b4387455c62cf19fa3d215a11b5d0b1211d4570 (patch)
tree8c42428ddfb65fbd8b9ba7a7ef0632fff0e7bcdf /meta/lib/oe/patch.py
parente5f61f85c550646bc7e26a1fe6d9df080864ef48 (diff)
downloadpoky-4b4387455c62cf19fa3d215a11b5d0b1211d4570.tar.gz
lib/oe/patch: commit with a dummy user/email when PATCHTOOL=git
When using PATCHTOOL = "git", the user of the system is not really the committer - it's the build system itself. Thus, specify "dummy" values for username and email instead of using the user's configured values. Various parts of the devtool code that need to make commits have also been updated to use the same logic. This allows PATCHTOOL = "git" and devtool to be used on systems where git user.name / user.email has not been set (on versions of git where it doesn't default a value under this circumstance). If you want to return to the old behaviour where the externally configured user name / email are used, set the following in your local.conf: PATCH_GIT_USER_NAME = "" PATCH_GIT_USER_EMAIL = "" Fixes [YOCTO #8703]. (From OE-Core rev: 765a9017eaf77ea3204fb10afb8181629680bd82) Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/lib/oe/patch.py')
-rw-r--r--meta/lib/oe/patch.py24
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)