Merge pull request #191135 from jonringer/improve-c-ares
This commit is contained in:
@@ -1,54 +1,48 @@
|
||||
{ lib, stdenv, fetchurl, writeTextDir }:
|
||||
{ lib, stdenv, fetchurl, writeTextDir
|
||||
, fetchpatch
|
||||
, withCMake ? true, cmake
|
||||
|
||||
# sensitive downstream packages
|
||||
, curl
|
||||
, grpc # consumes cmake config
|
||||
}:
|
||||
|
||||
# Note: this package is used for bootstrapping fetchurl, and thus
|
||||
# cannot use fetchpatch! All mutable patches (generated by GitHub or
|
||||
# cgit) that are needed here should be included directly in Nixpkgs as
|
||||
# files.
|
||||
|
||||
let self =
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "c-ares";
|
||||
version = "1.18.1";
|
||||
outputs = [ "out" "dev" ];
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://c-ares.haxx.se/download/${pname}-${version}.tar.gz";
|
||||
sha256 = "sha256-Gn1SqKhKn7/7G+kTPA9uFyF9kepab6Yfa0cpzaeOu88=";
|
||||
};
|
||||
|
||||
# c-ares is used for fetchpatch, so avoid using it for c-aresMinimal
|
||||
patches = lib.optionals withCMake [
|
||||
# fix .pc paths created by cmake build
|
||||
(fetchpatch {
|
||||
url = "https://github.com/jonringer/c-ares/commit/9806a8a2f999a8a3efa3c893f2854dce6919d5bb.patch";
|
||||
sha256 = "sha256-nh/ZKdan2/FTrouApRQA7O8KGZrLEUuWhxGOktiiGwU=";
|
||||
})
|
||||
];
|
||||
|
||||
nativeBuildInputs = lib.optionals withCMake [ cmake ];
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
||||
passthru.tests = {
|
||||
inherit curl grpc;
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
description = "A C library for asynchronous DNS requests";
|
||||
homepage = "https://c-ares.haxx.se";
|
||||
license = licenses.mit;
|
||||
platforms = platforms.all;
|
||||
};
|
||||
|
||||
# Adapted from running a cmake build
|
||||
passthru.cmake-config = let
|
||||
extension = if stdenv.hostPlatform.isStatic then ".a" else stdenv.hostPlatform.extensions.sharedLibrary;
|
||||
buildType = if stdenv.hostPlatform.isStatic then "STATIC" else "SHARED";
|
||||
buildTypeLower = if stdenv.hostPlatform.isStatic then "static" else "shared";
|
||||
in writeTextDir "c-ares-config.cmake"
|
||||
''
|
||||
set(c-ares_INCLUDE_DIR "${self}/include")
|
||||
|
||||
set(c-ares_LIBRARY c-ares::cares)
|
||||
|
||||
add_library(c-ares::cares ${buildType} IMPORTED)
|
||||
|
||||
set_target_properties(c-ares::cares PROPERTIES
|
||||
INTERFACE_INCLUDE_DIRECTORIES "${self}/include"
|
||||
${lib.optionalString stdenv.isLinux ''INTERFACE_LINK_LIBRARIES "nsl;rt"''}
|
||||
)
|
||||
set_property(TARGET c-ares::cares APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE)
|
||||
set_target_properties(c-ares::cares PROPERTIES
|
||||
IMPORTED_LOCATION_RELEASE "${self}/lib/libcares${extension}"
|
||||
IMPORTED_SONAME_RELEASE "libcares${extension}"
|
||||
)
|
||||
add_library(c-ares::cares_${buildTypeLower} INTERFACE IMPORTED)
|
||||
set_target_properties(c-ares::cares_${buildTypeLower} PROPERTIES INTERFACE_LINK_LIBRARIES "c-ares::cares")
|
||||
set(c-ares_${buildType}_LIBRARY c-ares::cares_${buildTypeLower})
|
||||
'';
|
||||
|
||||
}; in self
|
||||
}
|
||||
|
||||
@@ -51,7 +51,7 @@ stdenv.mkDerivation rec {
|
||||
nativeBuildInputs = [ cmake pkg-config ]
|
||||
++ lib.optional (stdenv.hostPlatform != stdenv.buildPlatform) grpc;
|
||||
propagatedBuildInputs = [ c-ares re2 zlib abseil-cpp ];
|
||||
buildInputs = [ c-ares.cmake-config openssl protobuf ]
|
||||
buildInputs = [ openssl protobuf ]
|
||||
++ lib.optionals stdenv.isLinux [ libnsl ];
|
||||
|
||||
cmakeFlags = [
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
|
||||
# Optional dependencies
|
||||
, enableApp ? with stdenv.hostPlatform; !isWindows && !isStatic
|
||||
, c-ares, libev, openssl, zlib
|
||||
, c-aresMinimal, libev, openssl, zlib
|
||||
, enableAsioLib ? false, boost
|
||||
, enableGetAssets ? false, libxml2
|
||||
, enableHpack ? false, jansson
|
||||
@@ -45,7 +45,7 @@ stdenv.mkDerivation rec {
|
||||
++ lib.optionals (enableApp) [ installShellFiles ]
|
||||
++ lib.optionals (enablePython) [ python3Packages.cython ];
|
||||
|
||||
buildInputs = lib.optionals enableApp [ c-ares libev openssl zlib ]
|
||||
buildInputs = lib.optionals enableApp [ c-aresMinimal libev openssl zlib ]
|
||||
++ lib.optionals (enableAsioLib) [ boost ]
|
||||
++ lib.optionals (enableGetAssets) [ libxml2 ]
|
||||
++ lib.optionals (enableHpack) [ jansson ]
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{ 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
|
||||
, gssSupport ? with stdenv.hostPlatform; (
|
||||
@@ -75,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 ++
|
||||
|
||||
@@ -18032,7 +18032,13 @@ with pkgs;
|
||||
|
||||
bzrtp = callPackage ../development/libraries/bzrtp { };
|
||||
|
||||
c-ares = callPackage ../development/libraries/c-ares { };
|
||||
c-ares = callPackage ../development/libraries/c-ares {
|
||||
inherit (buildPackages) cmake;
|
||||
};
|
||||
|
||||
c-aresMinimal = callPackage ../development/libraries/c-ares {
|
||||
withCMake = false;
|
||||
};
|
||||
|
||||
c-blosc = callPackage ../development/libraries/c-blosc { };
|
||||
|
||||
|
||||
Reference in New Issue
Block a user