| OLD | NEW |
| 1 #!/usr/bin/python | 1 #!/usr/bin/python |
| 2 # | 2 # |
| 3 # Copyright 2008 Google Inc. All Rights Reserved. | 3 # Copyright 2008 Google Inc. All Rights Reserved. |
| 4 # | 4 # |
| 5 # Licensed under the Apache License, Version 2.0 (the "License"); | 5 # Licensed under the Apache License, Version 2.0 (the "License"); |
| 6 # you may not use this file except in compliance with the License. | 6 # you may not use this file except in compliance with the License. |
| 7 # You may obtain a copy of the License at | 7 # You may obtain a copy of the License at |
| 8 # | 8 # |
| 9 # http://www.apache.org/licenses/LICENSE-2.0 | 9 # http://www.apache.org/licenses/LICENSE-2.0 |
| 10 # | 10 # |
| (...skipping 536 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 547 else: | 547 else: |
| 548 parsed_url = urlparse.urlparse(url) | 548 parsed_url = urlparse.urlparse(url) |
| 549 scheme = parsed_url[0] | 549 scheme = parsed_url[0] |
| 550 if not scheme: | 550 if not scheme: |
| 551 # A relative url. Fetch the real base. | 551 # A relative url. Fetch the real base. |
| 552 path = parsed_url[2] | 552 path = parsed_url[2] |
| 553 if path[0] != "/": | 553 if path[0] != "/": |
| 554 raise Error( | 554 raise Error( |
| 555 "relative DEPS entry \"%s\" must begin with a slash" % d) | 555 "relative DEPS entry \"%s\" must begin with a slash" % d) |
| 556 # Create a scm just to query the full url. | 556 # Create a scm just to query the full url. |
| 557 scm = gclient_scm.create_scm(solution["url"], self._root_dir, | 557 scm = gclient_scm.SCMWrapper(solution["url"], self._root_dir, |
| 558 None) | 558 None) |
| 559 url = scm.FullUrlForRelativeUrl(url) | 559 url = scm.FullUrlForRelativeUrl(url) |
| 560 if d in deps and deps[d] != url: | 560 if d in deps and deps[d] != url: |
| 561 raise Error( | 561 raise Error( |
| 562 "Solutions have conflicting versions of dependency \"%s\"" % d) | 562 "Solutions have conflicting versions of dependency \"%s\"" % d) |
| 563 if d in solution_urls and solution_urls[d] != url: | 563 if d in solution_urls and solution_urls[d] != url: |
| 564 raise Error( | 564 raise Error( |
| 565 "Dependency \"%s\" conflicts with specified solution" % d) | 565 "Dependency \"%s\" conflicts with specified solution" % d) |
| 566 # Grab the dependency. | 566 # Grab the dependency. |
| 567 deps[d] = url | 567 deps[d] = url |
| (...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 664 name = solution["name"] | 664 name = solution["name"] |
| 665 deps_file = solution.get("deps_file", self._options.deps_file) | 665 deps_file = solution.get("deps_file", self._options.deps_file) |
| 666 if '/' in deps_file or '\\' in deps_file: | 666 if '/' in deps_file or '\\' in deps_file: |
| 667 raise Error("deps_file name must not be a path, just a filename.") | 667 raise Error("deps_file name must not be a path, just a filename.") |
| 668 if name in entries: | 668 if name in entries: |
| 669 raise Error("solution %s specified more than once" % name) | 669 raise Error("solution %s specified more than once" % name) |
| 670 url = solution["url"] | 670 url = solution["url"] |
| 671 entries[name] = url | 671 entries[name] = url |
| 672 if run_scm: | 672 if run_scm: |
| 673 self._options.revision = revision_overrides.get(name) | 673 self._options.revision = revision_overrides.get(name) |
| 674 scm = gclient_scm.create_scm(url, self._root_dir, name) | 674 scm = gclient_scm.SCMWrapper(url, self._root_dir, name) |
| 675 scm.RunCommand(command, self._options, args, file_list) | 675 scm.RunCommand(command, self._options, args, file_list) |
| 676 file_list = [os.path.join(name, file.strip()) for file in file_list] | 676 file_list = [os.path.join(name, file.strip()) for file in file_list] |
| 677 self._options.revision = None | 677 self._options.revision = None |
| 678 try: | 678 try: |
| 679 deps_content = FileRead(os.path.join(self._root_dir, name, | 679 deps_content = FileRead(os.path.join(self._root_dir, name, |
| 680 deps_file)) | 680 deps_file)) |
| 681 except IOError, e: | 681 except IOError, e: |
| 682 if e.errno != errno.ENOENT: | 682 if e.errno != errno.ENOENT: |
| 683 raise | 683 raise |
| 684 deps_content = "" | 684 deps_content = "" |
| 685 entries_deps_content[name] = deps_content | 685 entries_deps_content[name] = deps_content |
| 686 | 686 |
| 687 # Process the dependencies next (sort alphanumerically to ensure that | 687 # Process the dependencies next (sort alphanumerically to ensure that |
| 688 # containing directories get populated first and for readability) | 688 # containing directories get populated first and for readability) |
| 689 deps = self._ParseAllDeps(entries, entries_deps_content) | 689 deps = self._ParseAllDeps(entries, entries_deps_content) |
| 690 deps_to_process = deps.keys() | 690 deps_to_process = deps.keys() |
| 691 deps_to_process.sort() | 691 deps_to_process.sort() |
| 692 | 692 |
| 693 # First pass for direct dependencies. | 693 # First pass for direct dependencies. |
| 694 for d in deps_to_process: | 694 for d in deps_to_process: |
| 695 if type(deps[d]) == str: | 695 if type(deps[d]) == str: |
| 696 url = deps[d] | 696 url = deps[d] |
| 697 entries[d] = url | 697 entries[d] = url |
| 698 if run_scm: | 698 if run_scm: |
| 699 self._options.revision = revision_overrides.get(d) | 699 self._options.revision = revision_overrides.get(d) |
| 700 scm = gclient_scm.create_scm(url, self._root_dir, d) | 700 scm = gclient_scm.SCMWrapper(url, self._root_dir, d) |
| 701 scm.RunCommand(command, self._options, args, file_list) | 701 scm.RunCommand(command, self._options, args, file_list) |
| 702 self._options.revision = None | 702 self._options.revision = None |
| 703 | 703 |
| 704 # Second pass for inherited deps (via the From keyword) | 704 # Second pass for inherited deps (via the From keyword) |
| 705 for d in deps_to_process: | 705 for d in deps_to_process: |
| 706 if type(deps[d]) != str: | 706 if type(deps[d]) != str: |
| 707 sub_deps = self._ParseSolutionDeps( | 707 sub_deps = self._ParseSolutionDeps( |
| 708 deps[d].module_name, | 708 deps[d].module_name, |
| 709 FileRead(os.path.join(self._root_dir, | 709 FileRead(os.path.join(self._root_dir, |
| 710 deps[d].module_name, | 710 deps[d].module_name, |
| 711 self._options.deps_file)), | 711 self._options.deps_file)), |
| 712 {}) | 712 {}) |
| 713 url = sub_deps[d] | 713 url = sub_deps[d] |
| 714 entries[d] = url | 714 entries[d] = url |
| 715 if run_scm: | 715 if run_scm: |
| 716 self._options.revision = revision_overrides.get(d) | 716 self._options.revision = revision_overrides.get(d) |
| 717 scm = gclient_scm.create_scm(url, self._root_dir, d) | 717 scm = gclient_scm.SCMWrapper(url, self._root_dir, d) |
| 718 scm.RunCommand(command, self._options, args, file_list) | 718 scm.RunCommand(command, self._options, args, file_list) |
| 719 self._options.revision = None | 719 self._options.revision = None |
| 720 | 720 |
| 721 # Convert all absolute paths to relative. | 721 # Convert all absolute paths to relative. |
| 722 for i in range(len(file_list)): | 722 for i in range(len(file_list)): |
| 723 # TODO(phajdan.jr): We should know exactly when the paths are absolute. | 723 # TODO(phajdan.jr): We should know exactly when the paths are absolute. |
| 724 # It depends on the command being executed (like runhooks vs sync). | 724 # It depends on the command being executed (like runhooks vs sync). |
| 725 if not os.path.isabs(file_list[i]): | 725 if not os.path.isabs(file_list[i]): |
| 726 continue | 726 continue |
| 727 | 727 |
| (...skipping 451 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1179 | 1179 |
| 1180 if "__main__" == __name__: | 1180 if "__main__" == __name__: |
| 1181 try: | 1181 try: |
| 1182 result = Main(sys.argv) | 1182 result = Main(sys.argv) |
| 1183 except Error, e: | 1183 except Error, e: |
| 1184 print >> sys.stderr, "Error: %s" % str(e) | 1184 print >> sys.stderr, "Error: %s" % str(e) |
| 1185 result = 1 | 1185 result = 1 |
| 1186 sys.exit(result) | 1186 sys.exit(result) |
| 1187 | 1187 |
| 1188 # vim: ts=2:sw=2:tw=80:et: | 1188 # vim: ts=2:sw=2:tw=80:et: |
| OLD | NEW |