diff options
author | Charles Strahan <charles.c.strahan@gmail.com> | 2014-06-22 05:42:34 -0400 |
---|---|---|
committer | Charles Strahan <charles.c.strahan@gmail.com> | 2014-06-23 01:25:40 -0400 |
commit | 9bd8dffd77c8bdd0f73df14d56707250e7240857 (patch) | |
tree | a8175c08bd40ba53338dea277ec15e92e3f3bde6 /pkgs/tools/package-management/nix-prefetch-scripts | |
parent | 400b94e120462f9d6b503e38baa3e4d52917986d (diff) | |
download | nixpkgs-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
Diffstat (limited to 'pkgs/tools/package-management/nix-prefetch-scripts')
-rw-r--r-- | pkgs/tools/package-management/nix-prefetch-scripts/default.nix | 9 | ||||
-rwxr-xr-x | pkgs/tools/package-management/nix-prefetch-scripts/nix-prefetch-zip | 147 |
2 files changed, 5 insertions, 151 deletions
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; { diff --git a/pkgs/tools/package-management/nix-prefetch-scripts/nix-prefetch-zip b/pkgs/tools/package-management/nix-prefetch-scripts/nix-prefetch-zip deleted file mode 100755 index b1c71bbff33..00000000000 --- a/pkgs/tools/package-management/nix-prefetch-scripts/nix-prefetch-zip +++ /dev/null @@ -1,147 +0,0 @@ -#! /bin/sh -e - -usage(){ - echo >&2 "syntax: nix-prefetch-zip [options] - -Options: - --url name 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. - --leave-root Keep the root directory of the archive. - --help Show this help text. -" - exit 1 -} - - -argi=0 -argfun="" -for arg; do - if test -z "$argfun"; then - case $arg in - --url) argfun=set_url;; - --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 - ;; - esac - else - case $argfun in - set_*) - var=$(echo $argfun | sed 's,^set_,,') - eval "$var=\$arg" - ;; - esac - argfun="" - fi -done - -if [ -z "$url" ]; then - echo "Error: No --url flag given" >&2 - usage -fi - -if [ -z "$name" ]; then - name=$(basename "$url") -fi - -if test -z "$hashType"; then - hashType=sha256 -fi - -tmp=$(mktemp -d 2>/dev/null || mktemp -d -t "$$") -trap "rm -rf \"\$tmp\"" EXIT - -TMPDIR=$tmp/unpacked/$name -mkdir -p $TMPDIR -downloadedFile=$tmp/$name - -unpackFile() { - local curSrc="$1" - - 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 - ;; - *) - echo "source archive $curSrc has unknown type" >&2 - exit 1 - ;; - esac -} - -# If the hash was given, a file with that hash may already be in the -# store. -if test -n "$expHash"; then - finalPath=$(nix-store --print-fixed-path --recursive "$hashType" "$expHash" "$name") - if ! nix-store --check-validity "$finalPath" 2> /dev/null; then - finalPath= - fi - hash=$expHash -fi - -# If we don't know the hash or a path with that hash doesn't exist, -# download the file and add it to the store. -if test -z "$finalPath"; then - curl="curl \ - --location --max-redirs 20 \ - --disable-epsv \ - --insecure" - - if ! $curl --fail "$url" --output "$downloadedFile"; then - echo "error: could not download $url" >&2 - exit 1 - fi - - cd $TMPDIR - 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 - echo "error: zip file must contain a single directory." - exit 1 - fi - fn=$(cd "$TMPDIR" && echo *) - mv $TMPDIR/$fn/* "$TMPDIR/" - rmdir "$TMPDIR/$fn" - fi - - # Compute the hash. - hash=$(nix-hash --type $hashType $hashFormat $TMPDIR) - 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) - - if test -n "$expHash" -a "$expHash" != "$hash"; then - echo "hash mismatch for URL \`$url'" - exit 1 - fi -fi - -if ! test -n "$QUIET"; then echo "path is $finalPath" >&2; fi - -echo $hash - -if test -n "$PRINT_PATH"; then - echo $finalPath -fi |