diff --git a/gclient.py b/gclient.py index c23b0023c..cef9f1afc 100644 --- a/gclient.py +++ b/gclient.py @@ -325,10 +325,20 @@ class Dependency(gclient_utils.WorkItem, DependencySettings): # This require a full tree traversal with locks. siblings = [d for d in self.root.subtree(False) if d.name == self.name] for sibling in siblings: - if self.url != sibling.url: + self_url = self.LateOverride(self.url) + sibling_url = sibling.LateOverride(sibling.url) + # Allow to have only one to be None or ''. + if self_url != sibling_url and bool(self_url) == bool(sibling_url): raise gclient_utils.Error( - 'Dependency %s specified more than once:\n %s\nvs\n %s' % - (self.name, sibling.hierarchy(), self.hierarchy())) + ('Dependency %s specified more than once:\n' + ' %s [%s]\n' + 'vs\n' + ' %s [%s]') % ( + self.name, + sibling.hierarchy(), + sibling_url, + self.hierarchy(), + self_url)) # In theory we could keep it as a shadow of the other one. In # practice, simply ignore it. logging.warn('Won\'t process duplicate dependency %s' % sibling)