about summary refs log tree commit diff
path: root/nixpkgs/pkgs/development/libraries/protobuf
diff options
context:
space:
mode:
authorAlyssa Ross <hi@alyssa.is>2022-12-06 19:57:55 +0000
committerAlyssa Ross <hi@alyssa.is>2023-02-08 13:48:30 +0000
commitbf3aadfdd39aa197e18bade671fab6726349ffa4 (patch)
tree698567af766ed441d757b57a7b21e68d4a342a2b /nixpkgs/pkgs/development/libraries/protobuf
parentf4afc5a01d9539ce09e47494e679c51f80723d07 (diff)
parent99665eb45f58d959d2cb9e49ddb960c79d596f33 (diff)
downloadnixlib-bf3aadfdd39aa197e18bade671fab6726349ffa4.tar
nixlib-bf3aadfdd39aa197e18bade671fab6726349ffa4.tar.gz
nixlib-bf3aadfdd39aa197e18bade671fab6726349ffa4.tar.bz2
nixlib-bf3aadfdd39aa197e18bade671fab6726349ffa4.tar.lz
nixlib-bf3aadfdd39aa197e18bade671fab6726349ffa4.tar.xz
nixlib-bf3aadfdd39aa197e18bade671fab6726349ffa4.tar.zst
nixlib-bf3aadfdd39aa197e18bade671fab6726349ffa4.zip
Merge commit '99665eb45f58d959d2cb9e49ddb960c79d596f33'
Diffstat (limited to 'nixpkgs/pkgs/development/libraries/protobuf')
-rw-r--r--nixpkgs/pkgs/development/libraries/protobuf/2.5.nix10
-rw-r--r--nixpkgs/pkgs/development/libraries/protobuf/3.1.nix6
-rw-r--r--nixpkgs/pkgs/development/libraries/protobuf/3.10.nix6
-rw-r--r--nixpkgs/pkgs/development/libraries/protobuf/3.12.nix6
-rw-r--r--nixpkgs/pkgs/development/libraries/protobuf/3.13.nix6
-rw-r--r--nixpkgs/pkgs/development/libraries/protobuf/3.14.nix6
-rw-r--r--nixpkgs/pkgs/development/libraries/protobuf/3.15.nix6
-rw-r--r--nixpkgs/pkgs/development/libraries/protobuf/3.16.nix6
-rw-r--r--nixpkgs/pkgs/development/libraries/protobuf/3.18.nix6
-rw-r--r--nixpkgs/pkgs/development/libraries/protobuf/3.19.nix4
-rw-r--r--nixpkgs/pkgs/development/libraries/protobuf/3.20.nix6
-rw-r--r--nixpkgs/pkgs/development/libraries/protobuf/3.21.nix6
-rw-r--r--nixpkgs/pkgs/development/libraries/protobuf/3.6.nix6
-rw-r--r--nixpkgs/pkgs/development/libraries/protobuf/3.9.nix6
-rw-r--r--nixpkgs/pkgs/development/libraries/protobuf/generic-v3-cmake.nix107
-rw-r--r--nixpkgs/pkgs/development/libraries/protobuf/generic-v3.nix3
-rw-r--r--nixpkgs/pkgs/development/libraries/protobuf/generic.nix61
17 files changed, 123 insertions, 134 deletions
diff --git a/nixpkgs/pkgs/development/libraries/protobuf/2.5.nix b/nixpkgs/pkgs/development/libraries/protobuf/2.5.nix
deleted file mode 100644
index 9d7bb38cf3c9..000000000000
--- a/nixpkgs/pkgs/development/libraries/protobuf/2.5.nix
+++ /dev/null
@@ -1,10 +0,0 @@
-{ 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
deleted file mode 100644
index 91ef87512c84..000000000000
--- a/nixpkgs/pkgs/development/libraries/protobuf/3.1.nix
+++ /dev/null
@@ -1,6 +0,0 @@
-{ 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
deleted file mode 100644
index 5ecb8e67f841..000000000000
--- a/nixpkgs/pkgs/development/libraries/protobuf/3.10.nix
+++ /dev/null
@@ -1,6 +0,0 @@
-{ callPackage, ... }:
-
-callPackage ./generic-v3.nix {
-  version = "3.10.1";
-  sha256 = "1kbi2i1m5c7ss02ip8h0bdzvns4dgxx30a5c0iiph8g2ns02lr33";
-}
diff --git a/nixpkgs/pkgs/development/libraries/protobuf/3.12.nix b/nixpkgs/pkgs/development/libraries/protobuf/3.12.nix
deleted file mode 100644
index 6ea64a023800..000000000000
--- a/nixpkgs/pkgs/development/libraries/protobuf/3.12.nix
+++ /dev/null
@@ -1,6 +0,0 @@
-{ 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
deleted file mode 100644
index 8499ac069e84..000000000000
--- a/nixpkgs/pkgs/development/libraries/protobuf/3.13.nix
+++ /dev/null
@@ -1,6 +0,0 @@
-{ 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
deleted file mode 100644
index 82896b0dadee..000000000000
--- a/nixpkgs/pkgs/development/libraries/protobuf/3.14.nix
+++ /dev/null
@@ -1,6 +0,0 @@
-{ callPackage, ... }:
-
-callPackage ./generic-v3.nix {
-  version = "3.14.0";
-  sha256 = "1k4kkb78kdbz732wsph07v3zy3cz7l1msk2byrfvp0nb02sfl3a4";
-}
diff --git a/nixpkgs/pkgs/development/libraries/protobuf/3.15.nix b/nixpkgs/pkgs/development/libraries/protobuf/3.15.nix
deleted file mode 100644
index e4783be6a351..000000000000
--- a/nixpkgs/pkgs/development/libraries/protobuf/3.15.nix
+++ /dev/null
@@ -1,6 +0,0 @@
-{ callPackage, ... }:
-
-callPackage ./generic-v3.nix {
-  version = "3.15.8";
-  sha256 = "1q3k8axhq6g8fqczmd6kbgzpdplrrgygppym4x1l99lzhplx9rqv";
-}
diff --git a/nixpkgs/pkgs/development/libraries/protobuf/3.16.nix b/nixpkgs/pkgs/development/libraries/protobuf/3.16.nix
deleted file mode 100644
index fdbbed733d85..000000000000
--- a/nixpkgs/pkgs/development/libraries/protobuf/3.16.nix
+++ /dev/null
@@ -1,6 +0,0 @@
-{ callPackage, ... }:
-
-callPackage ./generic-v3.nix {
-  version = "3.16.1";
-  sha256 = "sha256-eOwUyZtrmyh3HwLQ1kLnk+briaXQPrlUqtbFol/nGBo=";
-}
diff --git a/nixpkgs/pkgs/development/libraries/protobuf/3.18.nix b/nixpkgs/pkgs/development/libraries/protobuf/3.18.nix
deleted file mode 100644
index 0d5d2c652cba..000000000000
--- a/nixpkgs/pkgs/development/libraries/protobuf/3.18.nix
+++ /dev/null
@@ -1,6 +0,0 @@
-{ callPackage, ... }:
-
-callPackage ./generic-v3.nix {
-  version = "3.18.2";
-  sha256 = "sha256-IXxVTZOAKVMuGCJtD32rVQRBJRWUJMEK2d+fPEmgzRU=";
-}
diff --git a/nixpkgs/pkgs/development/libraries/protobuf/3.19.nix b/nixpkgs/pkgs/development/libraries/protobuf/3.19.nix
index 7e2be4bec04c..e47bb62e736a 100644
--- a/nixpkgs/pkgs/development/libraries/protobuf/3.19.nix
+++ b/nixpkgs/pkgs/development/libraries/protobuf/3.19.nix
@@ -1,6 +1,6 @@
 { callPackage, ... }:
 
 callPackage ./generic-v3.nix {
-  version = "3.19.3";
-  sha256 = "sha256-nA6L064MuyP5Si4MCLk2yg8PDM7RWggFEGQyibputYQ=";
+  version = "3.19.4";
+  sha256 = "sha256-mxQ8XonVgctfaNAyd3vqQHMLHVnkjBa9EObk47vxH24=";
 }
diff --git a/nixpkgs/pkgs/development/libraries/protobuf/3.20.nix b/nixpkgs/pkgs/development/libraries/protobuf/3.20.nix
new file mode 100644
index 000000000000..93d180159b87
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/protobuf/3.20.nix
@@ -0,0 +1,6 @@
+{ callPackage, abseil-cpp, ... }:
+
+callPackage ./generic-v3.nix {
+  version = "3.20.1";
+  sha256 = "sha256-pAMacD0UQetqysZHszu5slPqp0iREtDmHFv1cgcUBJA=";
+}
diff --git a/nixpkgs/pkgs/development/libraries/protobuf/3.21.nix b/nixpkgs/pkgs/development/libraries/protobuf/3.21.nix
new file mode 100644
index 000000000000..70c6095ae7b6
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/protobuf/3.21.nix
@@ -0,0 +1,6 @@
+{ callPackage, abseil-cpp, ... }:
+
+callPackage ./generic-v3-cmake.nix {
+  version = "3.21.2";
+  sha256 = "sha256-DUv07pWiZV7jNeSA2ClDOz9DY0x/hiJynxkbSTeJOSs=";
+}
diff --git a/nixpkgs/pkgs/development/libraries/protobuf/3.6.nix b/nixpkgs/pkgs/development/libraries/protobuf/3.6.nix
deleted file mode 100644
index 16decc44e847..000000000000
--- a/nixpkgs/pkgs/development/libraries/protobuf/3.6.nix
+++ /dev/null
@@ -1,6 +0,0 @@
-{ callPackage, ... }:
-
-callPackage ./generic-v3.nix {
-  version = "3.6.1.3";
-  sha256 = "1spj0d4flx6h3phxx3sg9r00yv734hina3365avkcz9brnm089c1";
-}
diff --git a/nixpkgs/pkgs/development/libraries/protobuf/3.9.nix b/nixpkgs/pkgs/development/libraries/protobuf/3.9.nix
deleted file mode 100644
index e74d5c527b1d..000000000000
--- a/nixpkgs/pkgs/development/libraries/protobuf/3.9.nix
+++ /dev/null
@@ -1,6 +0,0 @@
-{ callPackage, ... }:
-
-callPackage ./generic-v3.nix {
-  version = "3.9.2";
-  sha256 = "080zxa9w1pxp5y05aiwc0c8mlqkkh98wmid4l7m99cliphsd4qnn";
-}
diff --git a/nixpkgs/pkgs/development/libraries/protobuf/generic-v3-cmake.nix b/nixpkgs/pkgs/development/libraries/protobuf/generic-v3-cmake.nix
new file mode 100644
index 000000000000..0b6967a67385
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/protobuf/generic-v3-cmake.nix
@@ -0,0 +1,107 @@
+# The cmake version of this build is meant to enable both cmake and .pc being exported
+# this is important because grpc exports a .cmake file which also expects for protobuf
+# to have been exported through cmake as well.
+{ lib
+, stdenv
+, abseil-cpp
+, buildPackages
+, cmake
+, fetchFromGitHub
+, fetchpatch
+, gtest
+, zlib
+, version
+, sha256
+
+# downstream dependencies
+, python3
+
+, ...
+}:
+
+let
+  self = stdenv.mkDerivation {
+    pname = "protobuf";
+    inherit version;
+
+    src = fetchFromGitHub {
+      owner = "protocolbuffers";
+      repo = "protobuf";
+      rev = "v${version}";
+      inherit sha256;
+    };
+
+    # re-create submodule logic
+    postPatch = ''
+      rm -rf gmock
+      cp -r ${gtest.src}/googlemock third_party/gmock
+      cp -r ${gtest.src}/googletest third_party/
+      chmod -R a+w third_party/
+
+      ln -s ../googletest third_party/gmock/gtest
+      ln -s ../gmock third_party/googletest/googlemock
+      ln -s $(pwd)/third_party/googletest third_party/googletest/googletest
+    '' + lib.optionalString stdenv.isDarwin ''
+      substituteInPlace src/google/protobuf/testing/googletest.cc \
+        --replace 'tmpnam(b)' '"'$TMPDIR'/foo"'
+    '';
+
+    patches = lib.optionals (lib.versionOlder version "3.22") [
+      # fix protobuf-targets.cmake installation paths, and allow for CMAKE_INSTALL_LIBDIR to be absolute
+      # https://github.com/protocolbuffers/protobuf/pull/10090
+      (fetchpatch {
+        url = "https://github.com/protocolbuffers/protobuf/commit/a7324f88e92bc16b57f3683403b6c993bf68070b.patch";
+        sha256 = "sha256-SmwaUjOjjZulg/wgNmR/F5b8rhYA2wkKAjHIOxjcQdQ=";
+      })
+    ];
+
+    nativeBuildInputs = let
+      protobufVersion = "${lib.versions.major version}_${lib.versions.minor version}";
+    in [
+      cmake
+    ] ++ lib.optionals (stdenv.hostPlatform != stdenv.buildPlatform) [
+      # protoc of the same version must be available for build. For non-cross builds, it's able to
+      # re-use the executable generated as part of the build
+      buildPackages."protobuf${protobufVersion}"
+    ];
+
+    buildInputs = [
+      abseil-cpp
+      zlib
+    ];
+
+    # After 3.20, CMakeLists.txt can now be found at the top-level, however
+    # a stub cmake/CMakeLists.txt still exists for compatibility with previous build assumptions
+    cmakeDir = "../cmake";
+    cmakeFlags = [
+      "-Dprotobuf_ABSL_PROVIDER=package"
+      ] ++ lib.optionals (!stdenv.targetPlatform.isStatic) [
+      "-Dprotobuf_BUILD_SHARED_LIBS=ON"
+    ];
+
+    # unfortunately the shared libraries have yet to been patched by nix, thus tests will fail
+    doCheck = false;
+
+    passthru = {
+      tests = {
+        pythonProtobuf = python3.pkgs.protobuf.override(_: {
+          protobuf = self;
+        });
+      };
+    };
+
+    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 = lib.licenses.bsd3;
+      platforms = lib.platforms.unix;
+      homepage = "https://developers.google.com/protocol-buffers/";
+      maintainers = with lib.maintainers; [ jonringer ];
+    };
+  };
+in
+  self
diff --git a/nixpkgs/pkgs/development/libraries/protobuf/generic-v3.nix b/nixpkgs/pkgs/development/libraries/protobuf/generic-v3.nix
index 6867940d1f23..130f681d8496 100644
--- a/nixpkgs/pkgs/development/libraries/protobuf/generic-v3.nix
+++ b/nixpkgs/pkgs/development/libraries/protobuf/generic-v3.nix
@@ -48,9 +48,10 @@ mkProtobufDerivation = buildProtobuf: stdenv: stdenv.mkDerivation {
         yet extensible format. Google uses Protocol Buffers for almost all of
         its internal RPC protocols and file formats.
       '';
+    homepage = "https://developers.google.com/protocol-buffers/";
     license = lib.licenses.bsd3;
+    mainProgram = "protoc";
     platforms = lib.platforms.unix;
-    homepage = "https://developers.google.com/protocol-buffers/";
   };
 
   passthru.version = version;
diff --git a/nixpkgs/pkgs/development/libraries/protobuf/generic.nix b/nixpkgs/pkgs/development/libraries/protobuf/generic.nix
deleted file mode 100644
index 7d64df436260..000000000000
--- a/nixpkgs/pkgs/development/libraries/protobuf/generic.nix
+++ /dev/null
@@ -1,61 +0,0 @@
-{ lib, 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
-  '' + 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 = lib.platforms.unix;
-  };
-
-  passthru.version = version;
-}