Initial step into making Dependency thread safe

R=dpranke@chromium.org
BUG=
TEST=


Review URL: http://codereview.chromium.org/7892034

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@101135 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/gclient.py b/gclient.py
index f568662..c836d9e 100644
--- a/gclient.py
+++ b/gclient.py
@@ -145,9 +145,8 @@
     # 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 @@
     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 @@
     # 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 @@
       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,7 +235,7 @@
           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)