diff options
Diffstat (limited to 'tools/scripts/git_submodule.py')
-rw-r--r-- | tools/scripts/git_submodule.py | 26 |
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 |