diff --git a/pkgs/by-name/mo/modern-cpp-kafka/package.nix b/pkgs/by-name/mo/modern-cpp-kafka/package.nix index 3a73192a3ad4..6f1b37ed6452 100644 --- a/pkgs/by-name/mo/modern-cpp-kafka/package.nix +++ b/pkgs/by-name/mo/modern-cpp-kafka/package.nix @@ -41,6 +41,11 @@ stdenv.mkDerivation rec { url = "https://github.com/morganstanley/modern-cpp-kafka/commit/236f8f91f5c3ad6e1055a6f55cd3aebd218e1226.patch"; hash = "sha256-cy568TQUu08sadq79hDz9jMvDqiDjfr+1cLMxFWGm1Q="; }) + (fetchpatch { + name = "macos-find-dylib.patch"; + url = "https://github.com/morganstanley/modern-cpp-kafka/commit/dc2753cd95b607a7202b40bad3aad472558bf350.patch"; + hash = "sha256-Te3GwAVRDyb6GFWlvkq1mIcNeXCtMyLr+/w1LilUYbE="; + }) ]; postPatch = '' @@ -53,13 +58,18 @@ stdenv.mkDerivation rec { buildInputs = [ boost ]; propagatedBuildInputs = [ rdkafka ]; - cmakeFlags = [ - "-DLIBRDKAFKA_INCLUDE_DIR=${rdkafka.out}/include" - "-DGTEST_LIBRARY_DIR=${gtest.out}/lib" - "-DGTEST_INCLUDE_DIR=${gtest.dev}/include" - "-DRAPIDJSON_INCLUDE_DIRS=${rapidjson.out}/include" - "-DCMAKE_CXX_FLAGS=-Wno-uninitialized" - ]; + cmakeFlags = + let + inherit (lib) cmakeFeature getLib getInclude; + in + [ + (cmakeFeature "LIBRDKAFKA_LIBRARY_DIR" "${getLib rdkafka}/lib") + (cmakeFeature "LIBRDKAFKA_INCLUDE_DIR" "${getInclude rdkafka}/include") + (cmakeFeature "GTEST_LIBRARY_DIR" "${getLib gtest}/lib") + (cmakeFeature "GTEST_INCLUDE_DIR" "${getInclude gtest}/include") + (cmakeFeature "RAPIDJSON_INCLUDE_DIRS" "${getInclude rapidjson}/include") + (cmakeFeature "CMAKE_CXX_FLAGS" "-Wno-uninitialized") + ]; checkInputs = [ gtest diff --git a/pkgs/by-name/rd/rdkafka/package.nix b/pkgs/by-name/rd/rdkafka/package.nix index 9405e9f3951c..c07800cebd6d 100644 --- a/pkgs/by-name/rd/rdkafka/package.nix +++ b/pkgs/by-name/rd/rdkafka/package.nix @@ -4,11 +4,10 @@ fetchFromGitHub, zlib, zstd, - pkg-config, - python3, openssl, - which, curl, + cmake, + ninja, }: stdenv.mkDerivation (finalAttrs: { @@ -22,10 +21,14 @@ stdenv.mkDerivation (finalAttrs: { sha256 = "sha256-OCCsxgEO8UvCcC0XwzqpqmaT8dV0Klrspp+2o1FbH2Y="; }; + outputs = [ + "out" + "dev" + ]; + nativeBuildInputs = [ - pkg-config - python3 - which + cmake + ninja ]; buildInputs = [ @@ -35,12 +38,30 @@ stdenv.mkDerivation (finalAttrs: { curl ]; - env.NIX_CFLAGS_COMPILE = "-Wno-error=strict-overflow"; + # examples and tests don't build on darwin statically + cmakeFlags = [ + (lib.cmakeBool "RDKAFKA_BUILD_STATIC" stdenv.hostPlatform.isStatic) + (lib.cmakeBool "RDKAFKA_BUILD_TESTS" ( + !stdenv.hostPlatform.isDarwin && !stdenv.hostPlatform.isStatic + )) + (lib.cmakeBool "RDKAFKA_BUILD_EXAMPLES" ( + !stdenv.hostPlatform.isDarwin && !stdenv.hostPlatform.isStatic + )) + (lib.cmakeFeature "CMAKE_C_FLAGS" "-Wno-error=strict-overflow") + ]; postPatch = '' patchShebangs . ''; + postFixup = lib.optionalString stdenv.hostPlatform.isStatic '' + # rdkafka changes the library names for static libraries but users in pkgsStatic aren't likely to be aware of this + # make sure the libraries are findable with both names + for pc in rdkafka{,++}; do + ln -s $dev/lib/pkgconfig/$pc{-static,}.pc + done + ''; + enableParallelBuilding = true; meta = with lib; { diff --git a/pkgs/development/php-packages/rdkafka/default.nix b/pkgs/development/php-packages/rdkafka/default.nix index 71d411b594e9..ee0d0f640ca0 100644 --- a/pkgs/development/php-packages/rdkafka/default.nix +++ b/pkgs/development/php-packages/rdkafka/default.nix @@ -18,7 +18,7 @@ buildPecl { postPhpize = '' substituteInPlace configure \ - --replace 'SEARCH_PATH="/usr/local /usr"' 'SEARCH_PATH=${rdkafka}' + --replace-fail 'SEARCH_PATH="/usr/local /usr"' 'SEARCH_PATH=${lib.getInclude rdkafka}' ''; meta = with lib; {