summary refs log tree commit diff
diff options
context:
space:
mode:
authorCharles Strahan <charles.c.strahan@gmail.com>2014-06-22 05:42:34 -0400
committerCharles Strahan <charles.c.strahan@gmail.com>2014-06-23 01:25:40 -0400
commit9bd8dffd77c8bdd0f73df14d56707250e7240857 (patch)
treea8175c08bd40ba53338dea277ec15e92e3f3bde6
parent400b94e120462f9d6b503e38baa3e4d52917986d (diff)
downloadnixpkgs-9bd8dffd77c8bdd0f73df14d56707250e7240857.tar
nixpkgs-9bd8dffd77c8bdd0f73df14d56707250e7240857.tar.gz
nixpkgs-9bd8dffd77c8bdd0f73df14d56707250e7240857.tar.bz2
nixpkgs-9bd8dffd77c8bdd0f73df14d56707250e7240857.tar.lz
nixpkgs-9bd8dffd77c8bdd0f73df14d56707250e7240857.tar.xz
nixpkgs-9bd8dffd77c8bdd0f73df14d56707250e7240857.tar.zst
nixpkgs-9bd8dffd77c8bdd0f73df14d56707250e7240857.zip
require gnused for all prefetch scripts
-rwxr-xr-xpkgs/build-support/fetchzip/nix-prefetch-zip (renamed from pkgs/tools/package-management/nix-prefetch-scripts/nix-prefetch-zip)46
-rw-r--r--pkgs/tools/package-management/nix-prefetch-scripts/default.nix9
2 files changed, 31 insertions, 24 deletions
diff --git a/pkgs/tools/package-management/nix-prefetch-scripts/nix-prefetch-zip b/pkgs/build-support/fetchzip/nix-prefetch-zip
index b1c71bbff33..76255ab3674 100755
--- a/pkgs/tools/package-management/nix-prefetch-scripts/nix-prefetch-zip
+++ b/pkgs/build-support/fetchzip/nix-prefetch-zip
@@ -1,14 +1,13 @@
 #! /bin/sh -e
 
 usage(){
-    echo  >&2 "syntax: nix-prefetch-zip [options]
+    echo  >&2 "syntax: nix-prefetch-zip [OPTIONS] [URL [EXPECTED-HASH]]
 
 Options:
-      --url         name   The url of the archive to fetch.
+      --url         url    The url of the archive to fetch.
       --name        name   The name to use for the store path (defaults to \`basename \$url\`).
-      --hash        name   The hash of unpacked archive.
-      --hash-type   hash   Use the specified cryptographic hash algorithm, which can be one of md5, sha1, and sha256.
-      --base32             Print/accept the hash in a base-32 representation rather than hexadecimal.
+      --hash        hash   The hash of unpacked archive.
+      --hash-type   type   Use the specified cryptographic hash algorithm, which can be one of md5, sha1, and sha256.
       --leave-root         Keep the root directory of the archive.
       --help               Show this help text.
 "
@@ -25,13 +24,18 @@ for arg; do
       --name) argfun=set_name;;
       --hash) argfun=set_expHash;;
       --hash-type) argfun=set_hashType;;
-      --base32) hashFormat="--base32";;
       --leave-root) leaveRoot=true;;
       --help) usage;;
-      *)
-        echo "Unexpected argument: $arg" >&2
-        usage
-        ;;
+      *) argi=$(($argi + 1))
+         case $argi in
+           1) url=$arg;;
+           2) rev=$arg;;
+           3) expHash=$arg;;
+           *) echo "Unexpected argument: $arg" >&2
+              usage
+              ;;
+         esac
+         ;;
     esac
   else
     case $argfun in
@@ -57,11 +61,13 @@ if test -z "$hashType"; then
   hashType=sha256
 fi
 
+hashFormat="--base32"
+
 tmp=$(mktemp -d 2>/dev/null || mktemp -d -t "$$")
-trap "rm -rf \"\$tmp\"" EXIT
+trap "rm -rf '$tmp'" EXIT
 
-TMPDIR=$tmp/unpacked/$name
-mkdir -p $TMPDIR
+unpackDir=$tmp/unpacked/$name
+mkdir -p $unpackDir
 downloadedFile=$tmp/$name
 
 unpackFile() {
@@ -110,27 +116,27 @@ if test -z "$finalPath"; then
     exit 1
   fi
 
-  cd $TMPDIR
+  cd $unpackDir
   unpackFile "$downloadedFile"
 
   # FIXME: handle zip files that contain a single regular file.
   if [ -z "$leaveRoot" ]; then
     shopt -s dotglob
-    if [ $(ls -d $TMPDIR/* | wc -l) != 1 ]; then
+    if [ $(ls -d $unpackDir/* | wc -l) != 1 ]; then
       echo "error: zip file must contain a single directory."
       exit 1
     fi
-    fn=$(cd "$TMPDIR" && echo *)
-    mv $TMPDIR/$fn/* "$TMPDIR/"
-    rmdir "$TMPDIR/$fn"
+    fn=$(cd "$unpackDir" && echo *)
+    mv $unpackDir/$fn/* "$unpackDir/"
+    rmdir "$unpackDir/$fn"
   fi
 
   # Compute the hash.
-  hash=$(nix-hash --type $hashType $hashFormat $TMPDIR)
+  hash=$(nix-hash --type $hashType $hashFormat $unpackDir)
   if ! test -n "$QUIET"; then echo "hash is $hash" >&2; fi
 
   # Add the downloaded file to the Nix store.
-  finalPath=$(nix-store --add-fixed --recursive "$hashType" $TMPDIR)
+  finalPath=$(nix-store --add-fixed --recursive "$hashType" $unpackDir)
 
   if test -n "$expHash" -a "$expHash" != "$hash"; then
     echo "hash mismatch for URL \`$url'"
diff --git a/pkgs/tools/package-management/nix-prefetch-scripts/default.nix b/pkgs/tools/package-management/nix-prefetch-scripts/default.nix
index bb0d717a5a2..84439136d49 100644
--- a/pkgs/tools/package-management/nix-prefetch-scripts/default.nix
+++ b/pkgs/tools/package-management/nix-prefetch-scripts/default.nix
@@ -11,20 +11,21 @@ stdenv.mkDerivation {
     function copyScript {
       local name=nix-prefetch-$1;
       local src=$2;
+      local wrapArgs=""
       cp $src $out/bin/$name;
       for dep in ''${@:3}; do
-        local exe=$dep/bin;
-        local wrapArgs="$wrapArgs --prefix PATH : $exe"
+        wrapArgs="$wrapArgs --prefix PATH : $dep/bin"
       done
+      wrapArgs="$wrapArgs --prefix PATH : ${gnused}/bin"
       wrapProgram $out/bin/$name $wrapArgs
     }
 
     copyScript "hg" ${../../../build-support/fetchhg/nix-prefetch-hg} ${mercurial}
     copyScript "git" ${../../../build-support/fetchgit/nix-prefetch-git} ${git}
     copyScript "svn" ${../../../build-support/fetchsvn/nix-prefetch-svn} ${subversion}
-    copyScript "bzr" ${../../../build-support/fetchbzr/nix-prefetch-bzr} ${bazaar} ${gnused}
+    copyScript "bzr" ${../../../build-support/fetchbzr/nix-prefetch-bzr} ${bazaar}
     copyScript "cvs" ${../../../build-support/fetchcvs/nix-prefetch-cvs} ${cvs}
-    copyScript "zip" ${./nix-prefetch-zip} ${unzip} ${curl}
+    copyScript "zip" ${../../../build-support/fetchzip/nix-prefetch-zip} ${unzip} ${curl}
   '';
 
   meta = with stdenv.lib; {