Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
| 2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. | 2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 3 # Use of this source code is governed by a BSD-style license that can be | 3 # Use of this source code is governed by a BSD-style license that can be |
| 4 # found in the LICENSE file. | 4 # found in the LICENSE file. |
| 5 | 5 |
| 6 """Meta checkout manager supporting both Subversion and GIT. | 6 """Meta checkout manager supporting both Subversion and GIT. |
| 7 | 7 |
| 8 Files | 8 Files |
| 9 .gclient : Current client configuration, written by 'config' command. | 9 .gclient : Current client configuration, written by 'config' command. |
| 10 Format is a Python script defining 'solutions', a list whose | 10 Format is a Python script defining 'solutions', a list whose |
| (...skipping 307 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 318 raise gclient_utils.Error( | 318 raise gclient_utils.Error( |
| 319 'The same name "%s" appears multiple times in the deps section' % | 319 'The same name "%s" appears multiple times in the deps section' % |
| 320 self.name) | 320 self.name) |
| 321 if not self.should_process: | 321 if not self.should_process: |
| 322 # Return early, no need to set requirements. | 322 # Return early, no need to set requirements. |
| 323 return True | 323 return True |
| 324 | 324 |
| 325 # This require a full tree traversal with locks. | 325 # This require a full tree traversal with locks. |
| 326 siblings = [d for d in self.root.subtree(False) if d.name == self.name] | 326 siblings = [d for d in self.root.subtree(False) if d.name == self.name] |
| 327 for sibling in siblings: | 327 for sibling in siblings: |
| 328 if self.url != sibling.url: | 328 self_url = self.LateOverride(self.url) |
| 329 raise gclient_utils.Error( | 329 sibling_url = sibling.LateOverride(sibling.url) |
| 330 'Dependency %s specified more than once:\n %s\nvs\n %s' % | 330 if self_url != sibling_url: |
|
szager1
2012/10/09 18:30:11
if self_url and sibling_url and self_url != siblin
M-A Ruel
2012/10/09 18:38:22
Agreed, I changed it.
| |
| 331 (self.name, sibling.hierarchy(), self.hierarchy())) | 331 # Allow to have only one to be None. |
| 332 if bool(self_url is None) == bool(sibling_url is None): | |
| 333 raise gclient_utils.Error( | |
| 334 ('Dependency %s specified more than once:\n' | |
| 335 ' %s [%s]\n' | |
| 336 'vs\n' | |
| 337 ' %s [%s]') % ( | |
| 338 self.name, | |
| 339 sibling.hierarchy(), | |
| 340 sibling_url, | |
| 341 self.hierarchy(), | |
| 342 self_url)) | |
| 332 # In theory we could keep it as a shadow of the other one. In | 343 # In theory we could keep it as a shadow of the other one. In |
| 333 # practice, simply ignore it. | 344 # practice, simply ignore it. |
| 334 logging.warn('Won\'t process duplicate dependency %s' % sibling) | 345 logging.warn('Won\'t process duplicate dependency %s' % sibling) |
| 335 return False | 346 return False |
| 336 return True | 347 return True |
| 337 | 348 |
| 338 def LateOverride(self, url): | 349 def LateOverride(self, url): |
| 339 """Resolves the parsed url from url. | 350 """Resolves the parsed url from url. |
| 340 | 351 |
| 341 Manages From() keyword accordingly. Do not touch self.parsed_url nor | 352 Manages From() keyword accordingly. Do not touch self.parsed_url nor |
| (...skipping 1281 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1623 except (gclient_utils.Error, subprocess2.CalledProcessError), e: | 1634 except (gclient_utils.Error, subprocess2.CalledProcessError), e: |
| 1624 print >> sys.stderr, 'Error: %s' % str(e) | 1635 print >> sys.stderr, 'Error: %s' % str(e) |
| 1625 return 1 | 1636 return 1 |
| 1626 | 1637 |
| 1627 | 1638 |
| 1628 if '__main__' == __name__: | 1639 if '__main__' == __name__: |
| 1629 fix_encoding.fix_encoding() | 1640 fix_encoding.fix_encoding() |
| 1630 sys.exit(Main(sys.argv[1:])) | 1641 sys.exit(Main(sys.argv[1:])) |
| 1631 | 1642 |
| 1632 # vim: ts=2:sw=2:tw=80:et: | 1643 # vim: ts=2:sw=2:tw=80:et: |
| OLD | NEW |