| Index: gclient.py
|
| diff --git a/gclient.py b/gclient.py
|
| index b7d8e77e7c19734494661431397d047f2023ffaf..7bd53ea81f719f87a79619f004b899a0440bd920 100644
|
| --- a/gclient.py
|
| +++ b/gclient.py
|
| @@ -163,9 +163,9 @@ class Dependency(GClientKeywords, gclient_utils.WorkItem):
|
| # 'managed' via the --unmanaged command-line flag or a .gclient config,
|
| # where 'should_process' is dynamically set by gclient if it goes over its
|
| # recursion limit and controls gclient's behavior so it does not misbehave.
|
| - self.managed = managed
|
| - self.custom_vars = custom_vars or {}
|
| - self.custom_deps = custom_deps or {}
|
| + self._managed = managed
|
| + self._custom_vars = custom_vars or {}
|
| + self._custom_deps = custom_deps or {}
|
| self.deps_hooks = []
|
|
|
| # Calculates properties:
|
| @@ -226,10 +226,11 @@ class Dependency(GClientKeywords, gclient_utils.WorkItem):
|
| # they already have their parent as a requirement.
|
| root_deps = self.root.dependencies
|
| if self.parent in root_deps:
|
| - for i in range(0, root_deps.index(self.parent)):
|
| - value = root_deps[i]
|
| - if value.name:
|
| - self._requirements.add(value.name)
|
| + for i in root_deps:
|
| + if i is self.parent:
|
| + break
|
| + if i.name:
|
| + self._requirements.add(i.name)
|
|
|
| if isinstance(self.url, self.FromImpl):
|
| self._requirements.add(self.url.module_name)
|
| @@ -357,9 +358,10 @@ class Dependency(GClientKeywords, gclient_utils.WorkItem):
|
| # 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:
|
| - for deps_os_key in self.root.enforced_os:
|
| + enforced_os = self.root.enforced_os
|
| + for deps_os_key in enforced_os:
|
| os_deps = local_scope['deps_os'].get(deps_os_key, {})
|
| - if len(self.root.enforced_os) > 1:
|
| + if len(enforced_os) > 1:
|
| # Ignore any conflict when including deps for more than one
|
| # platform, so we collect the broadest set of dependencies
|
| # available. We may end up with the wrong revision of something for
|
| @@ -566,10 +568,11 @@ class Dependency(GClientKeywords, gclient_utils.WorkItem):
|
| def subtree(self, include_all):
|
| """Breadth first"""
|
| result = []
|
| - for d in self.dependencies:
|
| + dependencies = self.dependencies
|
| + for d in dependencies:
|
| if d.should_process or include_all:
|
| result.append(d)
|
| - for d in self.dependencies:
|
| + for d in dependencies:
|
| result.extend(d.subtree(include_all))
|
| return result
|
|
|
| @@ -582,15 +585,24 @@ class Dependency(GClientKeywords, gclient_utils.WorkItem):
|
|
|
| @property
|
| def recursion_limit(self):
|
| - """Returns > 0 if this dependency is not too recursed to be processed."""
|
| + """Returns > 0 if this dependency is not too recursed to be processed.
|
| +
|
| + Immutable so no need to lock."""
|
| return max(self.parent.recursion_limit - 1, 0)
|
|
|
| @property
|
| def deps_file(self):
|
| + """Immutable so no need to lock."""
|
| return self._deps_file
|
|
|
| @property
|
| + def managed(self):
|
| + """Immutable so no need to lock."""
|
| + return self._managed
|
| +
|
| + @property
|
| def safesync_url(self):
|
| + """Immutable so no need to lock."""
|
| return self._safesync_url
|
|
|
| @property
|
| @@ -600,9 +612,21 @@ class Dependency(GClientKeywords, gclient_utils.WorkItem):
|
|
|
| @property
|
| def parent(self):
|
| + """Immutable so no need to lock."""
|
| return self._parent
|
|
|
| @property
|
| + def custom_vars(self):
|
| + """Immutable so no need to lock."""
|
| + return self._custom_vars.copy()
|
| +
|
| + @property
|
| + def custom_deps(self):
|
| + """Immutable so no need to lock."""
|
| + return self._custom_deps.copy()
|
| +
|
| + @property
|
| + @gclient_utils.lockedmethod
|
| def file_list(self):
|
| result = self._file_list[:]
|
| for d in self.dependencies:
|
| @@ -712,7 +736,7 @@ solutions = [
|
| self.config_content = None
|
|
|
| def SetConfig(self, content):
|
| - assert self.dependencies == []
|
| + assert not self.dependencies
|
| config_dict = {}
|
| self.config_content = content
|
| try:
|
|
|