summaryrefslogtreecommitdiff
path: root/morphlib/stagingarea.py
diff options
context:
space:
mode:
Diffstat (limited to 'morphlib/stagingarea.py')
-rw-r--r--morphlib/stagingarea.py7
1 files changed, 2 insertions, 5 deletions
diff --git a/morphlib/stagingarea.py b/morphlib/stagingarea.py
index 8c2781aa..76bb3a18 100644
--- a/morphlib/stagingarea.py
+++ b/morphlib/stagingarea.py
@@ -161,13 +161,10 @@ class StagingArea(object):
self._app.status(
msg='Unpacking chunk from cache %(filename)s',
filename=os.path.basename(handle.name))
- savedir = tempfile.mkdtemp(dir=chunk_cache_dir)
- try:
+ with morphlib.util.temp_dir(dir=chunk_cache_dir,
+ cleanup_on_success=False) as savedir:
morphlib.bins.unpack_binary_from_file(
handle, savedir + '/')
- except BaseException as e: # pragma: no cover
- shutil.rmtree(savedir)
- raise
# TODO: This rename is not concurrency safe if two builds are
# extracting the same chunk, one build will fail because
# the other renamed its tempdir here first.