Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
48 changes: 27 additions & 21 deletions pkgs/build-support/fetchurl/default.nix
Original file line number Diff line number Diff line change
Expand Up @@ -164,12 +164,6 @@ lib.extendMkDerivation {
else
throw "fetchurl requires either `url` or `urls` to be set: ${lib.generators.toPretty { } args}";

urls_ =
let
u = lib.lists.filter (url: lib.isString url) (map rewriteURL preRewriteUrls);
in
if u == [ ] then throw "urls is empty after rewriteURL (was ${toString preRewriteUrls})" else u;

hash_ =
if
with lib.lists;
Expand All @@ -183,7 +177,7 @@ lib.extendMkDerivation {
]
) > 1
then
throw "multiple hashes passed to fetchurl: ${lib.generators.toPretty { } urls_}"
throw "multiple hashes passed to fetchurl: ${lib.generators.toPretty { } finalAttrs.urls}"
else

if hash != "" then
Expand All @@ -195,7 +189,9 @@ lib.extendMkDerivation {
if outputHashAlgo != "" then
{ inherit outputHashAlgo outputHash; }
else
throw "fetchurl was passed outputHash without outputHashAlgo: ${lib.generators.toPretty { } urls_}"
throw "fetchurl was passed outputHash without outputHashAlgo: ${
lib.generators.toPretty { } finalAttrs.urls
}"
else if sha512 != "" then
{
outputHashAlgo = "sha512";
Expand All @@ -217,7 +213,9 @@ lib.extendMkDerivation {
outputHash = lib.fakeHash;
}
else
throw "fetchurl requires a hash for fixed-output derivation: ${lib.generators.toPretty { } urls_}";
throw "fetchurl requires a hash for fixed-output derivation: ${
lib.generators.toPretty { } finalAttrs.urls
}";

finalHashHasColon = lib.hasInfix ":" finalAttrs.hash;
finalHashColonMatch = lib.match "([^:]+)[:](.*)" finalAttrs.hash;
Expand All @@ -243,18 +241,22 @@ lib.extendMkDerivation {
name =
if finalAttrs.pname or null != null && finalAttrs.version or null != null then
"${finalAttrs.pname}-${finalAttrs.version}"
else if showURLs then
else if finalAttrs.showURLs then
"urls"
else if name != null then
name
else
baseNameOf (toString (lib.head urls_));
baseNameOf (toString (lib.head finalAttrs.urls));

builder = ./builder.sh;

nativeBuildInputs = [ curl ] ++ nativeBuildInputs;

urls = urls_;
urls =
let
u = lib.lists.filter (url: lib.isString url) (map rewriteURL preRewriteUrls);
in
if u == [ ] then throw "urls is empty after rewriteURL (was ${toString preRewriteUrls})" else u;

# If set, prefer the content-addressable mirrors
# (http://tarballs.nixos.org) over the original URLs.
Expand Down Expand Up @@ -288,18 +290,19 @@ lib.extendMkDerivation {
|| hash_.outputHash == lib.fakeSha256
|| hash_.outputHash == lib.fakeSha512
|| hash_.outputHash == lib.fakeHash
|| netrcPhase != null
|| finalAttrs.netrcPhase != null
)
then
"${cacert}/etc/ssl/certs/ca-bundle.crt"
else
"/no-cert-file.crt";

outputHashMode = if (recursiveHash || executable) then "recursive" else "flat";
outputHashMode =
if (finalAttrs.recursiveHash || finalAttrs.executable) then "recursive" else "flat";

curlOpts = lib.warnIf (lib.isList curlOpts) (
let
url = toString (builtins.head urls_);
url = toString (builtins.head finalAttrs.urls);
curlOptsRepresentation = lib.generators.toPretty { multiline = false; } curlOpts;
curlOptsAsStringRepresentation = lib.strings.escapeNixString (toString curlOpts);
curlOptsListElementsRepresentation =
Expand All @@ -318,25 +321,28 @@ lib.extendMkDerivation {
curlOptsList = lib.escapeShellArgs curlOptsList;

inherit
showURLs
mirrorsFile
postFetch
downloadToTemp
executable
mirrorsFile
netrcImpureEnvVars
netrcPhase
postFetch
recursiveHash
showURLs
;

impureEnvVars = impureEnvVars ++ netrcImpureEnvVars;
impureEnvVars = impureEnvVars ++ finalAttrs.netrcImpureEnvVars;

nixpkgsVersion = lib.trivial.release;

inherit preferLocalBuild;

postHook =
if netrcPhase == null then
if finalAttrs.netrcPhase == null then
null
else
''
${netrcPhase}
${finalAttrs.netrcPhase}
curlOpts="$curlOpts --netrc-file $PWD/netrc"
'';

Expand Down
Loading