diff options
author | Benjamin Hipple <bhipple@protonmail.com> | 2020-02-02 16:56:11 -0500 |
---|---|---|
committer | Benjamin Hipple <bhipple@protonmail.com> | 2020-02-08 21:51:46 -0500 |
commit | caff18340206c4e5c466c16a534f13505d1098ee (patch) | |
tree | 446e7d33227fef84ff21cbc9bc9580810491b9c3 /pkgs/build-support/fetchzip | |
parent | 8396961c9cc67d0a12c0bcf475de77d9a849fd7b (diff) |
fetchzip, fetchgit: cleanup handling of optional features and whitespace
No intended functional difference, just trying to polish to make this easier to extend and more aligned with other nix conventions.
Diffstat (limited to 'pkgs/build-support/fetchzip')
-rw-r--r-- | pkgs/build-support/fetchzip/default.nix | 57 |
1 files changed, 28 insertions, 29 deletions
diff --git a/pkgs/build-support/fetchzip/default.nix b/pkgs/build-support/fetchzip/default.nix index c61df8ceb0015..9d829e43ccbcf 100644 --- a/pkgs/build-support/fetchzip/default.nix +++ b/pkgs/build-support/fetchzip/default.nix @@ -5,47 +5,46 @@ # (e.g. due to minor changes in the compression algorithm, or changes # in timestamps). -{ fetchurl, unzip }: +{ lib, fetchurl, unzip }: -{ # Optionally move the contents of the unpacked tree up one level. - stripRoot ? true +{ name ? "source" , 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" + postFetch = '' + unpackDir="$TMPDIR/unpack" + mkdir "$unpackDir" + cd "$unpackDir" + + 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; - 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 ]; |