summaryrefslogtreecommitdiffstats
path: root/bitbake/lib/bb/fetch2/gitsm.py
diff options
context:
space:
mode:
Diffstat (limited to 'bitbake/lib/bb/fetch2/gitsm.py')
-rw-r--r--bitbake/lib/bb/fetch2/gitsm.py24
1 files changed, 11 insertions, 13 deletions
diff --git a/bitbake/lib/bb/fetch2/gitsm.py b/bitbake/lib/bb/fetch2/gitsm.py
index f193ae3c9b..f7f3af7212 100644
--- a/bitbake/lib/bb/fetch2/gitsm.py
+++ b/bitbake/lib/bb/fetch2/gitsm.py
@@ -47,20 +47,18 @@ class GitSM(Git):
47 subrevision = {} 47 subrevision = {}
48 48
49 def parse_gitmodules(gitmodules): 49 def parse_gitmodules(gitmodules):
50 """
51 Parse .gitmodules and return a dictionary of submodule paths to dictionaries with path and url members.
52 """
53 import configparser
54 cp = configparser.ConfigParser()
55 cp.read_string(gitmodules)
56
57 modules = {} 50 modules = {}
58 for section in [s for s in cp.sections() if s.startswith("submodule ")]: 51 module = ""
59 module = section.split('"')[1] 52 for line in gitmodules.splitlines():
60 modules[module] = { 53 if line.startswith('[submodule'):
61 'path': cp.get(section, 'path'), 54 module = line.split('"')[1]
62 'url': cp.get(section, 'url') 55 modules[module] = {}
63 } 56 elif module and line.strip().startswith('path'):
57 path = line.split('=')[1].strip()
58 modules[module]['path'] = path
59 elif module and line.strip().startswith('url'):
60 url = line.split('=')[1].strip()
61 modules[module]['url'] = url
64 return modules 62 return modules
65 63
66 # Collect the defined submodules, and their attributes 64 # Collect the defined submodules, and their attributes