summary refs log tree commit diff
path: root/pkgs/stdenv/generic/setup.sh
diff options
context:
space:
mode:
authorEelco Dolstra <eelco.dolstra@logicblox.com>2014-06-30 13:21:30 +0200
committerEelco Dolstra <eelco.dolstra@logicblox.com>2014-08-09 12:44:49 +0200
commit1a44dbbbb900acb993fc68995fc3cfb50e5122ba (patch)
tree6915928d664960f6be974304bffa15429a9e3cd1 /pkgs/stdenv/generic/setup.sh
parent5e82aab5d4c6916fb4f35370b6f162d88bc6bf69 (diff)
downloadnixlib-1a44dbbbb900acb993fc68995fc3cfb50e5122ba.tar
nixlib-1a44dbbbb900acb993fc68995fc3cfb50e5122ba.tar.gz
nixlib-1a44dbbbb900acb993fc68995fc3cfb50e5122ba.tar.bz2
nixlib-1a44dbbbb900acb993fc68995fc3cfb50e5122ba.tar.lz
nixlib-1a44dbbbb900acb993fc68995fc3cfb50e5122ba.tar.xz
nixlib-1a44dbbbb900acb993fc68995fc3cfb50e5122ba.tar.zst
nixlib-1a44dbbbb900acb993fc68995fc3cfb50e5122ba.zip
unpackFile: Always copy directories
If $src refers to a directory, then always copy it. Previously, we
checked the extension first, so if the directory had an extension like
.tar, unpackPhase would fail.
Diffstat (limited to 'pkgs/stdenv/generic/setup.sh')
-rw-r--r--pkgs/stdenv/generic/setup.sh46
1 files changed, 25 insertions, 21 deletions
diff --git a/pkgs/stdenv/generic/setup.sh b/pkgs/stdenv/generic/setup.sh
index 286e9e019b1d..c3ebc3e9b5f0 100644
--- a/pkgs/stdenv/generic/setup.sh
+++ b/pkgs/stdenv/generic/setup.sh
@@ -475,32 +475,36 @@ unpackFile() {
 
     header "unpacking source archive $curSrc" 3
 
-    case "$curSrc" in
-        *.tar.xz | *.tar.lzma)
-            # Don't rely on tar knowing about .xz.
-            xz -d < $curSrc | tar xf -
-            ;;
-        *.tar | *.tar.* | *.tgz | *.tbz2)
-            # GNU tar can automatically select the decompression method
-            # (info "(tar) gzip").
-            tar xf $curSrc
-            ;;
-        *.zip)
-            unzip -qq $curSrc
-            ;;
-        *)
-            if [ -d "$curSrc" ]; then
-                stripHash $curSrc
-                cp -prd --no-preserve=timestamps $curSrc $strippedName
-            else
+    if [ -d "$curSrc" ]; then
+
+        stripHash $curSrc
+        cp -prd --no-preserve=timestamps $curSrc $strippedName
+
+    else
+
+        case "$curSrc" in
+            *.tar.xz | *.tar.lzma)
+                # Don't rely on tar knowing about .xz.
+                xz -d < $curSrc | tar xf -
+                ;;
+            *.tar | *.tar.* | *.tgz | *.tbz2)
+                # GNU tar can automatically select the decompression method
+                # (info "(tar) gzip").
+                tar xf $curSrc
+                ;;
+            *.zip)
+                unzip -qq $curSrc
+                ;;
+            *)
                 if [ -z "$unpackCmd" ]; then
                     echo "source archive $curSrc has unknown type"
                     exit 1
                 fi
                 runSingleHook unpackCmd
-            fi
-            ;;
-    esac
+                ;;
+        esac
+
+    fi
 
     stopNest
 }