From 2327994797df2535bcb46da8a0cefb3a2fffeb05 Mon Sep 17 00:00:00 2001 From: "groby@chromium.org" Date: Fri, 12 Jul 2013 19:32:33 +0000 Subject: [PATCH] Create a temporary dir for patch to do its work. BUG=259665 Review URL: https://chromiumcodereview.appspot.com/18664004 git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@211443 0039d316-1c4b-4281-b951-d872f2087c98 --- checkout.py | 39 ++++++++++++++++++++++++++------------- 1 file changed, 26 insertions(+), 13 deletions(-) diff --git a/checkout.py b/checkout.py index 49799d03d..d1a694b45 100644 --- a/checkout.py +++ b/checkout.py @@ -204,13 +204,19 @@ class RawCheckout(CheckoutBase): cmd = ['patch', '-u', '--binary', '-p%s' % p.patchlevel] if verbose: cmd.append('--verbose') - stdout.append( - subprocess2.check_output( - cmd, - stdin=p.get(False), - stderr=subprocess2.STDOUT, - cwd=self.project_path, - timeout=GLOBAL_TIMEOUT)) + env = os.environ.copy() + env['TMPDIR'] = tempfile.mkdtemp(prefix='crpatch') + try: + stdout.append( + subprocess2.check_output( + cmd, + stdin=p.get(False), + stderr=subprocess2.STDOUT, + cwd=self.project_path, + timeout=GLOBAL_TIMEOUT, + env=env)) + finally: + shutil.rmtree(env['TMPDIR']) elif p.is_new and not os.path.exists(filepath): # There is only a header. Just create the file. open(filepath, 'w').close() @@ -400,12 +406,19 @@ class SvnCheckout(CheckoutBase, SvnMixIn): '--force', '--no-backup-if-mismatch', ] - stdout.append( - subprocess2.check_output( - cmd, - stdin=p.get(False), - cwd=self.project_path, - timeout=GLOBAL_TIMEOUT)) + env = os.environ.copy() + env['TMPDIR'] = tempfile.mkdtemp(prefix='crpatch') + try: + stdout.append( + subprocess2.check_output( + cmd, + stdin=p.get(False), + cwd=self.project_path, + timeout=GLOBAL_TIMEOUT, + env=env)) + finally: + shutil.rmtree(env['TMPDIR']) + elif p.is_new and not os.path.exists(filepath): # There is only a header. Just create the file if it doesn't # exist.