Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(416)

Unified Diff: tools/push-to-trunk/common_includes.py

Issue 540973002: Add cwd to all shell commands in auto roll scripts. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 6 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « tools/push-to-trunk/chromium_roll.py ('k') | tools/push-to-trunk/git_recipes.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tools/push-to-trunk/common_includes.py
diff --git a/tools/push-to-trunk/common_includes.py b/tools/push-to-trunk/common_includes.py
index 159f127325ce1e3d7e0b67fa19c5b6012c2cfda4..f98008a0b2453153c9b1452c7a78368f5f7ecf4c 100644
--- a/tools/push-to-trunk/common_includes.py
+++ b/tools/push-to-trunk/common_includes.py
@@ -29,10 +29,12 @@
import argparse
import datetime
import httplib
+import glob
import imp
import json
import os
import re
+import shutil
import subprocess
import sys
import textwrap
@@ -52,6 +54,10 @@ CHANGELOG_ENTRY_FILE = "CHANGELOG_ENTRY_FILE"
COMMITMSG_FILE = "COMMITMSG_FILE"
PATCH_FILE = "PATCH_FILE"
+# V8 base directory.
+DEFAULT_CWD = os.path.dirname(
+ os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
+
def TextToFile(text, file_name):
with open(file_name, "w") as f:
@@ -183,16 +189,18 @@ def SortingKey(version):
# Some commands don't like the pipe, e.g. calling vi from within the script or
# from subscripts like git cl upload.
-def Command(cmd, args="", prefix="", pipe=True):
+def Command(cmd, args="", prefix="", pipe=True, cwd=None):
+ cwd = cwd or os.getcwd()
# TODO(machenbach): Use timeout.
cmd_line = "%s %s %s" % (prefix, cmd, args)
print "Command: %s" % cmd_line
+ print "in %s" % cwd
sys.stdout.flush()
try:
if pipe:
- return subprocess.check_output(cmd_line, shell=True)
+ return subprocess.check_output(cmd_line, shell=True, cwd=cwd)
else:
- return subprocess.check_call(cmd_line, shell=True)
+ return subprocess.check_call(cmd_line, shell=True, cwd=cwd)
except subprocess.CalledProcessError:
return None
finally:
@@ -205,8 +213,8 @@ class SideEffectHandler(object): # pragma: no cover
def Call(self, fun, *args, **kwargs):
return fun(*args, **kwargs)
- def Command(self, cmd, args="", prefix="", pipe=True):
- return Command(cmd, args, prefix, pipe)
+ def Command(self, cmd, args="", prefix="", pipe=True, cwd=None):
+ return Command(cmd, args, prefix, pipe, cwd=cwd)
def ReadLine(self):
return sys.stdin.readline().strip()
@@ -263,6 +271,10 @@ class Step(GitRecipesMixin):
self._state = state
self._options = options
self._side_effect_handler = handler
+
+ # The testing configuration might set a different default cwd.
+ self.default_cwd = self._config.get("DEFAULT_CWD") or DEFAULT_CWD
+
assert self._number >= 0
assert self._config is not None
assert self._state is not None
@@ -341,21 +353,31 @@ class Step(GitRecipesMixin):
else:
return self._side_effect_handler.ReadLine()
- def Git(self, args="", prefix="", pipe=True, retry_on=None):
- cmd = lambda: self._side_effect_handler.Command("git", args, prefix, pipe)
+ def Command(self, name, args, cwd=None):
+ cmd = lambda: self._side_effect_handler.Command(
+ name, args, "", True, cwd=cwd or self.default_cwd)
+ return self.Retry(cmd, None, [5])
+
+ def Git(self, args="", prefix="", pipe=True, retry_on=None, cwd=None):
+ cmd = lambda: self._side_effect_handler.Command(
+ "git", args, prefix, pipe, cwd=cwd or self.default_cwd)
result = self.Retry(cmd, retry_on, [5, 30])
if result is None:
raise GitFailedException("'git %s' failed." % args)
return result
- def SVN(self, args="", prefix="", pipe=True, retry_on=None):
- cmd = lambda: self._side_effect_handler.Command("svn", args, prefix, pipe)
+ def SVN(self, args="", prefix="", pipe=True, retry_on=None, cwd=None):
+ cmd = lambda: self._side_effect_handler.Command(
+ "svn", args, prefix, pipe, cwd=cwd or self.default_cwd)
return self.Retry(cmd, retry_on, [5, 30])
def Editor(self, args):
if self._options.requires_editor:
- return self._side_effect_handler.Command(os.environ["EDITOR"], args,
- pipe=False)
+ return self._side_effect_handler.Command(
+ os.environ["EDITOR"],
+ args,
+ pipe=False,
+ cwd=self.default_cwd)
def ReadURL(self, url, params=None, retry_on=None, wait_plan=None):
wait_plan = wait_plan or [3, 60, 600]
@@ -399,7 +421,8 @@ class Step(GitRecipesMixin):
# Cancel if EDITOR is unset or not executable.
if (self._options.requires_editor and (not os.environ.get("EDITOR") or
- Command("which", os.environ["EDITOR"]) is None)): # pragma: no cover
+ self.Command(
+ "which", os.environ["EDITOR"]) is None)): # pragma: no cover
self.Die("Please set your EDITOR environment variable, you'll need it.")
def CommonPrepare(self):
@@ -423,7 +446,11 @@ class Step(GitRecipesMixin):
self.GitDeleteBranch(self._config[BRANCHNAME])
# Clean up all temporary files.
- Command("rm", "-f %s*" % self._config[PERSISTFILE_BASENAME])
+ for f in glob.iglob("%s*" % self._config[PERSISTFILE_BASENAME]):
+ if os.path.isfile(f):
+ os.remove(f)
+ if os.path.isdir(f):
+ shutil.rmtree(f)
def ReadAndPersistVersion(self, prefix=""):
def ReadAndPersist(var_name, def_name):
@@ -607,7 +634,6 @@ class ScriptsBase(object):
parser.add_argument("-s", "--step",
help="Specify the step where to start work. Default: 0.",
default=0, type=int)
-
self._PrepareOptions(parser)
if args is None: # pragma: no cover
« no previous file with comments | « tools/push-to-trunk/chromium_roll.py ('k') | tools/push-to-trunk/git_recipes.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698