From 9dcecbdb3198fa8642dcaa56a0f845260bb7cfb5 Mon Sep 17 00:00:00 2001 From: Jan Malakhovski Date: Sun, 6 Aug 2023 14:35:02 +0000 Subject: fetchzip: cleanup and improve metrics a bit --- pkgs/build-support/fetchzip/default.nix | 55 +++++++++++++-------------------- 1 file changed, 21 insertions(+), 34 deletions(-) diff --git a/pkgs/build-support/fetchzip/default.nix b/pkgs/build-support/fetchzip/default.nix index e980f9d6521..0446851d640 100644 --- a/pkgs/build-support/fetchzip/default.nix +++ b/pkgs/build-support/fetchzip/default.nix @@ -7,41 +7,34 @@ { lib, fetchurl, unzip, glibcLocalesUtf8 }: -{ # Optionally move the contents of the unpacked tree up one level. - stripRoot ? true +{ name ? "source" , url ? "" , urls ? [] -, extraPostFetch ? "" +, nativeBuildInputs ? [] , postFetch ? "" -, name ? "source" -, pname ? "" -, version ? "" -, nativeBuildInputs ? [ ] -, # Allows to set the extension for the intermediate downloaded - # file. This can be used as a hint for the unpackCmdHooks to select - # an appropriate unpacking tool. - extension ? null -, ... } @ args: +, extraPostFetch ? "" +# Optionally move the contents of the unpacked tree up one level. +, stripRoot ? true +# Allows to set the extension for the intermediate downloaded +# file. This can be used as a hint for the unpackCmdHooks to select +# an appropriate unpacking tool. +, extension ? null + +# the rest are given to fetchurl as is +, ... } @ args: -lib.warnIf (extraPostFetch != "") "use 'postFetch' instead of 'extraPostFetch' with 'fetchzip' and 'fetchFromGitHub'." +assert (extraPostFetch != "") -> lib.warn "use 'postFetch' instead of 'extraPostFetch' with 'fetchzip' and 'fetchFromGitHub'." true; -(let +let tmpFilename = if extension != null then "download.${extension}" else baseNameOf (if url != "" then url else builtins.head urls); in -fetchurl (( - if (pname != "" && version != "") then - { - name = "${pname}-${version}"; - inherit pname version; - } - else - { inherit name; } -) // { +fetchurl ({ + inherit name; recursiveHash = true; downloadToTemp = true; @@ -61,8 +54,7 @@ fetchurl (( mv "$downloadedFile" "$renamed" unpackFile "$renamed" chmod -R +w "$unpackDir" - '' - + (if stripRoot then '' + '' + (if stripRoot then '' if [ $(ls -A "$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." @@ -75,16 +67,11 @@ fetchurl (( mv "$unpackDir/$fn" "$out" '' else '' mv "$unpackDir" "$out" - '') - + '' + '') + '' ${postFetch} - '' + '' ${extraPostFetch} - '' - - # Remove non-owner write permissions - # Fixes https://github.com/NixOS/nixpkgs/issues/38649 - + '' chmod 755 "$out" ''; -} // removeAttrs args [ "stripRoot" "extraPostFetch" "postFetch" "extension" "nativeBuildInputs" ])) + # ^ Remove non-owner write permissions + # Fixes https://github.com/NixOS/nixpkgs/issues/38649 +} // removeAttrs args [ "stripRoot" "extraPostFetch" "postFetch" "extension" "nativeBuildInputs" ]) -- cgit 1.4.1