diff options
author | Alyssa Ross <hi@alyssa.is> | 2022-12-06 19:57:55 +0000 |
---|---|---|
committer | Alyssa Ross <hi@alyssa.is> | 2023-02-08 13:48:30 +0000 |
commit | bf3aadfdd39aa197e18bade671fab6726349ffa4 (patch) | |
tree | 698567af766ed441d757b57a7b21e68d4a342a2b /nixpkgs/pkgs/development/libraries/protobuf | |
parent | f4afc5a01d9539ce09e47494e679c51f80723d07 (diff) | |
parent | 99665eb45f58d959d2cb9e49ddb960c79d596f33 (diff) | |
download | nixlib-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')
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; -} |