summaryrefslogtreecommitdiffstats
path: root/bitbake
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 23:00:24 +0100
commitc888446d1229b21bdf428332e8515bd92449b538 (patch)
tree1193802acb8d18c43b3d9a54d7669d2bde8f2c71 /bitbake
parentfa8ade3695b836fb788c57c0d56b546b47f1603a (diff)
downloadopenembedded-core-contrib-c888446d1229b21bdf428332e8515bd92449b538.tar.gz
bitbake: 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. (Bitbake rev: 3dbc84e9c572f43209b79f3656d7dc35a6d982ba) Signed-off-by: Laurent Bonnans <laurent.bonnans@here.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'bitbake')
-rw-r--r--bitbake/lib/bb/fetch2/gitsm.py15
1 files changed, 9 insertions, 6 deletions
diff --git a/bitbake/lib/bb/fetch2/gitsm.py b/bitbake/lib/bb/fetch2/gitsm.py
index 0cdc8301d1..fd5089c075 100644
--- a/bitbake/lib/bb/fetch2/gitsm.py
+++ b/bitbake/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