| OLD | NEW |
| 1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
| 2 # Copyright 2013 the V8 project authors. All rights reserved. | 2 # Copyright 2013 the V8 project authors. All rights reserved. |
| 3 # Redistribution and use in source and binary forms, with or without | 3 # Redistribution and use in source and binary forms, with or without |
| 4 # modification, are permitted provided that the following conditions are | 4 # modification, are permitted provided that the following conditions are |
| 5 # met: | 5 # met: |
| 6 # | 6 # |
| 7 # * Redistributions of source code must retain the above copyright | 7 # * Redistributions of source code must retain the above copyright |
| 8 # notice, this list of conditions and the following disclaimer. | 8 # notice, this list of conditions and the following disclaimer. |
| 9 # * Redistributions in binary form must reproduce the above | 9 # * Redistributions in binary form must reproduce the above |
| 10 # copyright notice, this list of conditions and the following | 10 # copyright notice, this list of conditions and the following |
| (...skipping 590 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 601 for line in self.GitBranch().splitlines(): | 601 for line in self.GitBranch().splitlines(): |
| 602 if re.match(r"\*?\s*%s$" % re.escape(name), line): | 602 if re.match(r"\*?\s*%s$" % re.escape(name), line): |
| 603 msg = "Branch %s exists, do you want to delete it?" % name | 603 msg = "Branch %s exists, do you want to delete it?" % name |
| 604 if self.Confirm(msg): | 604 if self.Confirm(msg): |
| 605 self.GitDeleteBranch(name) | 605 self.GitDeleteBranch(name) |
| 606 print "Branch %s deleted." % name | 606 print "Branch %s deleted." % name |
| 607 else: | 607 else: |
| 608 msg = "Can't continue. Please delete branch %s and try again." % name | 608 msg = "Can't continue. Please delete branch %s and try again." % name |
| 609 self.Die(msg) | 609 self.Die(msg) |
| 610 | 610 |
| 611 def BootstrapV8Checkout(self): | |
| 612 if os.path.realpath(self.default_cwd) == os.path.realpath(V8_BASE): | |
| 613 self.Die("Can't use v8 checkout with calling script as work checkout.") | |
| 614 # Directory containing the working v8 checkout. | |
| 615 work_dir = os.path.dirname(self.default_cwd) | |
| 616 assert os.path.join(work_dir, "v8") == self.default_cwd | |
| 617 | |
| 618 if not os.path.exits(work_dir): | |
| 619 os.makedirs(work_dir) | |
| 620 if not os.path.exits(self.default_cwd): | |
| 621 self.Command("fetch", "v8") | |
| 622 | |
| 623 def InitialEnvironmentChecks(self, cwd): | 611 def InitialEnvironmentChecks(self, cwd): |
| 624 # Cancel if this is not a git checkout. | 612 # Cancel if this is not a git checkout. |
| 625 if not os.path.exists(os.path.join(cwd, ".git")): # pragma: no cover | 613 if not os.path.exists(os.path.join(cwd, ".git")): # pragma: no cover |
| 626 self.Die("This is not a git checkout, this script won't work for you.") | 614 self.Die("This is not a git checkout, this script won't work for you.") |
| 627 | 615 |
| 628 # Cancel if EDITOR is unset or not executable. | 616 # Cancel if EDITOR is unset or not executable. |
| 629 if (self._options.requires_editor and (not os.environ.get("EDITOR") or | 617 if (self._options.requires_editor and (not os.environ.get("EDITOR") or |
| 630 self.Command( | 618 self.Command( |
| 631 "which", os.environ["EDITOR"]) is None)): # pragma: no cover | 619 "which", os.environ["EDITOR"]) is None)): # pragma: no cover |
| 632 self.Die("Please set your EDITOR environment variable, you'll need it.") | 620 self.Die("Please set your EDITOR environment variable, you'll need it.") |
| (...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 750 self.Die("Could not apply patch.") | 738 self.Die("Could not apply patch.") |
| 751 # Recursively add possibly newly added files. | 739 # Recursively add possibly newly added files. |
| 752 self.Command("svn", "add --force %s" % root, cwd=self._options.svn) | 740 self.Command("svn", "add --force %s" % root, cwd=self._options.svn) |
| 753 self.Command( | 741 self.Command( |
| 754 "svn", | 742 "svn", |
| 755 "commit --non-interactive --username=%s --config-dir=%s -m \"%s\"" % | 743 "commit --non-interactive --username=%s --config-dir=%s -m \"%s\"" % |
| 756 (self._options.author, self._options.svn_config, commit_message), | 744 (self._options.author, self._options.svn_config, commit_message), |
| 757 cwd=self._options.svn) | 745 cwd=self._options.svn) |
| 758 | 746 |
| 759 | 747 |
| 748 class BootstrapStep(Step): |
| 749 MESSAGE = "Bootstapping v8 checkout." |
| 750 |
| 751 def RunStep(self): |
| 752 if os.path.realpath(self.default_cwd) == os.path.realpath(V8_BASE): |
| 753 self.Die("Can't use v8 checkout with calling script as work checkout.") |
| 754 # Directory containing the working v8 checkout. |
| 755 if not os.path.exists(self._options.work_dir): |
| 756 os.makedirs(self._options.work_dir) |
| 757 if not os.path.exists(self.default_cwd): |
| 758 self.Command("fetch", "v8", cwd=self._options.work_dir) |
| 759 |
| 760 |
| 760 class UploadStep(Step): | 761 class UploadStep(Step): |
| 761 MESSAGE = "Upload for code review." | 762 MESSAGE = "Upload for code review." |
| 762 | 763 |
| 763 def RunStep(self): | 764 def RunStep(self): |
| 764 if self._options.reviewer: | 765 if self._options.reviewer: |
| 765 print "Using account %s for review." % self._options.reviewer | 766 print "Using account %s for review." % self._options.reviewer |
| 766 reviewer = self._options.reviewer | 767 reviewer = self._options.reviewer |
| 767 else: | 768 else: |
| 768 print "Please enter the email address of a V8 reviewer for your patch: ", | 769 print "Please enter the email address of a V8 reviewer for your patch: ", |
| 769 self.DieNoManualMode("A reviewer must be specified in forced mode.") | 770 self.DieNoManualMode("A reviewer must be specified in forced mode.") |
| (...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 921 def RunSteps(self, step_classes, args=None): | 922 def RunSteps(self, step_classes, args=None): |
| 922 options = self.MakeOptions(args) | 923 options = self.MakeOptions(args) |
| 923 if not options: | 924 if not options: |
| 924 return 1 | 925 return 1 |
| 925 | 926 |
| 926 state_file = "%s-state.json" % self._config["PERSISTFILE_BASENAME"] | 927 state_file = "%s-state.json" % self._config["PERSISTFILE_BASENAME"] |
| 927 if options.step == 0 and os.path.exists(state_file): | 928 if options.step == 0 and os.path.exists(state_file): |
| 928 os.remove(state_file) | 929 os.remove(state_file) |
| 929 | 930 |
| 930 steps = [] | 931 steps = [] |
| 931 for (number, step_class) in enumerate(step_classes): | 932 for (number, step_class) in enumerate([BootstrapStep] + step_classes): |
| 932 steps.append(MakeStep(step_class, number, self._state, self._config, | 933 steps.append(MakeStep(step_class, number, self._state, self._config, |
| 933 options, self._side_effect_handler)) | 934 options, self._side_effect_handler)) |
| 934 for step in steps[options.step:]: | 935 for step in steps[options.step:]: |
| 935 if step.Run(): | 936 if step.Run(): |
| 936 return 0 | 937 return 0 |
| 937 return 0 | 938 return 0 |
| 938 | 939 |
| 939 def Run(self, args=None): | 940 def Run(self, args=None): |
| 940 return self.RunSteps(self._Steps(), args) | 941 return self.RunSteps(self._Steps(), args) |
| OLD | NEW |