summary refs log tree commit diff
diff options
context:
space:
mode:
authorBenjamin Hipple <bhipple@protonmail.com>2020-03-26 00:15:24 -0400
committerGitHub <noreply@github.com>2020-03-26 00:15:24 -0400
commit368ea2eb5ec9aa3eaec78b5e1b39610cbede3a47 (patch)
treef0611c0a3bbbbe15d03dade6d805fba218b808b5
parent3150fc9ba6a7fbecda188ac504a247a899f75b8f (diff)
parentcaff18340206c4e5c466c16a534f13505d1098ee (diff)
downloadnixpkgs-368ea2eb5ec9aa3eaec78b5e1b39610cbede3a47.tar
nixpkgs-368ea2eb5ec9aa3eaec78b5e1b39610cbede3a47.tar.gz
nixpkgs-368ea2eb5ec9aa3eaec78b5e1b39610cbede3a47.tar.bz2
nixpkgs-368ea2eb5ec9aa3eaec78b5e1b39610cbede3a47.tar.lz
nixpkgs-368ea2eb5ec9aa3eaec78b5e1b39610cbede3a47.tar.xz
nixpkgs-368ea2eb5ec9aa3eaec78b5e1b39610cbede3a47.tar.zst
nixpkgs-368ea2eb5ec9aa3eaec78b5e1b39610cbede3a47.zip
Merge pull request #79581 from bhipple/feature/fetcher-whitespace-clean
fetchzip, fetchgit: cleanup handling of optional features and whitespace
-rw-r--r--pkgs/build-support/fetchgit/default.nix2
-rwxr-xr-xpkgs/build-support/fetchgit/nix-prefetch-git25
-rw-r--r--pkgs/build-support/fetchzip/default.nix57
3 files changed, 41 insertions, 43 deletions
diff --git a/pkgs/build-support/fetchgit/default.nix b/pkgs/build-support/fetchgit/default.nix
index 0405951a9e4..ee662154cc7 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 abba76bd1ac..4761c978035 100755
--- a/pkgs/build-support/fetchgit/nix-prefetch-git
+++ b/pkgs/build-support/fetchgit/nix-prefetch-git
@@ -1,6 +1,5 @@
-#! /usr/bin/env bash
-
-set -e -o pipefail
+#!/usr/bin/env bash
+set -eo pipefail
 
 url=
 rev=
@@ -38,17 +37,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 c61df8ceb00..9d829e43ccb 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 ];