| Index: gclient.py
 | 
| diff --git a/gclient.py b/gclient.py
 | 
| index 6ecb941887330266baf2f15804d9b08b9d7ee484..22e5f990a635b2da696922bf41862c2fa6c1fc6d 100644
 | 
| --- a/gclient.py
 | 
| +++ b/gclient.py
 | 
| @@ -344,22 +344,15 @@ class Dependency(gclient_utils.WorkItem, DependencySettings):
 | 
|        # It may happen that len(ref) > 1 but it's no big deal.
 | 
|        ref = ref[0]
 | 
|        sub_target = url.sub_target_name or self.name
 | 
| -      # Make sure the referenced dependency DEPS file is loaded and file the
 | 
| -      # inner referenced dependency.
 | 
| -      # TODO(maruel): Shouldn't do that.
 | 
| -      ref.ParseDepsFile()
 | 
| -      found_dep = None
 | 
| -      for d in ref.dependencies:
 | 
| -        if d.name == sub_target:
 | 
| -          found_dep = d
 | 
| -          break
 | 
| -      if not found_dep:
 | 
| +      found_deps = [d for d in ref.dependencies if d.name == sub_target]
 | 
| +      if len(found_deps) != 1:
 | 
|          raise gclient_utils.Error(
 | 
|              'Couldn\'t find %s in %s, referenced by %s (parent: %s)\n%s' % (
 | 
|                  sub_target, ref.name, self.name, self.parent.name,
 | 
|                  str(self.root)))
 | 
|  
 | 
|        # Call LateOverride() again.
 | 
| +      found_dep = found_deps[0]
 | 
|        parsed_url = found_dep.LateOverride(found_dep.url)
 | 
|        logging.info(
 | 
|            'LateOverride(%s, %s) -> %s (From)' % (self.name, url, parsed_url))
 | 
| @@ -396,9 +389,7 @@ class Dependency(gclient_utils.WorkItem, DependencySettings):
 | 
|  
 | 
|    def ParseDepsFile(self):
 | 
|      """Parses the DEPS file for this dependency."""
 | 
| -    if self.deps_parsed:
 | 
| -      logging.debug('%s was already parsed' % self.name)
 | 
| -      return
 | 
| +    assert not self.deps_parsed
 | 
|      assert not self.dependencies
 | 
|      # One thing is unintuitive, vars = {} must happen before Var() use.
 | 
|      local_scope = {}
 | 
| @@ -561,9 +552,8 @@ class Dependency(gclient_utils.WorkItem, DependencySettings):
 | 
|          while file_list[i].startswith(('\\', '/')):
 | 
|            file_list[i] = file_list[i][1:]
 | 
|  
 | 
| -    if self.recursion_limit:
 | 
| -      # Then we can parse the DEPS file.
 | 
| -      self.ParseDepsFile()
 | 
| +    # Always parse the DEPS file.
 | 
| +    self.ParseDepsFile()
 | 
|  
 | 
|      self._run_is_done(file_list, parsed_url)
 | 
|  
 | 
| @@ -685,6 +675,7 @@ class Dependency(gclient_utils.WorkItem, DependencySettings):
 | 
|    @property
 | 
|    @gclient_utils.lockedmethod
 | 
|    def deps_parsed(self):
 | 
| +    """This is purely for debugging purposes. It's not used anywhere."""
 | 
|      return self._deps_parsed
 | 
|  
 | 
|    @property
 | 
| 
 |