aboutsummaryrefslogtreecommitdiff
path: root/infra/libkookie/nixpkgs/pkgs/development/libraries/protobuf
diff options
context:
space:
mode:
authorMx Kookie <kookie@spacekookie.de>2020-10-31 19:35:09 +0100
committerMx Kookie <kookie@spacekookie.de>2020-10-31 19:35:09 +0100
commitc4625b175f8200f643fd6e11010932ea44c78433 (patch)
treebce3f89888c8ac3991fa5569a878a9eab6801ccc /infra/libkookie/nixpkgs/pkgs/development/libraries/protobuf
parent49f735974dd103039ddc4cb576bb76555164a9e7 (diff)
parentd661aa56a8843e991261510c1bb28fdc2f6975ae (diff)
Add 'infra/libkookie/' from commit 'd661aa56a8843e991261510c1bb28fdc2f6975ae'
git-subtree-dir: infra/libkookie git-subtree-mainline: 49f735974dd103039ddc4cb576bb76555164a9e7 git-subtree-split: d661aa56a8843e991261510c1bb28fdc2f6975ae
Diffstat (limited to 'infra/libkookie/nixpkgs/pkgs/development/libraries/protobuf')
-rw-r--r--infra/libkookie/nixpkgs/pkgs/development/libraries/protobuf/2.5.nix10
-rw-r--r--infra/libkookie/nixpkgs/pkgs/development/libraries/protobuf/3.1.nix6
-rw-r--r--infra/libkookie/nixpkgs/pkgs/development/libraries/protobuf/3.10.nix6
-rw-r--r--infra/libkookie/nixpkgs/pkgs/development/libraries/protobuf/3.11.nix6
-rw-r--r--infra/libkookie/nixpkgs/pkgs/development/libraries/protobuf/3.12.nix6
-rw-r--r--infra/libkookie/nixpkgs/pkgs/development/libraries/protobuf/3.13.nix6
-rw-r--r--infra/libkookie/nixpkgs/pkgs/development/libraries/protobuf/3.6.nix6
-rw-r--r--infra/libkookie/nixpkgs/pkgs/development/libraries/protobuf/3.7.nix6
-rw-r--r--infra/libkookie/nixpkgs/pkgs/development/libraries/protobuf/3.8.nix6
-rw-r--r--infra/libkookie/nixpkgs/pkgs/development/libraries/protobuf/3.9.nix6
-rw-r--r--infra/libkookie/nixpkgs/pkgs/development/libraries/protobuf/generic-v3.nix60
-rw-r--r--infra/libkookie/nixpkgs/pkgs/development/libraries/protobuf/generic.nix61
12 files changed, 185 insertions, 0 deletions
diff --git a/infra/libkookie/nixpkgs/pkgs/development/libraries/protobuf/2.5.nix b/infra/libkookie/nixpkgs/pkgs/development/libraries/protobuf/2.5.nix
new file mode 100644
index 000000000000..550d0b1bace2
--- /dev/null
+++ b/infra/libkookie/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";
+ };
+}) \ No newline at end of file
diff --git a/infra/libkookie/nixpkgs/pkgs/development/libraries/protobuf/3.1.nix b/infra/libkookie/nixpkgs/pkgs/development/libraries/protobuf/3.1.nix
new file mode 100644
index 000000000000..91ef87512c84
--- /dev/null
+++ b/infra/libkookie/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/infra/libkookie/nixpkgs/pkgs/development/libraries/protobuf/3.10.nix b/infra/libkookie/nixpkgs/pkgs/development/libraries/protobuf/3.10.nix
new file mode 100644
index 000000000000..5ecb8e67f841
--- /dev/null
+++ b/infra/libkookie/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/infra/libkookie/nixpkgs/pkgs/development/libraries/protobuf/3.11.nix b/infra/libkookie/nixpkgs/pkgs/development/libraries/protobuf/3.11.nix
new file mode 100644
index 000000000000..c5d8b21b1ac4
--- /dev/null
+++ b/infra/libkookie/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/infra/libkookie/nixpkgs/pkgs/development/libraries/protobuf/3.12.nix b/infra/libkookie/nixpkgs/pkgs/development/libraries/protobuf/3.12.nix
new file mode 100644
index 000000000000..6ea64a023800
--- /dev/null
+++ b/infra/libkookie/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/infra/libkookie/nixpkgs/pkgs/development/libraries/protobuf/3.13.nix b/infra/libkookie/nixpkgs/pkgs/development/libraries/protobuf/3.13.nix
new file mode 100644
index 000000000000..3e3740a7c501
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/development/libraries/protobuf/3.13.nix
@@ -0,0 +1,6 @@
+{ callPackage, ... }:
+
+callPackage ./generic-v3.nix {
+ version = "3.13.0";
+ sha256 = "1nqsvi2yfr93kiwlinz8z7c68ilg1j75b2vcpzxzvripxx5h6xhd";
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/development/libraries/protobuf/3.6.nix b/infra/libkookie/nixpkgs/pkgs/development/libraries/protobuf/3.6.nix
new file mode 100644
index 000000000000..16decc44e847
--- /dev/null
+++ b/infra/libkookie/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/infra/libkookie/nixpkgs/pkgs/development/libraries/protobuf/3.7.nix b/infra/libkookie/nixpkgs/pkgs/development/libraries/protobuf/3.7.nix
new file mode 100644
index 000000000000..9bfb307e3286
--- /dev/null
+++ b/infra/libkookie/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/infra/libkookie/nixpkgs/pkgs/development/libraries/protobuf/3.8.nix b/infra/libkookie/nixpkgs/pkgs/development/libraries/protobuf/3.8.nix
new file mode 100644
index 000000000000..2ea03643b3ae
--- /dev/null
+++ b/infra/libkookie/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/infra/libkookie/nixpkgs/pkgs/development/libraries/protobuf/3.9.nix b/infra/libkookie/nixpkgs/pkgs/development/libraries/protobuf/3.9.nix
new file mode 100644
index 000000000000..e74d5c527b1d
--- /dev/null
+++ b/infra/libkookie/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/infra/libkookie/nixpkgs/pkgs/development/libraries/protobuf/generic-v3.nix b/infra/libkookie/nixpkgs/pkgs/development/libraries/protobuf/generic-v3.nix
new file mode 100644
index 000000000000..4166aac7246b
--- /dev/null
+++ b/infra/libkookie/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/infra/libkookie/nixpkgs/pkgs/development/libraries/protobuf/generic.nix b/infra/libkookie/nixpkgs/pkgs/development/libraries/protobuf/generic.nix
new file mode 100644
index 000000000000..32d6f70d1eb6
--- /dev/null
+++ b/infra/libkookie/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;
+}