aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLaurent Bonnans <laurent.bonnans@here.com>2018-10-01 16:52:13 +0200
committerRichard Purdie <richard.purdie@linuxfoundation.org>2018-10-04 14:33:53 +0100
commit3dbc84e9c572f43209b79f3656d7dc35a6d982ba (patch)
treec453746830ca52360d2e4ebb33a4da73371877b1
parentb310031972a53d0881a87a627f07bdcf7d9c6b79 (diff)
downloadbitbake-3dbc84e9c572f43209b79f3656d7dc35a6d982ba.tar.gz
fetch2/gitsm: handle submodules nested inside subdirs
The new gitsm fetcher assumed that submodules were living directly in the 'modules' directory, whereas they can be arbitrarily nested inside subdirectories. Solve it by first creating the parent of the destination directory for the symlink and copy steps. Signed-off-by: Laurent Bonnans <laurent.bonnans@here.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r--lib/bb/fetch2/gitsm.py15
1 files changed, 9 insertions, 6 deletions
diff --git a/lib/bb/fetch2/gitsm.py b/lib/bb/fetch2/gitsm.py
index 0cdc8301d..fd5089c07 100644
--- a/lib/bb/fetch2/gitsm.py
+++ b/lib/bb/fetch2/gitsm.py
@@ -98,12 +98,14 @@ class GitSM(Git):
# Correct the submodule references to the local download version...
runfetchcmd("%(basecmd)s config submodule.%(module)s.url %(url)s" % {'basecmd': ud.basecmd, 'module': module, 'url' : local_paths[module]}, d, workdir=ud.clonedir)
- try:
- os.mkdir(os.path.join(ud.clonedir, 'modules'))
- except OSError:
- pass
- if not os.path.exists(os.path.join(ud.clonedir, 'modules', paths[module])):
- os.symlink(local_paths[module], os.path.join(ud.clonedir, 'modules', paths[module]))
+
+ symlink_path = os.path.join(ud.clonedir, 'modules', paths[module])
+ if not os.path.exists(symlink_path):
+ try:
+ os.makedirs(os.path.dirname(symlink_path), exist_ok=True)
+ except OSError:
+ pass
+ os.symlink(local_paths[module], symlink_path)
return True
@@ -148,6 +150,7 @@ class GitSM(Git):
if os.path.exists(modpath):
target = os.path.dirname(modpath)
+ os.makedirs(os.path.dirname(target), exist_ok=True)
runfetchcmd("cp -fpLR %s %s" % (srcpath, target), d)
elif os.path.exists(modpath):
# Module already exists, likely unpacked from a shallow mirror clone