summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--bitbake/lib/bb/fetch2/gitsm.py24
1 files changed, 13 insertions, 11 deletions
diff --git a/bitbake/lib/bb/fetch2/gitsm.py b/bitbake/lib/bb/fetch2/gitsm.py
index f7f3af72125..f193ae3c9ba 100644
--- a/bitbake/lib/bb/fetch2/gitsm.py
+++ b/bitbake/lib/bb/fetch2/gitsm.py
@@ -47,18 +47,20 @@ class GitSM(Git):
subrevision = {}
def parse_gitmodules(gitmodules):
+ """
+ Parse .gitmodules and return a dictionary of submodule paths to dictionaries with path and url members.
+ """
+ import configparser
+ cp = configparser.ConfigParser()
+ cp.read_string(gitmodules)
+
modules = {}
- module = ""
- for line in gitmodules.splitlines():
- if line.startswith('[submodule'):
- module = line.split('"')[1]
- modules[module] = {}
- elif module and line.strip().startswith('path'):
- path = line.split('=')[1].strip()
- modules[module]['path'] = path
- elif module and line.strip().startswith('url'):
- url = line.split('=')[1].strip()
- modules[module]['url'] = url
+ for section in [s for s in cp.sections() if s.startswith("submodule ")]:
+ module = section.split('"')[1]
+ modules[module] = {
+ 'path': cp.get(section, 'path'),
+ 'url': cp.get(section, 'url')
+ }
return modules
# Collect the defined submodules, and their attributes