diff --git a/pkgs/build-support/fetchpypilegacy/default.nix b/pkgs/build-support/fetchpypilegacy/default.nix index bcd560449916..b2715f85dd86 100644 --- a/pkgs/build-support/fetchpypilegacy/default.nix +++ b/pkgs/build-support/fetchpypilegacy/default.nix @@ -1,8 +1,23 @@ # Fetch from PyPi legacy API as documented in https://warehouse.pypa.io/api-reference/legacy.html -{ runCommand -, lib -, python3 +{ + runCommand, + lib, + python3, }: +let + inherit (lib) + optionalAttrs + fetchers + optional + inPureEvalMode + filter + head + concatStringsSep + escapeShellArg + ; + + impureEnvVars = fetchers.proxyImpureEnvVars ++ optional inPureEvalMode "NETRC"; +in { # package name pname, @@ -18,28 +33,30 @@ name ? null, }: let - urls' = urls ++ lib.optional (url != null) url; + urls' = urls ++ optional (url != null) url; - pathParts = lib.filter ({ prefix, path }: "NETRC" == prefix) builtins.nixPath; - netrc_file = - if (pathParts != [ ]) - then (lib.head pathParts).path - else ""; + pathParts = filter ({ prefix, path }: "NETRC" == prefix) builtins.nixPath; + netrc_file = if (pathParts != [ ]) then (head pathParts).path else ""; in # Assert that we have at least one URL -assert urls' != [ ]; runCommand file - ({ - nativeBuildInputs = [ python3 ]; - impureEnvVars = lib.fetchers.proxyImpureEnvVars; - outputHashMode = "flat"; - # if hash is empty select a default algo to let nix propose the actual hash. - outputHashAlgo = if hash == "" then "sha256" else null; - outputHash = hash; - NETRC = netrc_file; - } - // (lib.optionalAttrs (name != null) {inherit name;})) +assert urls' != [ ]; +runCommand file + ( + { + nativeBuildInputs = [ python3 ]; + inherit impureEnvVars; + outputHashMode = "flat"; + # if hash is empty select a default algo to let nix propose the actual hash. + outputHashAlgo = if hash == "" then "sha256" else null; + outputHash = hash; + } + // optionalAttrs (name != null) { inherit name; } + // optionalAttrs (!inPureEvalMode) { env.NETRC = netrc_file; } + ) '' - python ${./fetch-legacy.py} ${lib.concatStringsSep " " (map (url: "--url ${lib.escapeShellArg url}") urls')} --pname ${pname} --filename ${file} + python ${./fetch-legacy.py} ${ + concatStringsSep " " (map (url: "--url ${escapeShellArg url}") urls') + } --pname ${pname} --filename ${file} mv ${file} $out '' diff --git a/pkgs/build-support/fetchpypilegacy/tests.nix b/pkgs/build-support/fetchpypilegacy/tests.nix index b16325b96b7e..3edfd646e942 100644 --- a/pkgs/build-support/fetchpypilegacy/tests.nix +++ b/pkgs/build-support/fetchpypilegacy/tests.nix @@ -1,4 +1,5 @@ -{ testers, fetchPypiLegacy, ... }: { +{ testers, fetchPypiLegacy, ... }: +{ # Tests that we can send custom headers with spaces in them fetchSimple = testers.invalidateFetcherByDrvHash fetchPypiLegacy { pname = "requests";