diff options
Diffstat (limited to 'pkgs/development/libraries/c-ares/default.nix')
-rw-r--r-- | pkgs/development/libraries/c-ares/default.nix | 56 |
1 files changed, 25 insertions, 31 deletions
diff --git a/pkgs/development/libraries/c-ares/default.nix b/pkgs/development/libraries/c-ares/default.nix index a5a41813bc3e7..42023990c9e1e 100644 --- a/pkgs/development/libraries/c-ares/default.nix +++ b/pkgs/development/libraries/c-ares/default.nix @@ -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 +} |