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 # Files | 7 # Files |
8 # .gclient : Current client configuration, written by 'config' command. | 8 # .gclient : Current client configuration, written by 'config' command. |
9 # Format is a Python script defining 'solutions', a list whose | 9 # Format is a Python script defining 'solutions', a list whose |
10 # entries each are maps binding the strings "name" and "url" | 10 # entries each are maps binding the strings "name" and "url" |
(...skipping 293 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
304 self._used_scm = None | 304 self._used_scm = None |
305 self._used_revision = None | 305 self._used_revision = None |
306 # The actual revision we ended up getting, or None if that information is | 306 # The actual revision we ended up getting, or None if that information is |
307 # unavailable | 307 # unavailable |
308 self._got_revision = None | 308 self._got_revision = None |
309 | 309 |
310 # This is a mutable value that overrides the normal recursion limit for this | 310 # This is a mutable value that overrides the normal recursion limit for this |
311 # dependency. It is read from the actual DEPS file so cannot be set on | 311 # dependency. It is read from the actual DEPS file so cannot be set on |
312 # class instantiation. | 312 # class instantiation. |
313 self.recursion_override = None | 313 self.recursion_override = None |
314 # recurselist is a mutable value that selectively overrides the default | 314 # recursedeps is a mutable value that selectively overrides the default |
315 # 'no recursion' setting on a dep-by-dep basis. It will replace | 315 # 'no recursion' setting on a dep-by-dep basis. It will replace |
316 # recursion_override. | 316 # recursion_override. |
317 self.recurselist = None | 317 self.recursedeps = None |
318 | 318 |
319 if not self.name and self.parent: | 319 if not self.name and self.parent: |
320 raise gclient_utils.Error('Dependency without name') | 320 raise gclient_utils.Error('Dependency without name') |
321 | 321 |
322 @property | 322 @property |
323 def requirements(self): | 323 def requirements(self): |
324 """Calculate the list of requirements.""" | 324 """Calculate the list of requirements.""" |
325 requirements = set() | 325 requirements = set() |
326 # self.parent is implicitly a requirement. This will be recursive by | 326 # self.parent is implicitly a requirement. This will be recursive by |
327 # definition. | 327 # definition. |
(...skipping 21 matching lines...) Expand all Loading... | |
349 requirements |= set( | 349 requirements |= set( |
350 obj.name for obj in self.root.subtree(False) | 350 obj.name for obj in self.root.subtree(False) |
351 if (obj is not self | 351 if (obj is not self |
352 and obj.name and | 352 and obj.name and |
353 self.name.startswith(posixpath.join(obj.name, '')))) | 353 self.name.startswith(posixpath.join(obj.name, '')))) |
354 requirements = tuple(sorted(requirements)) | 354 requirements = tuple(sorted(requirements)) |
355 logging.info('Dependency(%s).requirements = %s' % (self.name, requirements)) | 355 logging.info('Dependency(%s).requirements = %s' % (self.name, requirements)) |
356 return requirements | 356 return requirements |
357 | 357 |
358 @property | 358 @property |
359 def try_recurselist(self): | 359 def try_recursedeps(self): |
360 """Returns False if recursion_override is ever specified.""" | 360 """Returns False if recursion_override is ever specified.""" |
361 if self.recursion_override is not None: | 361 if self.recursion_override is not None: |
362 return False | 362 return False |
363 return self.parent.try_recurselist | 363 return self.parent.try_recursedeps |
364 | 364 |
365 @property | 365 @property |
366 def recursion_limit(self): | 366 def recursion_limit(self): |
367 """Returns > 0 if this dependency is not too recursed to be processed.""" | 367 """Returns > 0 if this dependency is not too recursed to be processed.""" |
368 # We continue to support the absence of recurselist until tools and DEPS | 368 # We continue to support the absence of recursedeps until tools and DEPS |
369 # using recursion_override are updated. | 369 # using recursion_override are updated. |
370 if self.try_recurselist and self.parent.recurselist != None: | 370 if self.try_recursedeps and self.parent.recursedeps != None: |
371 if self.name in self.parent.recurselist: | 371 if self.name in self.parent.recursedeps: |
372 return 1 | 372 return 1 |
373 | 373 |
374 if self.recursion_override is not None: | 374 if self.recursion_override is not None: |
375 return self.recursion_override | 375 return self.recursion_override |
376 return max(self.parent.recursion_limit - 1, 0) | 376 return max(self.parent.recursion_limit - 1, 0) |
377 | 377 |
378 def verify_validity(self): | 378 def verify_validity(self): |
379 """Verifies that this Dependency is fine to add as a child of another one. | 379 """Verifies that this Dependency is fine to add as a child of another one. |
380 | 380 |
381 Returns True if this entry should be added, False if it is a duplicate of | 381 Returns True if this entry should be added, False if it is a duplicate of |
(...skipping 204 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
586 if not isinstance(val, (dict, list, tuple, str)): | 586 if not isinstance(val, (dict, list, tuple, str)): |
587 raise gclient_utils.Error( | 587 raise gclient_utils.Error( |
588 'ParseDepsFile(%s): Strict mode disallows %r -> %r' % | 588 'ParseDepsFile(%s): Strict mode disallows %r -> %r' % |
589 (self.name, key, val)) | 589 (self.name, key, val)) |
590 | 590 |
591 deps = local_scope.get('deps', {}) | 591 deps = local_scope.get('deps', {}) |
592 if 'recursion' in local_scope: | 592 if 'recursion' in local_scope: |
593 self.recursion_override = local_scope.get('recursion') | 593 self.recursion_override = local_scope.get('recursion') |
594 logging.warning( | 594 logging.warning( |
595 'Setting %s recursion to %d.', self.name, self.recursion_limit) | 595 'Setting %s recursion to %d.', self.name, self.recursion_limit) |
596 self.recurselist = local_scope.get('recurselist', None) | 596 self.recursedeps = local_scope.get('recursedeps', None) |
iannucci
2014/07/03 18:55:59
could also cast to a set here. If it's already a s
| |
597 if 'recurselist' in local_scope: | 597 if 'recursedeps' in local_scope: |
598 logging.warning('Found recurselist %r.', repr(self.recurselist)) | 598 logging.warning('Found recursedeps %r.', repr(self.recursedeps)) |
599 # If present, save 'target_os' in the local_target_os property. | 599 # If present, save 'target_os' in the local_target_os property. |
600 if 'target_os' in local_scope: | 600 if 'target_os' in local_scope: |
601 self.local_target_os = local_scope['target_os'] | 601 self.local_target_os = local_scope['target_os'] |
602 # load os specific dependencies if defined. these dependencies may | 602 # load os specific dependencies if defined. these dependencies may |
603 # override or extend the values defined by the 'deps' member. | 603 # override or extend the values defined by the 'deps' member. |
604 target_os_list = self.target_os | 604 target_os_list = self.target_os |
605 if 'deps_os' in local_scope and target_os_list: | 605 if 'deps_os' in local_scope and target_os_list: |
606 deps = self.MergeWithOsDeps(deps, local_scope['deps_os'], target_os_list) | 606 deps = self.MergeWithOsDeps(deps, local_scope['deps_os'], target_os_list) |
607 | 607 |
608 # If a line is in custom_deps, but not in the solution, we want to append | 608 # If a line is in custom_deps, but not in the solution, we want to append |
(...skipping 874 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1483 def enforced_os(self): | 1483 def enforced_os(self): |
1484 """What deps_os entries that are to be parsed.""" | 1484 """What deps_os entries that are to be parsed.""" |
1485 return self._enforced_os | 1485 return self._enforced_os |
1486 | 1486 |
1487 @property | 1487 @property |
1488 def recursion_limit(self): | 1488 def recursion_limit(self): |
1489 """How recursive can each dependencies in DEPS file can load DEPS file.""" | 1489 """How recursive can each dependencies in DEPS file can load DEPS file.""" |
1490 return self._recursion_limit | 1490 return self._recursion_limit |
1491 | 1491 |
1492 @property | 1492 @property |
1493 def try_recurselist(self): | 1493 def try_recursedeps(self): |
1494 """Whether to attempt using recurselist-style recursion processing.""" | 1494 """Whether to attempt using recursedeps-style recursion processing.""" |
1495 return True | 1495 return True |
1496 | 1496 |
1497 @property | 1497 @property |
1498 def target_os(self): | 1498 def target_os(self): |
1499 return self._enforced_os | 1499 return self._enforced_os |
1500 | 1500 |
1501 | 1501 |
1502 #### gclient commands. | 1502 #### gclient commands. |
1503 | 1503 |
1504 | 1504 |
(...skipping 540 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2045 print >> sys.stderr, 'Error: %s' % str(e) | 2045 print >> sys.stderr, 'Error: %s' % str(e) |
2046 return 1 | 2046 return 1 |
2047 finally: | 2047 finally: |
2048 gclient_utils.PrintWarnings() | 2048 gclient_utils.PrintWarnings() |
2049 | 2049 |
2050 | 2050 |
2051 if '__main__' == __name__: | 2051 if '__main__' == __name__: |
2052 sys.exit(Main(sys.argv[1:])) | 2052 sys.exit(Main(sys.argv[1:])) |
2053 | 2053 |
2054 # vim: ts=2:sw=2:tw=80:et: | 2054 # vim: ts=2:sw=2:tw=80:et: |
OLD | NEW |