From c9353605bf9ad5fb135fe364b2106f9041e89316 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Hajdan=2C=20Jr?= Date: Wed, 2 Aug 2017 17:52:08 +0200 Subject: [PATCH] gclient flatten: fixes for chromium/src MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - allow variables with same names as long as values are also the same - allow recursedeps entries referencing deps_os entries Bug: 570091 Change-Id: I4abbd255982368a0ee33e8f3de631f3d18adf6ab Reviewed-on: https://chromium-review.googlesource.com/583649 Reviewed-by: Dirk Pranke Commit-Queue: Paweł Hajdan Jr. --- gclient.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/gclient.py b/gclient.py index 9b06da91d..7c2a42116 100755 --- a/gclient.py +++ b/gclient.py @@ -1775,7 +1775,9 @@ class Flattener(object): self._deps[dep.name] = dep for key, value in dep.get_vars().iteritems(): - assert key not in self._vars + # Make sure there are no conflicting variables. It is fine however + # to use same variable name, as long as the value is consistent. + assert key not in self._vars or self._vars[key][1] == value self._vars[key] = (dep, value) self._hooks.extend([(dep, hook) for hook in dep.deps_hooks]) @@ -1788,6 +1790,13 @@ class Flattener(object): self._add_deps_os(dep) deps_by_name = dict((d.name, d) for d in dep.dependencies) + # Allow recursedeps entries that refer to deps_os entries. + # In case there are multiple entries with the same name, + # we have to pick something - e.g. the first one. + for os_deps in dep.os_dependencies.itervalues(): + for os_dep in os_deps: + if os_dep.name not in deps_by_name: + deps_by_name[os_dep.name] = os_dep for recurse_dep_name in (dep.recursedeps or []): self._flatten_recurse(deps_by_name[recurse_dep_name])