diff options
-rw-r--r-- | pkgs/build-support/fetchgit/default.nix | 2 | ||||
-rwxr-xr-x | pkgs/build-support/fetchgit/nix-prefetch-git | 25 | ||||
-rw-r--r-- | pkgs/build-support/fetchzip/default.nix | 57 |
3 files changed, 43 insertions, 41 deletions
diff --git a/pkgs/build-support/fetchgit/default.nix b/pkgs/build-support/fetchgit/default.nix index ee662154cc7b..0405951a9e40 100644 --- a/pkgs/build-support/fetchgit/default.nix +++ b/pkgs/build-support/fetchgit/default.nix @@ -1,4 +1,4 @@ -{ stdenvNoCC, git, cacert }: let +{stdenvNoCC, git, cacert}: let urlToName = url: rev: let inherit (stdenvNoCC.lib) removeSuffix splitString last; base = last (splitString ":" (baseNameOf (removeSuffix "/" url))); diff --git a/pkgs/build-support/fetchgit/nix-prefetch-git b/pkgs/build-support/fetchgit/nix-prefetch-git index 4761c978035e..abba76bd1ac9 100755 --- a/pkgs/build-support/fetchgit/nix-prefetch-git +++ b/pkgs/build-support/fetchgit/nix-prefetch-git @@ -1,5 +1,6 @@ -#!/usr/bin/env bash -set -eo pipefail +#! /usr/bin/env bash + +set -e -o pipefail url= rev= @@ -37,17 +38,17 @@ usage(){ echo >&2 "syntax: nix-prefetch-git [options] [URL [REVISION [EXPECTED-HASH]]] Options: - --out path Path where the output would be stored. - --url url Any url understood by 'git clone'. - --rev ref Any sha1 or references (such as refs/heads/master). - --hash h Expected hash. - --branch-name Branch name to check out into. - --deepClone Clone the entire repository. - --no-deepClone Make a shallow clone of just the required ref. - --leave-dotGit Keep the .git directories. + --out path Path where the output would be stored. + --url url Any url understood by 'git clone'. + --rev ref Any sha1 or references (such as refs/heads/master) + --hash h Expected hash. + --branch-name Branch name to check out into + --deepClone Clone the entire repository. + --no-deepClone Make a shallow clone of just the required ref. + --leave-dotGit Keep the .git directories. --fetch-submodules Fetch submodules. - --builder Clone as fetchgit does, but url, rev, and out option are mandatory. - --quiet Only print the final json summary. + --builder Clone as fetchgit does, but url, rev, and out option are mandatory. + --quiet Only print the final json summary. " exit 1 } diff --git a/pkgs/build-support/fetchzip/default.nix b/pkgs/build-support/fetchzip/default.nix index 9d829e43ccbc..c61df8ceb001 100644 --- a/pkgs/build-support/fetchzip/default.nix +++ b/pkgs/build-support/fetchzip/default.nix @@ -5,46 +5,47 @@ # (e.g. due to minor changes in the compression algorithm, or changes # in timestamps). -{ lib, fetchurl, unzip }: +{ fetchurl, unzip }: -{ name ? "source" +{ # Optionally move the contents of the unpacked tree up one level. + stripRoot ? true , url - # Optionally move the contents of the unpacked tree up one level. -, stripRoot ? true , extraPostFetch ? "" +, name ? "source" , ... } @ args: (fetchurl ({ inherit name; recursiveHash = true; - downloadToTemp = true; - postFetch = '' - unpackDir="$TMPDIR/unpack" - mkdir "$unpackDir" - cd "$unpackDir" + downloadToTemp = true; - renamed="$TMPDIR/${baseNameOf url}" - mv "$downloadedFile" "$renamed" - unpackFile "$renamed" - result=$unpackDir - '' - # Most src disted tarballs have a parent directory like foo-1.2.3/ to strip - + lib.optionalString stripRoot '' - if [ $(ls "$unpackDir" | wc -l) != 1 ]; then - echo "error: zip file must contain a single file or directory." - echo "hint: Pass stripRoot=false; to fetchzip to assume flat list of files." - exit 1 - fi - fn=$(cd "$unpackDir" && echo *) - result="$unpackDir/$fn" - '' + '' - mkdir $out - mv "$result" "$out" - '' - + extraPostFetch; + postFetch = + '' + unpackDir="$TMPDIR/unpack" + mkdir "$unpackDir" + cd "$unpackDir" + renamed="$TMPDIR/${baseNameOf url}" + mv "$downloadedFile" "$renamed" + unpackFile "$renamed" + '' + + (if stripRoot then '' + if [ $(ls "$unpackDir" | wc -l) != 1 ]; then + echo "error: zip file must contain a single file or directory." + echo "hint: Pass stripRoot=false; to fetchzip to assume flat list of files." + exit 1 + fi + fn=$(cd "$unpackDir" && echo *) + if [ -f "$unpackDir/$fn" ]; then + mkdir $out + fi + mv "$unpackDir/$fn" "$out" + '' else '' + mv "$unpackDir" "$out" + '') #*/ + + extraPostFetch; } // removeAttrs args [ "stripRoot" "extraPostFetch" ])).overrideAttrs (x: { # Hackety-hack: we actually need unzip hooks, too nativeBuildInputs = x.nativeBuildInputs ++ [ unzip ]; |