diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/spack/spack/util/compression.py | 20 |
1 files changed, 11 insertions, 9 deletions
diff --git a/lib/spack/spack/util/compression.py b/lib/spack/spack/util/compression.py index 60b43e34ce..a5b7db4ec2 100644 --- a/lib/spack/spack/util/compression.py +++ b/lib/spack/spack/util/compression.py @@ -5,6 +5,7 @@ import os import re +import sys from itertools import product from spack.util.executable import which @@ -18,6 +19,8 @@ NOTAR_EXTS = ["zip", "tgz", "tbz", "tbz2", "txz"] ALLOWED_ARCHIVE_TYPES = [".".join(ext) for ext in product( PRE_EXTS, EXTS)] + PRE_EXTS + EXTS + NOTAR_EXTS +is_windows = sys.platform == 'win32' + def allowed_archive(path): return any(path.endswith(t) for t in ALLOWED_ARCHIVE_TYPES) @@ -48,15 +51,14 @@ def _unzip(archive_file): Args: archive_file (str): absolute path of the file to be decompressed """ - try: - from zipfile import ZipFile - destination_abspath = os.getcwd() - with ZipFile(archive_file, 'r') as zf: - zf.extractall(destination_abspath) - except ImportError: - unzip = which('unzip', required=True) - unzip.add_default_arg('-q') - return unzip + exe = 'unzip' + arg = '-q' + if is_windows: + exe = 'tar' + arg = '-xf' + unzip = which(exe, required=True) + unzip.add_default_arg(arg) + unzip(archive_file) def decompressor_for(path, extension=None): |