lib/oe/patch: fix PATCHTOOL = "git" with source in a subdirectory

For recipes that have their actual source in a subdirectory of what is
fetched (e.g. mkelfimage), we need to find the root of the repository
within the GitApplyTree code that attempts to set up the required git
hooks and use that, rather than expecting the root to be the same as
${S}.

(From OE-Core rev: d820303f64ea610338ec11ffd79269e7831d1da9)

Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Paul Eggleton 2015-02-19 16:39:51 +00:00 committed by Richard Purdie
parent 5eb9ffe1e0
commit f205ccaf48
1 changed files with 5 additions and 2 deletions

View File

@ -313,9 +313,12 @@ class GitApplyTree(PatchTree):
return runcmd(["sh", "-c", " ".join(shellcmd)], self.dir)
# Add hooks which add a pointer to the original patch file name in the commit message
commithook = os.path.join(self.dir, '.git', 'hooks', 'commit-msg')
reporoot = (runcmd("git rev-parse --show-toplevel".split(), self.dir) or '').strip()
if not reporoot:
raise Exception("Cannot get repository root for directory %s" % self.dir)
commithook = os.path.join(reporoot, '.git', 'hooks', 'commit-msg')
commithook_backup = commithook + '.devtool-orig'
applyhook = os.path.join(self.dir, '.git', 'hooks', 'applypatch-msg')
applyhook = os.path.join(reporoot, '.git', 'hooks', 'applypatch-msg')
applyhook_backup = applyhook + '.devtool-orig'
if os.path.exists(commithook):
shutil.move(commithook, commithook_backup)