Index: gclient.py |
diff --git a/gclient.py b/gclient.py |
index 9065952bdfd959d56b56dbdf1be77ebfc3dd1c61..ab52cc8eee6098eed83c4ce41dd652606ebf4bea 100644 |
--- a/gclient.py |
+++ b/gclient.py |
@@ -168,6 +168,10 @@ class DependencySettings(GClientKeywords): |
# recursion limit and controls gclient's behavior so it does not misbehave. |
self._managed = managed |
self._should_process = should_process |
+ # This is a mutable value that overrides the normal recursion limit for this |
+ # dependency. It is read from the actual DEPS file so cannot be set on |
+ # class instantiation. |
+ self.recursion_override = None |
# These are only set in .gclient and not in DEPS files. |
self._custom_vars = custom_vars or {} |
@@ -231,6 +235,8 @@ class DependencySettings(GClientKeywords): |
@property |
def recursion_limit(self): |
"""Returns > 0 if this dependency is not too recursed to be processed.""" |
+ if self.recursion_override is not None: |
+ return self.recursion_override |
return max(self.parent.recursion_limit - 1, 0) |
def get_custom_deps(self, name, url): |
@@ -445,6 +451,10 @@ class Dependency(gclient_utils.WorkItem, DependencySettings): |
except SyntaxError, e: |
gclient_utils.SyntaxErrorToError(filepath, e) |
deps = local_scope.get('deps', {}) |
+ if 'recursion' in local_scope: |
+ self.recursion_override = local_scope.get('recursion') |
+ logging.warning( |
+ 'Setting %s recursion to %d.', self.name, self.recursion_limit) |
# load os specific dependencies if defined. these dependencies may |
# override or extend the values defined by the 'deps' member. |
if 'deps_os' in local_scope: |