Index: gclient.py |
diff --git a/gclient.py b/gclient.py |
index c038738c10d2d7d45793f947651ebf7edb460970..046b4fc8907cff8df035222a833bd15a05a48342 100644 |
--- a/gclient.py |
+++ b/gclient.py |
@@ -145,9 +145,8 @@ class Dependency(GClientKeywords, gclient_utils.WorkItem): |
# self.dependencies and self.requirements are read and modified from |
# multiple threads at the same time. Sad. |
GClientKeywords.__init__(self) |
- gclient_utils.WorkItem.__init__(self) |
+ gclient_utils.WorkItem.__init__(self, name) |
self.parent = parent |
- self.name = name |
self.url = url |
self.parsed_url = None |
# These 2 are only set in .gclient and not in DEPS files. |
@@ -169,8 +168,6 @@ class Dependency(GClientKeywords, gclient_utils.WorkItem): |
self.processed = False |
# This dependency had its hook run |
self.hooks_ran = False |
- # Required dependencies to run before running this one: |
- self.requirements = set() |
# Post process the url to remove trailing slashes. |
if isinstance(self.url, basestring): |
@@ -201,7 +198,7 @@ class Dependency(GClientKeywords, gclient_utils.WorkItem): |
# self.parent is implicitly a requirement. This will be recursive by |
# definition. |
if self.parent and self.parent.name: |
- self.requirements.add(self.parent.name) |
+ self._requirements.add(self.parent.name) |
# For a tree with at least 2 levels*, the leaf node needs to depend |
# on the level higher up in an orderly way. |
@@ -219,10 +216,10 @@ class Dependency(GClientKeywords, gclient_utils.WorkItem): |
for i in range(0, root_deps.index(self.parent)): |
value = root_deps[i] |
if value.name: |
- self.requirements.add(value.name) |
+ self._requirements.add(value.name) |
if isinstance(self.url, self.FromImpl): |
- self.requirements.add(self.url.module_name) |
+ self._requirements.add(self.url.module_name) |
if self.name and self.should_process: |
def yield_full_tree(root): |
@@ -238,10 +235,16 @@ class Dependency(GClientKeywords, gclient_utils.WorkItem): |
continue |
# Step 1: Find any requirements self may need. |
if self.name.startswith(posixpath.join(obj.name, '')): |
- self.requirements.add(obj.name) |
+ self._requirements.add(obj.name) |
# Step 2: Find any requirements self may impose. |
if obj.name.startswith(posixpath.join(self.name, '')): |
- obj.requirements.add(self.name) |
+ try: |
+ # Access to a protected member _requirements of a client class |
+ # pylint: disable=W0212 |
+ obj.lock.acquire() |
+ obj._requirements.add(self.name) |
+ finally: |
+ obj.lock.release() |
def LateOverride(self, url): |
"""Resolves the parsed url from url. |