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