Clone of https://github.com/NixOS/nixpkgs.git (to stress-test knotserver)
1{ 2 lib, 3 asioSupport ? true, 4 asio, 5 boost, 6 log4cxxSupport ? false, 7 log4cxx, 8 snappySupport ? false, 9 snappy, 10 zlibSupport ? true, 11 zlib, 12 zstdSupport ? true, 13 zstd, 14 gtest, 15 gtestSupport ? false, 16 cmake, 17 curl, 18 fetchFromGitHub, 19 protobuf, 20 jsoncpp, 21 openssl, 22 pkg-config, 23 stdenv, 24}: 25 26let 27 /* 28 Check if null or false 29 Example: 30 let result = enableFeature null 31 => "OFF" 32 let result = enableFeature false 33 => "OFF" 34 let result = enableFeature «derivation» 35 => "ON" 36 */ 37 enableCmakeFeature = p: if (p == null || p == false) then "OFF" else "ON"; 38 39 defaultOptionals = [ 40 protobuf 41 ] 42 ++ lib.optional snappySupport snappy.dev 43 ++ lib.optional zlibSupport zlib 44 ++ lib.optional zstdSupport zstd 45 ++ lib.optional log4cxxSupport log4cxx 46 ++ lib.optional asioSupport asio 47 ++ lib.optional (!asioSupport) boost; 48 49in 50stdenv.mkDerivation (finalAttrs: { 51 pname = "libpulsar"; 52 version = "3.7.2"; 53 54 src = fetchFromGitHub { 55 owner = "apache"; 56 repo = "pulsar-client-cpp"; 57 rev = "v${finalAttrs.version}"; 58 hash = "sha256-3kUyimyv0Si3zUFaIsIVdulzH8l2fxe6BO9a5L6n8I8="; 59 }; 60 61 nativeBuildInputs = [ 62 cmake 63 pkg-config 64 ] 65 ++ defaultOptionals 66 ++ lib.optional gtestSupport gtest.dev; 67 68 buildInputs = [ 69 jsoncpp 70 openssl 71 curl 72 ] 73 ++ defaultOptionals; 74 75 cmakeFlags = [ 76 "-DBUILD_TESTS=${enableCmakeFeature gtestSupport}" 77 "-DUSE_LOG4CXX=${enableCmakeFeature log4cxxSupport}" 78 "-DUSE_ASIO=${enableCmakeFeature asioSupport}" 79 ]; 80 81 doInstallCheck = true; 82 installCheckPhase = '' 83 echo ${lib.escapeShellArg '' 84 #include <pulsar/Client.h> 85 int main (int argc, char **argv) { 86 pulsar::Client client("pulsar://localhost:6650"); 87 return 0; 88 } 89 ''} > test.cc 90 $CXX test.cc -L $out/lib -I $out/include -lpulsar -o test 91 ''; 92 93 meta = with lib; { 94 homepage = "https://pulsar.apache.org/docs/next/client-libraries-cpp/"; 95 description = "Apache Pulsar C++ library"; 96 changelog = "https://github.com/apache/pulsar-client-cpp/releases/tag/v${finalAttrs.version}"; 97 platforms = platforms.all; 98 license = licenses.asl20; 99 maintainers = with maintainers; [ 100 corbanr 101 gaelreyrol 102 ]; 103 }; 104})