diff mbox series

[1/3] gitsm: Error out if submodule refers to parent repo

Message ID 20220826084031.11919-1-pavel@zhukoff.net
State Accepted, archived
Commit 0361ecf7eb82c386a9842cf1f3cb706c0a112e77
Headers show
Series [1/3] gitsm: Error out if submodule refers to parent repo | expand

Commit Message

Pavel Zhukov Aug. 26, 2022, 8:40 a.m. UTC
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>
---
 lib/bb/fetch2/gitsm.py | 3 +++
 1 file changed, 3 insertions(+)
diff mbox series

Patch

diff --git a/lib/bb/fetch2/gitsm.py b/lib/bb/fetch2/gitsm.py
index c1950e48..25d5db0e 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