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
diff --git a/checkout.py b/checkout.py
index 49799d0..d1a694b 100644
--- a/checkout.py
+++ b/checkout.py
@@ -204,13 +204,19 @@
               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 @@
                 '--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.