storj-uplink: 1.119.15 -> 1.120.4 (#375732)
[NixPkgs.git] / pkgs / by-name / li / libserdes / package.nix
blobf42ff147381e1cb02335a0fb746704eaa4ceed17
2   stdenv,
3   lib,
4   fetchFromGitHub,
5   perl,
6   which,
7   rdkafka,
8   jansson,
9   curl,
10   avro-c,
11   avro-cpp,
12   nix-update-script,
15 stdenv.mkDerivation rec {
16   pname = "libserdes";
17   version = "7.8.0";
19   src = fetchFromGitHub {
20     owner = "confluentinc";
21     repo = pname;
22     rev = "v${version}";
23     hash = "sha256-rg4SWa9nIDT6JrnnCDwdiFE1cvpUn0HWHn+bPkXMHQ4=";
24   };
26   outputs = [
27     "dev"
28     "out"
29   ];
31   nativeBuildInputs = [
32     perl
33     which
34   ];
36   buildInputs = [
37     rdkafka
38     jansson
39     curl
40     avro-c
41     avro-cpp
42   ];
44   configureFlags = [
45     # avro-cpp public headers use at least C++17 features, but libserdes configure scripts
46     # basically cap it at C++11. It's really unfortunate that we have to patch the configure scripts for this,
47     # but this seems to be the most sensible way.
48     # - NIX_CFLAGS_COMPILE - fails because of -Werror in compiler checks since --std=... has no effect for C compilers.
49     # - CXXFLAGS without patching configure.self does nothing, because --std=c++11 is appended to the final flags, overriding
50     #   everything specified manually.
51     "--CXXFLAGS=${toString [ "--std=c++17" ]}"
52   ];
54   makeFlags = [
55     "GEN_PKG_CONFIG=y"
56   ];
58   postPatch = ''
59     patchShebangs configure lds-gen.pl
60     # Don't append the standard to CXXFLAGS, since we want to set it higher for avro-cpp.
61     substituteInPlace configure.self --replace-fail \
62       'mkl_mkvar_append CXXFLAGS CXXFLAGS "--std=c++11"' \
63       ":" # Do nothing, we set the standard ourselves.
64   '';
66   # Has a configure script but it’s not Autoconf so steal some bits from multiple-outputs.sh:
67   setOutputFlags = false;
69   preConfigure = ''
70     configureFlagsArray+=(
71       "--libdir=''${!outputLib}/lib"
72       "--includedir=''${!outputInclude}/include"
73     )
74   '';
76   preInstall = ''
77     installFlagsArray+=("pkgconfigdir=''${!outputDev}/lib/pkgconfig")
78   '';
80   # Header files get installed with executable bit for some reason; get rid of it.
81   postInstall = ''
82     chmod -x ''${!outputInclude}/include/libserdes/*.h
83   '';
85   passthru.updateScript = nix-update-script { };
87   meta = with lib; {
88     description = "Schema-based serializer/deserializer C/C++ library with support for Avro and the Confluent Platform Schema Registry";
89     homepage = "https://github.com/confluentinc/libserdes";
90     license = licenses.asl20;
91     maintainers = with maintainers; [ liff ];
92     platforms = platforms.all;
93   };