summaryrefslogtreecommitdiffstats
path: root/scripts
diff options
context:
space:
mode:
authorPaul Eggleton <paul.eggleton@linux.intel.com>2015-02-19 16:40:04 +0000
committerRichard Purdie <richard.purdie@linuxfoundation.org>2015-02-23 17:35:29 +0000
commit122ee11bd1817f776336e54898cb36162fe527df (patch)
tree3e2fea95141d5458df97395bdcd1e59e5756805e /scripts
parente7744de454b1ea545fe9ae5c1e0733872a9c2632 (diff)
downloadpoky-122ee11bd1817f776336e54898cb36162fe527df.tar.gz
devtool: fix broken clones of git recipes
Because we move the workdir when extracting source, then move the source and delete the temporary workdir, you lose the indirection symlink pointed to by the alternates file (which is created when the fetcher clones it from DL_DIR with -s) and the resulting repository is broken. In any case, for a source repo that the user may put their own changes into, we can't really rely on a clone made with -s in case the original goes away - because of cleanall, DL_DIR disappearing, etc. So repack the repository so that it is a complete, non-shared clone after unpacking. (While I'm at it, add a test for devtool modify with a git recipe which verifies that this works.) (From OE-Core rev: dccdde4321c48a571677995a4e1dfc583e899cbe) Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'scripts')
-rw-r--r--scripts/lib/devtool/standard.py7
1 files changed, 7 insertions, 0 deletions
diff --git a/scripts/lib/devtool/standard.py b/scripts/lib/devtool/standard.py
index bf18aae686..cabf3feaf3 100644
--- a/scripts/lib/devtool/standard.py
+++ b/scripts/lib/devtool/standard.py
@@ -202,6 +202,13 @@ def _extract_source(srctree, keep_temp, devbranch, d):
202 # Handle if S is set to a subdirectory of the source 202 # Handle if S is set to a subdirectory of the source
203 srcsubdir = os.path.join(workdir, os.path.relpath(srcsubdir, workdir).split(os.sep)[0]) 203 srcsubdir = os.path.join(workdir, os.path.relpath(srcsubdir, workdir).split(os.sep)[0])
204 204
205 if os.path.exists(os.path.join(srcsubdir, '.git')):
206 alternatesfile = os.path.join(srcsubdir, '.git', 'objects', 'info', 'alternates')
207 if os.path.exists(alternatesfile):
208 # This will have been cloned with -s, so we need to convert it to a full clone
209 bb.process.run('git repack -a', cwd=srcsubdir)
210 os.remove(alternatesfile)
211
205 patchdir = os.path.join(srcsubdir, 'patches') 212 patchdir = os.path.join(srcsubdir, 'patches')
206 haspatches = False 213 haspatches = False
207 if os.path.exists(patchdir): 214 if os.path.exists(patchdir):