{ lib, stdenv, fetchurl, updateAutotoolsGnuConfigScriptsHook, 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. stdenv.mkDerivation rec { pname = "c-ares"; version = "1.34.5"; src = fetchurl { # Note: tag name varies in some versions, e.g. v1.30.0, c-ares-1_17_0. url = "https://github.com/c-ares/c-ares/releases/download/v${version}/c-ares-${version}.tar.gz"; hash = "sha256-fZNXkOmvCBwlxJX9E8LPzaR5KYNBjpY1jvbnMg7gY0Y="; }; outputs = [ "out" "dev" "man" ]; nativeBuildInputs = [ updateAutotoolsGnuConfigScriptsHook ] ++ lib.optionals withCMake [ cmake ]; cmakeFlags = [ ] ++ lib.optionals stdenv.hostPlatform.isStatic [ "-DCARES_SHARED=OFF" "-DCARES_STATIC=ON" ]; enableParallelBuilding = true; passthru.tests = { inherit grpc; curl = (curl.override { c-aresSupport = true; }).tests.withCheck; }; preFixup = lib.optionalString withCMake '' substituteInPlace $out/lib/pkgconfig/libcares.pc --replace-fail \''${prefix}/ "" ''; meta = with lib; { description = "C library for asynchronous DNS requests"; homepage = "https://c-ares.haxx.se"; changelog = "https://c-ares.org/changelog.html#${lib.replaceStrings [ "." ] [ "_" ] version}"; license = licenses.mit; platforms = platforms.all; }; }