mirror of
https://github.com/gentoo-mirror/gentoo.git
synced 2026-09-24 04:59:14 -07:00
dev-libs/protobuf-c: add 1.5.0-r2
Drop patch causing "Built-in generator --c_out specifies a maximum edition PROTO3 which is not the protoc maximum 2023" Add dependency on dev-cpp/abseil-cpp:= Closes: https://bugs.gentoo.org/934464 Closes: https://bugs.gentoo.org/936230 Closes: https://bugs.gentoo.org/936167 Closes: https://bugs.gentoo.org/936122 Closes: https://bugs.gentoo.org/936120 Closes: https://bugs.gentoo.org/936030 Signed-off-by: Paul Zander <negril.nx+gentoo@gmail.com> Closes: https://github.com/gentoo/gentoo/pull/37607 Signed-off-by: Sam James <sam@gentoo.org>
This commit is contained in:
@@ -115,55 +115,3 @@ index 062d330b..be28b601 100644
|
||||
}
|
||||
|
||||
// Work around changes in protobuf >= 22.x without breaking compilation against
|
||||
|
||||
From 2480f4d9d2fa97e5511ed0914ee529a344e969a7 Mon Sep 17 00:00:00 2001
|
||||
From: Robert Edmonds <edmonds@users.noreply.github.com>
|
||||
Date: Wed, 20 Mar 2024 22:43:30 -0400
|
||||
Subject: [PATCH 03/11] CGenerator: Protect against being invoked against
|
||||
"edition" syntax .proto files
|
||||
|
||||
The Google protobuf project is currently experimenting with a new syntax
|
||||
for .proto files called "editions". Since protobuf-c is a proto2/proto3
|
||||
compiler, after the previous commit reimplementing `FieldSyntax()`, the
|
||||
protobuf compiler will abort like this if presented with an "editions"
|
||||
syntax .proto file due to the safety check in `FieldSyntax()`:
|
||||
|
||||
$ protoc --experimental_editions --c_out=. test.proto
|
||||
protoc-gen-c: ./protoc-c/c_helpers.h:178: int google::protobuf::compiler::c::FieldSyntax(const google::protobuf::FieldDescriptor*): Assertion `syntax == "proto2" || syntax == "proto3"' failed.
|
||||
--c_out: protoc-gen-c: Plugin killed by signal 6.
|
||||
|
||||
On protobuf 26, our `CodeGenerator` can implement certain methods to
|
||||
declare that we "support" editions, and then reject any other edition
|
||||
except proto2 and proto3, which have apparently been retroactively
|
||||
declared to be "editions". Of course this needs to be wrapped in a
|
||||
version guard.
|
||||
|
||||
With this protection in place, the protobuf compiler cleanly exits with
|
||||
a nice error message like this:
|
||||
|
||||
$ protoc --experimental_editions --c_out=. test.proto
|
||||
WARNING: All log messages before absl::InitializeLog() is called are written to STDERR
|
||||
E0000 00:00:1710988958.296200 20022 descriptor.cc:4620] Invalid proto descriptor for file "test.proto":
|
||||
E0000 00:00:1710988958.296239 20022 descriptor.cc:4623] test.proto: Edition 2023 is later than the maximum supported edition PROTO3
|
||||
--c_out: protoc-gen-c: Plugin failed with status code 1.
|
||||
---
|
||||
protoc-c/c_generator.h | 6 ++++++
|
||||
1 file changed, 6 insertions(+)
|
||||
|
||||
diff --git a/protoc-c/c_generator.h b/protoc-c/c_generator.h
|
||||
index b8b44aaa..4aeb5790 100644
|
||||
--- a/protoc-c/c_generator.h
|
||||
+++ b/protoc-c/c_generator.h
|
||||
@@ -93,6 +93,12 @@ class PROTOC_C_EXPORT CGenerator : public CodeGenerator {
|
||||
const std::string& parameter,
|
||||
OutputDirectory* output_directory,
|
||||
std::string* error) const;
|
||||
+
|
||||
+#if GOOGLE_PROTOBUF_VERSION >= 5026000
|
||||
+ uint64_t GetSupportedFeatures() const { return CodeGenerator::FEATURE_SUPPORTS_EDITIONS; }
|
||||
+ Edition GetMinimumEdition() const { return Edition::EDITION_PROTO2; }
|
||||
+ Edition GetMaximumEdition() const { return Edition::EDITION_PROTO3; }
|
||||
+#endif
|
||||
};
|
||||
|
||||
} // namespace c
|
||||
|
||||
@@ -16,7 +16,7 @@ S="${WORKDIR}/${MY_P}"
|
||||
LICENSE="BSD-2"
|
||||
# Subslot == SONAME version
|
||||
SLOT="0/1.0.0"
|
||||
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
|
||||
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~loong ~mips ~ppc64 ~riscv ~sparc ~x86"
|
||||
IUSE="static-libs"
|
||||
|
||||
BDEPEND="
|
||||
@@ -25,7 +25,12 @@ BDEPEND="
|
||||
"
|
||||
DEPEND="
|
||||
>=dev-libs/protobuf-3:0=[${MULTILIB_USEDEP}]"
|
||||
RDEPEND="${DEPEND}"
|
||||
# NOTE
|
||||
# protobuf links to abseil-cpp libraries via it's .pc files.
|
||||
# To cause rebuild when the abseil-cpp version changes we add it to RDEPEND only.
|
||||
RDEPEND="${DEPEND}
|
||||
dev-cpp/abseil-cpp:=[${MULTILIB_USEDEP}]
|
||||
"
|
||||
|
||||
PATCHES=(
|
||||
"${FILESDIR}/${PN}-1.5.0-Clean-CMake.patch"
|
||||
Reference in New Issue
Block a user