Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(370)

Unified Diff: gclient.py

Issue 1948853002: Reland: Add ability to override DEPS file in recursedeps (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/depot_tools
Patch Set: Fix SVN regression bug Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | tests/gclient_test.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: gclient.py
diff --git a/gclient.py b/gclient.py
index 15a75301ae7e202a6980985b8a78179035e93ffb..f1428c52bfca3f06dc85d0c4070f54b18ab72985 100755
--- a/gclient.py
+++ b/gclient.py
@@ -371,6 +371,9 @@ class Dependency(gclient_utils.WorkItem, DependencySettings):
# recursedeps is a mutable value that selectively overrides the default
# 'no recursion' setting on a dep-by-dep basis. It will replace
# recursion_override.
+ #
+ # It will be a dictionary of {deps_name: {"deps_file": depfile_name}} or
+ # None.
self.recursedeps = None
if not self.name and self.parent:
@@ -650,9 +653,14 @@ class Dependency(gclient_utils.WorkItem, DependencySettings):
self.recursion_override = local_scope.get('recursion')
logging.warning(
'Setting %s recursion to %d.', self.name, self.recursion_limit)
- self.recursedeps = local_scope.get('recursedeps', None)
+ self.recursedeps = None
if 'recursedeps' in local_scope:
- self.recursedeps = set(self.recursedeps)
+ self.recursedeps = {}
+ for ent in local_scope['recursedeps']:
+ if isinstance(ent, basestring):
+ self.recursedeps[ent] = {"deps_file": self.deps_file}
+ else: # (depname, depsfilename)
+ self.recursedeps[ent[0]] = {"deps_file": ent[1]}
Dirk Pranke 2016/05/04 22:49:59 the document above only says that dicts are suppor
logging.warning('Found recursedeps %r.', repr(self.recursedeps))
# If present, save 'target_os' in the local_target_os property.
if 'target_os' in local_scope:
@@ -687,9 +695,9 @@ class Dependency(gclient_utils.WorkItem, DependencySettings):
# Update recursedeps if it's set.
if self.recursedeps is not None:
logging.warning('Updating recursedeps by prepending %s.', self.name)
- rel_deps = set()
- for d in self.recursedeps:
- rel_deps.add(os.path.normpath(os.path.join(self.name, d)))
+ rel_deps = {}
+ for depname, options in self.recursedeps.iteritems():
+ rel_deps[os.path.normpath(os.path.join(self.name, depname))] = options
self.recursedeps = rel_deps
if 'allowed_hosts' in local_scope:
@@ -708,9 +716,14 @@ class Dependency(gclient_utils.WorkItem, DependencySettings):
deps_to_add = []
for name, url in deps.iteritems():
should_process = self.recursion_limit and self.should_process
+ deps_file = self.deps_file
+ if self.recursedeps is not None:
+ ent = self.recursedeps.get(name)
+ if ent is not None:
+ deps_file = ent['deps_file']
deps_to_add.append(Dependency(
self, name, url, None, None, None, self.custom_vars, None,
- self.deps_file, should_process))
iannucci 2016/05/03 22:39:29 The existing behavior ALWAYS assumed self.deps_fil
+ deps_file, should_process))
deps_to_add.sort(key=lambda x: x.name)
# override named sets of hooks by the custom hooks
« no previous file with comments | « no previous file | tests/gclient_test.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698