mirror of
https://git.yoctoproject.org/poky
synced 2026-04-23 00:32:12 +02:00
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>
This commit is contained in:
committed by
Richard Purdie
parent
e7744de454
commit
122ee11bd1
@@ -202,6 +202,13 @@ def _extract_source(srctree, keep_temp, devbranch, d):
|
||||
# Handle if S is set to a subdirectory of the source
|
||||
srcsubdir = os.path.join(workdir, os.path.relpath(srcsubdir, workdir).split(os.sep)[0])
|
||||
|
||||
if os.path.exists(os.path.join(srcsubdir, '.git')):
|
||||
alternatesfile = os.path.join(srcsubdir, '.git', 'objects', 'info', 'alternates')
|
||||
if os.path.exists(alternatesfile):
|
||||
# This will have been cloned with -s, so we need to convert it to a full clone
|
||||
bb.process.run('git repack -a', cwd=srcsubdir)
|
||||
os.remove(alternatesfile)
|
||||
|
||||
patchdir = os.path.join(srcsubdir, 'patches')
|
||||
haspatches = False
|
||||
if os.path.exists(patchdir):
|
||||
|
||||
Reference in New Issue
Block a user