diff options
Diffstat (limited to 'pkgs/development/libraries/protobuf/generic-v3-cmake.nix')
-rw-r--r-- | pkgs/development/libraries/protobuf/generic-v3-cmake.nix | 118 |
1 files changed, 0 insertions, 118 deletions
diff --git a/pkgs/development/libraries/protobuf/generic-v3-cmake.nix b/pkgs/development/libraries/protobuf/generic-v3-cmake.nix deleted file mode 100644 index 384d2d0decb..00000000000 --- a/pkgs/development/libraries/protobuf/generic-v3-cmake.nix +++ /dev/null @@ -1,118 +0,0 @@ -# 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="; - }) - ] ++ lib.optionals stdenv.hostPlatform.isStatic [ - ./static-executables-have-no-rpath.patch - ]; - - 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 = [ - zlib - ]; - - propagatedBuildInputs = [ - abseil-cpp - ]; - - cmakeDir = if lib.versionOlder version "3.22" then "../cmake" else null; - cmakeFlags = [ - "-Dprotobuf_ABSL_PROVIDER=package" - ] ++ lib.optionals (!stdenv.targetPlatform.isStatic) [ - "-Dprotobuf_BUILD_SHARED_LIBS=ON" - ] - # Tests fail to build on 32-bit platforms; fixed in 3.22 - # https://github.com/protocolbuffers/protobuf/issues/10418 - ++ lib.optional - (stdenv.targetPlatform.is32bit && lib.versionOlder version "3.22") - "-Dprotobuf_BUILD_TESTS=OFF"; - - # 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; - }); - }; - - inherit abseil-cpp; - }; - - 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 ]; - mainProgram = "protoc"; - }; - }; -in - self |