diff options
Diffstat (limited to 'nixpkgs/pkgs/tools/networking/curl/default.nix')
-rw-r--r-- | nixpkgs/pkgs/tools/networking/curl/default.nix | 34 |
1 files changed, 19 insertions, 15 deletions
diff --git a/nixpkgs/pkgs/tools/networking/curl/default.nix b/nixpkgs/pkgs/tools/networking/curl/default.nix index a62b6c8e27bb..5ff2aef0b833 100644 --- a/nixpkgs/pkgs/tools/networking/curl/default.nix +++ b/nixpkgs/pkgs/tools/networking/curl/default.nix @@ -1,12 +1,11 @@ { lib, stdenv, fetchurl, pkg-config, perl, nixosTests , brotliSupport ? false, brotli -, c-aresSupport ? false, c-ares +, c-aresSupport ? false, c-aresMinimal , gnutlsSupport ? false, gnutls , gsaslSupport ? false, gsasl -, patchNetrcRegression ? false , gssSupport ? with stdenv.hostPlatform; ( !isWindows && - # disable gss becuase of: undefined reference to `k5_bcmp' + # disable gss because of: undefined reference to `k5_bcmp' # a very sad story re static: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=439039 !isStatic && # the "mig" tool does not configure its compiler correctly. This could be @@ -23,6 +22,7 @@ , rtmpSupport ? false, rtmpdump , scpSupport ? zlibSupport && !stdenv.isSunOS && !stdenv.isCygwin, libssh2 , wolfsslSupport ? false, wolfssl +, rustlsSupport ? false, rustls-ffi , zlibSupport ? true, zlib , zstdSupport ? false, zstd @@ -34,6 +34,7 @@ , phpExtensions , python3 , tests +, testers , fetchpatch }: @@ -42,27 +43,23 @@ # cgit) that are needed here should be included directly in Nixpkgs as # files. -assert !(gnutlsSupport && opensslSupport); -assert !(gnutlsSupport && wolfsslSupport); -assert !(opensslSupport && wolfsslSupport); +assert !((lib.count (x: x) [ gnutlsSupport opensslSupport wolfsslSupport rustlsSupport ]) > 1); stdenv.mkDerivation (finalAttrs: { pname = "curl"; - version = "7.84.0"; + version = "8.1.1"; src = fetchurl { urls = [ "https://curl.haxx.se/download/curl-${finalAttrs.version}.tar.bz2" "https://github.com/curl/curl/releases/download/curl-${finalAttrs.version}/curl-${finalAttrs.version}.tar.bz2" ]; - sha256 = "sha256-cC+ybnMZCjvXcHGqFG9Qe5gXzE384hjSq4fwDNO8BZ0="; + hash = "sha256-UdKvcieZE7XUyrH+Hzi5RM9wkEyIvuJGtb1XWETnA1o="; }; patches = [ ./7.79.1-darwin-no-systemconfiguration.patch - ./sched.patch - ./atomic.patch - ] ++ lib.optional patchNetrcRegression ./netrc-regression.patch; + ]; outputs = [ "bin" "dev" "out" "man" "devdoc" ]; separateDebugInfo = stdenv.isLinux; @@ -78,7 +75,7 @@ stdenv.mkDerivation (finalAttrs: { # applications that use Curl. propagatedBuildInputs = with lib; optional brotliSupport brotli ++ - optional c-aresSupport c-ares ++ + optional c-aresSupport c-aresMinimal ++ optional gnutlsSupport gnutls ++ optional gsaslSupport gsasl ++ optional gssSupport libkrb5 ++ @@ -91,6 +88,7 @@ stdenv.mkDerivation (finalAttrs: { optional rtmpSupport rtmpdump ++ optional scpSupport libssh2 ++ optional wolfsslSupport wolfssl ++ + optional rustlsSupport rustls-ffi ++ optional zlibSupport zlib ++ optional zstdSupport zstd; @@ -106,11 +104,12 @@ stdenv.mkDerivation (finalAttrs: { (lib.enableFeature c-aresSupport "ares") (lib.enableFeature ldapSupport "ldap") (lib.enableFeature ldapSupport "ldaps") - # The build fails when using wolfssl with --with-ca-fallback - (lib.withFeature (!wolfsslSupport) "ca-fallback") + # --with-ca-fallback is only supported for openssl and gnutls https://github.com/curl/curl/blame/curl-8_0_1/acinclude.m4#L1640 + (lib.withFeature (opensslSupport || gnutlsSupport) "ca-fallback") (lib.withFeature http3Support "nghttp3") (lib.withFeature http3Support "ngtcp2") (lib.withFeature rtmpSupport "librtmp") + (lib.withFeature rustlsSupport "rustls") (lib.withFeature zstdSupport "zstd") (lib.withFeatureAs brotliSupport "brotli" (lib.getDev brotli)) (lib.withFeatureAs gnutlsSupport "gnutls" (lib.getDev gnutls)) @@ -131,6 +130,8 @@ stdenv.mkDerivation (finalAttrs: { # Without this curl might detect /etc/ssl/cert.pem at build time on macOS, causing curl to ignore NIX_SSL_CERT_FILE. "--without-ca-bundle" "--without-ca-path" + ] ++ lib.optionals (!gnutlsSupport && !opensslSupport && !wolfsslSupport && !rustlsSupport) [ + "--without-ssl" ]; CXX = "${stdenv.cc.targetPrefix}c++"; @@ -170,7 +171,7 @@ stdenv.mkDerivation (finalAttrs: { inherit opensslSupport openssl; tests = { withCheck = finalAttrs.finalPackage.overrideAttrs (_: { doCheck = true; }); - fetchpatch = tests.fetchpatch.simple.override { fetchpatch = fetchpatch.override { fetchurl = useThisCurl fetchurl; }; }; + fetchpatch = tests.fetchpatch.simple.override { fetchpatch = (fetchpatch.override { fetchurl = useThisCurl fetchurl; }) // { version = 1; }; }; curlpp = useThisCurl curlpp; coeurl = useThisCurl coeurl; haskell-curl = useThisCurl haskellPackages.curl; @@ -181,10 +182,12 @@ stdenv.mkDerivation (finalAttrs: { # Additional checking with support http3 protocol. # nginx-http3 = useThisCurl nixosTests.nginx-http3; nginx-http3 = nixosTests.nginx-http3; + pkg-config = testers.testMetaPkgConfig finalAttrs.finalPackage; }; }; meta = with lib; { + changelog = "https://curl.se/changes.html#${lib.replaceStrings [ "." ] [ "_" ] finalAttrs.version}"; description = "A command line tool for transferring files with URL syntax"; homepage = "https://curl.se/"; license = licenses.curl; @@ -192,5 +195,6 @@ stdenv.mkDerivation (finalAttrs: { platforms = platforms.all; # Fails to link against static brotli or gss broken = stdenv.hostPlatform.isStatic && (brotliSupport || gssSupport); + pkgConfigModules = [ "libcurl" ]; }; }) |