diff options
author | Paul Eggleton <paul.eggleton@linux.intel.com> | 2016-08-29 20:40:38 +1200 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2016-09-03 23:45:52 +0100 |
commit | 4b4387455c62cf19fa3d215a11b5d0b1211d4570 (patch) | |
tree | 8c42428ddfb65fbd8b9ba7a7ef0632fff0e7bcdf /meta/lib/oe/patch.py | |
parent | e5f61f85c550646bc7e26a1fe6d9df080864ef48 (diff) | |
download | poky-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.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) |