Clean up temp dirs when breaking locks.

A number of bots have been running out of disk space because they
are accumulating temp dirs and temp pack files.  Be more careful
to clean up temp dirs whenever UnlockAll() is called.

R=hinoka@chromium.org,agable@chromium.org
BUG=

Review URL: https://codereview.chromium.org/335253002

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@277812 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/git_cache.py b/git_cache.py
index 9233280..686d0e1 100755
--- a/git_cache.py
+++ b/git_cache.py
@@ -278,7 +278,7 @@
 
     # Download zip file to a temporary directory.
     try:
-      tempdir = tempfile.mkdtemp()
+      tempdir = tempfile.mkdtemp(prefix='_cache_tmp', dir=self.GetCachePath())
       self.print('Downloading %s' % latest_checkout)
       code = gsutil.call('cp', latest_checkout, tempdir)
       if code:
@@ -344,7 +344,7 @@
                           len(pack_files) > GC_AUTOPACKLIMIT)
       if should_bootstrap:
         tempdir = tempfile.mkdtemp(
-            suffix=self.basedir, dir=self.GetCachePath())
+            prefix='_cache_tmp', suffix=self.basedir, dir=self.GetCachePath())
         bootstrapped = not depth and bootstrap and self.bootstrap_repo(tempdir)
         if bootstrapped:
           # Bootstrap succeeded; delete previous cache, if any.
@@ -408,8 +408,8 @@
       except OSError:
         logging.warn('Unable to delete temporary pack file %s' % f)
 
-  @staticmethod
-  def BreakLocks(path):
+  @classmethod
+  def BreakLocks(cls, path):
     did_unlock = False
     lf = Lockfile(path)
     if lf.break_lock():
@@ -420,6 +420,7 @@
     if os.path.exists(lf):
       os.remove(lf)
       did_unlock = True
+    cls.DeleteTmpPackFiles(path)
     return did_unlock
 
   def unlock(self):
@@ -432,7 +433,9 @@
     repo_dirs = set([os.path.join(cachepath, path) for path in dirlist
                      if os.path.isdir(os.path.join(cachepath, path))])
     for dirent in dirlist:
-      if (dirent.endswith('.lock') and
+      if dirent.startswith('_cache_tmp') or dirent.startswith('tmp'):
+        gclient_utils.rmtree(os.path.join(cachepath, dirent))
+      elif (dirent.endswith('.lock') and
           os.path.isfile(os.path.join(cachepath, dirent))):
         repo_dirs.add(os.path.join(cachepath, dirent[:-5]))