diff options
Diffstat (limited to 'nixpkgs/pkgs/development/libraries/protobuf')
13 files changed, 191 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/libraries/protobuf/2.5.nix b/nixpkgs/pkgs/development/libraries/protobuf/2.5.nix new file mode 100644 index 000000000000..9d7bb38cf3c9 --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/protobuf/2.5.nix @@ -0,0 +1,10 @@ +{ callPackage, fetchurl, ... } @ args: + +callPackage ./generic.nix (args // rec { + version = "2.5.0"; + # make sure you test also -A pythonPackages.protobuf + src = fetchurl { + url = "http://protobuf.googlecode.com/files/${version}.tar.bz2"; + sha256 = "0xxn9gxhvsgzz2sgmihzf6pf75clr05mqj6218camwrwajpcbgqk"; + }; +}) diff --git a/nixpkgs/pkgs/development/libraries/protobuf/3.1.nix b/nixpkgs/pkgs/development/libraries/protobuf/3.1.nix new file mode 100644 index 000000000000..91ef87512c84 --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/protobuf/3.1.nix @@ -0,0 +1,6 @@ +{ callPackage, ... }: + +callPackage ./generic-v3.nix { + version = "3.1.0"; + sha256 = "0qlvpsmqgh9nw0k4zrxlxf75pafi3p0ahz99v6761b903y8qyv4i"; +} diff --git a/nixpkgs/pkgs/development/libraries/protobuf/3.10.nix b/nixpkgs/pkgs/development/libraries/protobuf/3.10.nix new file mode 100644 index 000000000000..5ecb8e67f841 --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/protobuf/3.10.nix @@ -0,0 +1,6 @@ +{ callPackage, ... }: + +callPackage ./generic-v3.nix { + version = "3.10.1"; + sha256 = "1kbi2i1m5c7ss02ip8h0bdzvns4dgxx30a5c0iiph8g2ns02lr33"; +} diff --git a/nixpkgs/pkgs/development/libraries/protobuf/3.11.nix b/nixpkgs/pkgs/development/libraries/protobuf/3.11.nix new file mode 100644 index 000000000000..c5d8b21b1ac4 --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/protobuf/3.11.nix @@ -0,0 +1,6 @@ +{ callPackage, ... }: + +callPackage ./generic-v3.nix { + version = "3.11.4"; + sha256 = "00g61f1yd8z5l0z0svmr3hms38ph35lcx2y7hivw6fahslw0l8yw"; +} diff --git a/nixpkgs/pkgs/development/libraries/protobuf/3.12.nix b/nixpkgs/pkgs/development/libraries/protobuf/3.12.nix new file mode 100644 index 000000000000..6ea64a023800 --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/protobuf/3.12.nix @@ -0,0 +1,6 @@ +{ callPackage, ... }: + +callPackage ./generic-v3.nix { + version = "3.12.4"; + sha256 = "1gzvnd0g5hmx5ln39w7p4z4qphw87ksgsa1fgbpvi8d0asmwab2p"; +} diff --git a/nixpkgs/pkgs/development/libraries/protobuf/3.13.nix b/nixpkgs/pkgs/development/libraries/protobuf/3.13.nix new file mode 100644 index 000000000000..8499ac069e84 --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/protobuf/3.13.nix @@ -0,0 +1,6 @@ +{ callPackage, ... }: + +callPackage ./generic-v3.nix { + version = "3.13.0.1"; + sha256 = "1r3hvbvjjww6pdk0mlg1lym7avxn8851xm8dg98bf4zq4vyrcw12"; +} diff --git a/nixpkgs/pkgs/development/libraries/protobuf/3.14.nix b/nixpkgs/pkgs/development/libraries/protobuf/3.14.nix new file mode 100644 index 000000000000..82896b0dadee --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/protobuf/3.14.nix @@ -0,0 +1,6 @@ +{ callPackage, ... }: + +callPackage ./generic-v3.nix { + version = "3.14.0"; + sha256 = "1k4kkb78kdbz732wsph07v3zy3cz7l1msk2byrfvp0nb02sfl3a4"; +} diff --git a/nixpkgs/pkgs/development/libraries/protobuf/3.6.nix b/nixpkgs/pkgs/development/libraries/protobuf/3.6.nix new file mode 100644 index 000000000000..16decc44e847 --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/protobuf/3.6.nix @@ -0,0 +1,6 @@ +{ callPackage, ... }: + +callPackage ./generic-v3.nix { + version = "3.6.1.3"; + sha256 = "1spj0d4flx6h3phxx3sg9r00yv734hina3365avkcz9brnm089c1"; +} diff --git a/nixpkgs/pkgs/development/libraries/protobuf/3.7.nix b/nixpkgs/pkgs/development/libraries/protobuf/3.7.nix new file mode 100644 index 000000000000..9bfb307e3286 --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/protobuf/3.7.nix @@ -0,0 +1,6 @@ +{ callPackage, ... }: + +callPackage ./generic-v3.nix { + version = "3.7.1"; + sha256 = "00zkijvj80bmhlj8290x4bc416mng2dlbzwc4bkvfmbal1fx93m2"; +} diff --git a/nixpkgs/pkgs/development/libraries/protobuf/3.8.nix b/nixpkgs/pkgs/development/libraries/protobuf/3.8.nix new file mode 100644 index 000000000000..2ea03643b3ae --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/protobuf/3.8.nix @@ -0,0 +1,6 @@ +{ callPackage, ... }: + +callPackage ./generic-v3.nix { + version = "3.8.0"; + sha256 = "0vll02a6k46k720wfh25sl4hdai0130s3ix2l1wh6j1lm9pi7bm8"; +} diff --git a/nixpkgs/pkgs/development/libraries/protobuf/3.9.nix b/nixpkgs/pkgs/development/libraries/protobuf/3.9.nix new file mode 100644 index 000000000000..e74d5c527b1d --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/protobuf/3.9.nix @@ -0,0 +1,6 @@ +{ callPackage, ... }: + +callPackage ./generic-v3.nix { + version = "3.9.2"; + sha256 = "080zxa9w1pxp5y05aiwc0c8mlqkkh98wmid4l7m99cliphsd4qnn"; +} diff --git a/nixpkgs/pkgs/development/libraries/protobuf/generic-v3.nix b/nixpkgs/pkgs/development/libraries/protobuf/generic-v3.nix new file mode 100644 index 000000000000..4166aac7246b --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/protobuf/generic-v3.nix @@ -0,0 +1,60 @@ +{ stdenv +, fetchFromGitHub +, autoreconfHook, zlib, gmock, buildPackages +, version, sha256 +, ... +}: + +let +mkProtobufDerivation = buildProtobuf: stdenv: stdenv.mkDerivation { + pname = "protobuf"; + inherit version; + + # make sure you test also -A pythonPackages.protobuf + src = fetchFromGitHub { + owner = "protocolbuffers"; + repo = "protobuf"; + rev = "v${version}"; + inherit sha256; + }; + + postPatch = '' + rm -rf gmock + cp -r ${gmock.src}/googlemock gmock + cp -r ${gmock.src}/googletest googletest + chmod -R a+w gmock + chmod -R a+w googletest + ln -s ../googletest gmock/gtest + '' + stdenv.lib.optionalString stdenv.isDarwin '' + substituteInPlace src/google/protobuf/testing/googletest.cc \ + --replace 'tmpnam(b)' '"'$TMPDIR'/foo"' + ''; + + nativeBuildInputs = [ autoreconfHook buildPackages.which buildPackages.stdenv.cc buildProtobuf ]; + + buildInputs = [ zlib ]; + configureFlags = if buildProtobuf == null then [] else [ "--with-protoc=${buildProtobuf}/bin/protoc" ]; + + enableParallelBuilding = true; + + doCheck = true; + + dontDisableStatic = true; + + meta = { + description = "Google's data interchange format"; + longDescription = + ''Protocol Buffers are a way of encoding structured data in an efficient + yet extensible format. Google uses Protocol Buffers for almost all of + its internal RPC protocols and file formats. + ''; + license = stdenv.lib.licenses.bsd3; + platforms = stdenv.lib.platforms.unix; + homepage = "https://developers.google.com/protocol-buffers/"; + }; + + passthru.version = version; +}; +in mkProtobufDerivation(if (stdenv.buildPlatform != stdenv.hostPlatform) + then (mkProtobufDerivation null buildPackages.stdenv) + else null) stdenv diff --git a/nixpkgs/pkgs/development/libraries/protobuf/generic.nix b/nixpkgs/pkgs/development/libraries/protobuf/generic.nix new file mode 100644 index 000000000000..32d6f70d1eb6 --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/protobuf/generic.nix @@ -0,0 +1,61 @@ +{ stdenv, version, src +, autoreconfHook, zlib, gtest +, ... +}: + +stdenv.mkDerivation { + pname = "protobuf"; + inherit version; + + inherit src; + + postPatch = '' + rm -rf gtest + cp -r ${gtest.src}/googletest gtest + chmod -R a+w gtest + '' + stdenv.lib.optionalString stdenv.isDarwin '' + substituteInPlace src/google/protobuf/testing/googletest.cc \ + --replace 'tmpnam(b)' '"'$TMPDIR'/foo"' + ''; + + outputs = [ "out" "lib" ]; + + nativeBuildInputs = [ autoreconfHook ]; + buildInputs = [ zlib ]; + + # The generated C++ code uses static initializers which mutate a global data + # structure. This causes problems for an executable when: + # + # 1) it dynamically links to two libs, both of which contain generated C++ for + # the same proto file, and + # 2) the two aforementioned libs both dynamically link to libprotobuf. + # + # One solution is to statically link libprotobuf, that way the global + # variables are not shared; in fact, this is necessary for the python Mesos + # binding to not crash, as the python lib contains two C extensions which + # both refer to the same proto schema. + # + # See: https://github.com/NixOS/nixpkgs/pull/19064#issuecomment-255082684 + # https://github.com/google/protobuf/issues/1489 + dontDisableStatic = true; + configureFlags = [ + "CFLAGS=-fPIC" + "CXXFLAGS=-fPIC" + ]; + + doCheck = true; + + meta = { + description = "Protocol Buffers - Google's data interchange format"; + longDescription = + '' Protocol Buffers are a way of encoding structured data in an + efficient yet extensible format. Google uses Protocol Buffers for + almost all of its internal RPC protocols and file formats. + ''; + license = "mBSD"; + homepage = "https://developers.google.com/protocol-buffers/"; + platforms = stdenv.lib.platforms.unix; + }; + + passthru.version = version; +} |