about summary refs log tree commit diff
diff options
context:
space:
mode:
authorNiklas Hambüchen <mail@nh2.me>2019-08-12 06:38:55 +0200
committerNiklas Hambüchen <mail@nh2.me>2019-08-13 00:42:46 +0200
commitb7dfc72a88dba88a606676b305ae0d36fcf4b274 (patch)
tree06b1d4b1c98a6ecdfb720c9c2477e0f0ff94a7bb
parentc78fead2069a6df49e18f0b4db4c833bba1b2902 (diff)
downloadnixlib-b7dfc72a88dba88a606676b305ae0d36fcf4b274.tar
nixlib-b7dfc72a88dba88a606676b305ae0d36fcf4b274.tar.gz
nixlib-b7dfc72a88dba88a606676b305ae0d36fcf4b274.tar.bz2
nixlib-b7dfc72a88dba88a606676b305ae0d36fcf4b274.tar.lz
nixlib-b7dfc72a88dba88a606676b305ae0d36fcf4b274.tar.xz
nixlib-b7dfc72a88dba88a606676b305ae0d36fcf4b274.tar.zst
nixlib-b7dfc72a88dba88a606676b305ae0d36fcf4b274.zip
fetchurl: Don't force-override curl's gssSupport to on. Fixes #66499.
The original intent in commit

    a1fec866 treewide: assemble all `fetchurlBoot` uses in overrides to `fetchurl` itself

was to turn `gssSupport` *off* on Darwin, but the code actually also forced
it *on* on Linux.
This resulted in previous (e.g. overlays) `.override { gssSupport = false; }`
being ignored (#66499).

This commit fixes it by just respecting the old value when it doesn't need
to be forced to off.
-rw-r--r--pkgs/top-level/all-packages.nix11
1 files changed, 8 insertions, 3 deletions
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index c4169b9bb846..b27b57d4f6c8 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -275,7 +275,7 @@ in
   # `fetchurl' downloads a file from the network.
   fetchurl = makeOverridable (import ../build-support/fetchurl) {
     inherit lib stdenvNoCC;
-    curl = buildPackages.curl.override rec {
+    curl = buildPackages.curl.override (old: rec {
       # break dependency cycles
       fetchurl = stdenv.fetchurlBoot;
       zlib = buildPackages.zlib.override { fetchurl = stdenv.fetchurlBoot; };
@@ -292,7 +292,12 @@ in
       };
       # On darwin, libkrb5 needs bootstrap_cmds which would require
       # converting many packages to fetchurl_boot to avoid evaluation cycles.
-      gssSupport = !stdenv.isDarwin && !stdenv.hostPlatform.isWindows;
+      # So turn gssSupport off there, and on Windows.
+      # On other platforms, keep the previous value.
+      gssSupport =
+        if stdenv.isDarwin || stdenv.hostPlatform.isWindows
+          then false
+          else old.gssSupport or true; # `? true` is the default
       libkrb5 = buildPackages.libkrb5.override {
         fetchurl = stdenv.fetchurlBoot;
         inherit pkgconfig perl openssl;
@@ -304,7 +309,7 @@ in
         c-ares = buildPackages.c-ares.override { fetchurl = stdenv.fetchurlBoot; };
         libev = buildPackages.libev.override { fetchurl = stdenv.fetchurlBoot; };
       };
-    };
+    });
   };
 
   fetchRepoProject = callPackage ../build-support/fetchrepoproject { };