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 577 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
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.recursedeps = local_scope.get('recursedeps', None) | 596 self.recursedeps = local_scope.get('recursedeps', None) |
597 if 'recursedeps' in local_scope: | 597 if 'recursedeps' in local_scope: |
| 598 self.recursedeps = set(self.recursedeps) |
598 logging.warning('Found recursedeps %r.', repr(self.recursedeps)) | 599 logging.warning('Found recursedeps %r.', repr(self.recursedeps)) |
599 # If present, save 'target_os' in the local_target_os property. | 600 # If present, save 'target_os' in the local_target_os property. |
600 if 'target_os' in local_scope: | 601 if 'target_os' in local_scope: |
601 self.local_target_os = local_scope['target_os'] | 602 self.local_target_os = local_scope['target_os'] |
602 # load os specific dependencies if defined. these dependencies may | 603 # load os specific dependencies if defined. these dependencies may |
603 # override or extend the values defined by the 'deps' member. | 604 # override or extend the values defined by the 'deps' member. |
604 target_os_list = self.target_os | 605 target_os_list = self.target_os |
605 if 'deps_os' in local_scope and target_os_list: | 606 if 'deps_os' in local_scope and target_os_list: |
606 deps = self.MergeWithOsDeps(deps, local_scope['deps_os'], target_os_list) | 607 deps = self.MergeWithOsDeps(deps, local_scope['deps_os'], target_os_list) |
607 | 608 |
608 # If a line is in custom_deps, but not in the solution, we want to append | 609 # If a line is in custom_deps, but not in the solution, we want to append |
609 # this line to the solution. | 610 # this line to the solution. |
610 for d in self.custom_deps: | 611 for d in self.custom_deps: |
611 if d not in deps: | 612 if d not in deps: |
612 deps[d] = self.custom_deps[d] | 613 deps[d] = self.custom_deps[d] |
613 | 614 |
614 # If use_relative_paths is set in the DEPS file, regenerate | 615 # If use_relative_paths is set in the DEPS file, regenerate |
615 # the dictionary using paths relative to the directory containing | 616 # the dictionary using paths relative to the directory containing |
616 # the DEPS file. | 617 # the DEPS file. Also update recursedeps if use_relative_paths is |
| 618 # enabled. |
617 use_relative_paths = local_scope.get('use_relative_paths', False) | 619 use_relative_paths = local_scope.get('use_relative_paths', False) |
618 if use_relative_paths: | 620 if use_relative_paths: |
| 621 logging.warning('use_relative_paths enabled.') |
619 rel_deps = {} | 622 rel_deps = {} |
620 for d, url in deps.items(): | 623 for d, url in deps.items(): |
621 # normpath is required to allow DEPS to use .. in their | 624 # normpath is required to allow DEPS to use .. in their |
622 # dependency local path. | 625 # dependency local path. |
623 rel_deps[os.path.normpath(os.path.join(self.name, d))] = url | 626 rel_deps[os.path.normpath(os.path.join(self.name, d))] = url |
| 627 logging.warning('Updating deps by prepending %s.', self.name) |
624 deps = rel_deps | 628 deps = rel_deps |
625 | 629 |
| 630 # Update recursedeps if it's set. |
| 631 if self.recursedeps is not None: |
| 632 logging.warning('Updating recursedeps by prepending %s.', self.name) |
| 633 rel_deps = set() |
| 634 for d in self.recursedeps: |
| 635 rel_deps.add(os.path.normpath(os.path.join(self.name, d))) |
| 636 self.recursedeps = rel_deps |
| 637 |
626 # Convert the deps into real Dependency. | 638 # Convert the deps into real Dependency. |
627 deps_to_add = [] | 639 deps_to_add = [] |
628 for name, url in deps.iteritems(): | 640 for name, url in deps.iteritems(): |
629 should_process = self.recursion_limit and self.should_process | 641 should_process = self.recursion_limit and self.should_process |
630 deps_to_add.append(Dependency( | 642 deps_to_add.append(Dependency( |
631 self, name, url, None, None, None, None, None, | 643 self, name, url, None, None, None, None, None, |
632 self.deps_file, should_process)) | 644 self.deps_file, should_process)) |
633 deps_to_add.sort(key=lambda x: x.name) | 645 deps_to_add.sort(key=lambda x: x.name) |
634 | 646 |
635 # override named sets of hooks by the custom hooks | 647 # override named sets of hooks by the custom hooks |
(...skipping 1409 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2045 print >> sys.stderr, 'Error: %s' % str(e) | 2057 print >> sys.stderr, 'Error: %s' % str(e) |
2046 return 1 | 2058 return 1 |
2047 finally: | 2059 finally: |
2048 gclient_utils.PrintWarnings() | 2060 gclient_utils.PrintWarnings() |
2049 | 2061 |
2050 | 2062 |
2051 if '__main__' == __name__: | 2063 if '__main__' == __name__: |
2052 sys.exit(Main(sys.argv[1:])) | 2064 sys.exit(Main(sys.argv[1:])) |
2053 | 2065 |
2054 # vim: ts=2:sw=2:tw=80:et: | 2066 # vim: ts=2:sw=2:tw=80:et: |
OLD | NEW |