aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPavel Zhukov <pavel@zhukoff.net>2022-08-26 10:40:29 +0200
committerSteve Sakoman <steve@sakoman.com>2022-09-28 06:47:55 -1000
commit987712c4c8fefd86a1f5116c11ee86e296e852ee (patch)
tree2e60948f6949a64370bd24f33ddf94f4e4bd730c
parentbb5c43220f5f1c3d82334c65aff1ce13008db8d9 (diff)
downloadbitbake-987712c4c8fefd86a1f5116c11ee86e296e852ee.tar.gz
gitsm: Error out if submodule refers to parent repo
If submodule refers to specific revision of the parent repository it causes deadlock in bitbake locking mechanism (lock is acquired to fetch the parent and cannot be released before all submodules are fetched). raise FetchError in such situation to prevent deadlocking. [Yocto 14045] Signed-off-by: Pavel Zhukov <pavel@zhukoff.net> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org> (cherry picked from commit 0361ecf7eb82c386a9842cf1f3cb706c0a112e77) Signed-off-by: Steve Sakoman <steve@sakoman.com>
-rw-r--r--lib/bb/fetch2/gitsm.py3
1 files changed, 3 insertions, 0 deletions
diff --git a/lib/bb/fetch2/gitsm.py b/lib/bb/fetch2/gitsm.py
index c1950e481..25d5db0e5 100644
--- a/lib/bb/fetch2/gitsm.py
+++ b/lib/bb/fetch2/gitsm.py
@@ -115,6 +115,9 @@ class GitSM(Git):
# This has to be a file reference
proto = "file"
url = "gitsm://" + uris[module]
+ if "{}{}".format(ud.host, ud.path) in url:
+ raise bb.fetch2.FetchError("Submodule refers to the parent repository. This will cause deadlock situation in current version of Bitbake." \
+ "Consider using git fetcher instead.")
url += ';protocol=%s' % proto
url += ";name=%s" % module