Merge pull request #268619 from tweag/lib-descriptions
[NixPkgs.git] / pkgs / development / libraries / protobuf / generic-v3.nix
blob9dc7f70c2fe20293b3977ac35c6bf582e7eac700
1 { lib, stdenv
2 , fetchFromGitHub
3 , autoreconfHook, zlib, gtest, buildPackages
4 , version, sha256
5 , ...
6 }:
8 let
9 mkProtobufDerivation = buildProtobuf: stdenv: stdenv.mkDerivation {
10   pname = "protobuf";
11   inherit version;
13   # make sure you test also -A pythonPackages.protobuf
14   src = fetchFromGitHub {
15     owner = "protocolbuffers";
16     repo = "protobuf";
17     rev = "v${version}";
18     inherit sha256;
19   };
21   postPatch = ''
22     rm -rf gmock
23     cp -r ${gtest.src}/googlemock gmock
24     cp -r ${gtest.src}/googletest googletest
25     chmod -R a+w gmock
26     chmod -R a+w googletest
27     ln -s ../googletest gmock/gtest
28   '' + lib.optionalString stdenv.isDarwin ''
29     substituteInPlace src/google/protobuf/testing/googletest.cc \
30       --replace 'tmpnam(b)' '"'$TMPDIR'/foo"'
31   '';
33   nativeBuildInputs = [ autoreconfHook buildPackages.which buildPackages.stdenv.cc buildProtobuf ];
35   buildInputs = [ zlib ];
36   configureFlags = lib.optional (buildProtobuf != null) "--with-protoc=${buildProtobuf}/bin/protoc";
38   enableParallelBuilding = true;
40   doCheck = true;
42   dontDisableStatic = true;
44   meta = {
45     description = "Google's data interchange format";
46     longDescription =
47       ''Protocol Buffers are a way of encoding structured data in an efficient
48         yet extensible format. Google uses Protocol Buffers for almost all of
49         its internal RPC protocols and file formats.
50       '';
51     homepage = "https://developers.google.com/protocol-buffers/";
52     license = lib.licenses.bsd3;
53     mainProgram = "protoc";
54     platforms = lib.platforms.unix;
55   };
57 in mkProtobufDerivation(if (stdenv.buildPlatform != stdenv.hostPlatform)
58                         then (mkProtobufDerivation null buildPackages.stdenv)
59                         else null) stdenv