gclient flatten: fix a bug with deps_os getting omitted for recursed deps
Bug: 570091
Change-Id: I4fac33ca683ff2011fa7307d5175592f3d9e258e
Reviewed-on: https://chromium-review.googlesource.com/560171
Reviewed-by: Michael Moss <mmoss@chromium.org>
Reviewed-by: Dirk Pranke <dpranke@chromium.org>
Commit-Queue: Paweł Hajdan Jr. <phajdan.jr@chromium.org>
diff --git a/gclient.py b/gclient.py
index e1b1be2..8f1a489 100755
--- a/gclient.py
+++ b/gclient.py
@@ -1825,9 +1825,7 @@
_AddDep(dep, allowed_hosts, deps, unpinned_deps)
- for dep_os, os_deps in dep.os_dependencies.iteritems():
- for os_dep in os_deps:
- deps_os.setdefault(dep_os, {})[os_dep.name] = os_dep
+ _FlattenDepsOs(dep, deps_os)
deps_by_name = dict((d.name, d) for d in dep.dependencies)
for recurse_dep_name in (dep.recursedeps or []):
@@ -1860,11 +1858,29 @@
"""
logging.debug('_FlattenRecurse(%r)', dep)
+ _FlattenDepsOs(dep, deps_os)
+
for sub_dep in dep.orig_dependencies:
_FlattenDep(sub_dep, allowed_hosts, deps, deps_os, hooks, hooks_os,
pre_deps_hooks, unpinned_deps)
+def _FlattenDepsOs(dep, deps_os):
+ """Helper to add a dependency to flattened lists.
+
+ Arguments:
+ dep (Dependency): dependency to process
+
+ Out-parameters:
+ deps_os (dict): will be filled with flattened deps_os
+ """
+ logging.debug('_FlattenDepsOs(%r)', dep)
+
+ for dep_os, os_deps in dep.os_dependencies.iteritems():
+ for os_dep in os_deps:
+ deps_os.setdefault(dep_os, {})[os_dep.name] = os_dep
+
+
def _AddDep(dep, allowed_hosts, deps, unpinned_deps):
"""Helper to add a dependency to flattened lists.