about summary refs log tree commit diff
path: root/pkgs/development/libraries/c-ares/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/development/libraries/c-ares/default.nix')
-rw-r--r--pkgs/development/libraries/c-ares/default.nix56
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
+}