summaryrefslogtreecommitdiffstats
path: root/tools/scripts/git_submodule.py
diff options
context:
space:
mode:
Diffstat (limited to 'tools/scripts/git_submodule.py')
-rw-r--r--tools/scripts/git_submodule.py26
1 files changed, 21 insertions, 5 deletions
diff --git a/tools/scripts/git_submodule.py b/tools/scripts/git_submodule.py
index c2f5d9c31..bf931563c 100644
--- a/tools/scripts/git_submodule.py
+++ b/tools/scripts/git_submodule.py
@@ -46,20 +46,36 @@ def subprocessCheckOutput(args):
class DEPSParser:
def __init__(self):
self.global_scope = {
- 'Var': self.Lookup,
+ 'Var': lambda var_name: '{%s}' % var_name,
'deps_os': {},
}
self.local_scope = {}
self.topmost_supermodule_path_prefix = ''
- def Lookup(self, var_name):
- return self.local_scope["vars"][var_name]
+ def get_vars(self):
+ """Returns a dictionary of effective variable values
+ (DEPS file contents with applied custom_vars overrides)."""
+ result = {}
+ # Variables defined in DEPS file override built-in ones.
+ result.update(self.local_scope["vars"])
+ #result.update(self.custom_vars or {})
+ return result
def createSubmodulesFromScope(self, scope, os):
submodules = []
for dep in scope:
+ url = ''
if (type(scope[dep]) == str):
- repo_rev = scope[dep].split('@')
+ url = scope[dep]
+ elif (type(scope[dep]) == dict):
+ url = scope[dep]['url']
+
+ if ('condition' in scope[dep]) and (not 'checkout_linux' in scope[dep]['condition']):
+ url = ''
+
+ if url:
+ url = url.format(**self.get_vars())
+ repo_rev = url.split('@')
repo = repo_rev[0]
rev = repo_rev[1]
subdir = dep
@@ -84,7 +100,7 @@ class DEPSParser:
elif len(rev) == 0:
submodule.ref = 'master'
else:
- sys.exit("Invalid shasum: " + str(scope[dep]))
+ sys.exit("Invalid shasum: " + str(url))
submodules.append(submodule)
return submodules