From a7a48ed2a0c9cfb428f50be5bf15b9fd1132c9c6 Mon Sep 17 00:00:00 2001 From: Paul Zander Date: Thu, 18 Jul 2024 21:09:20 +0200 Subject: 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 Closes: https://github.com/gentoo/gentoo/pull/37607 Signed-off-by: Sam James --- .../files/protobuf-c-1.5.0-Clean-CMake.patch | 52 -------------------- dev-libs/protobuf-c/protobuf-c-1.5.0-r1.ebuild | 51 -------------------- dev-libs/protobuf-c/protobuf-c-1.5.0-r2.ebuild | 56 ++++++++++++++++++++++ 3 files changed, 56 insertions(+), 103 deletions(-) delete mode 100644 dev-libs/protobuf-c/protobuf-c-1.5.0-r1.ebuild create mode 100644 dev-libs/protobuf-c/protobuf-c-1.5.0-r2.ebuild (limited to 'dev-libs') diff --git a/dev-libs/protobuf-c/files/protobuf-c-1.5.0-Clean-CMake.patch b/dev-libs/protobuf-c/files/protobuf-c-1.5.0-Clean-CMake.patch index f3e55a9c89cc..38a36b50cc86 100644 --- a/dev-libs/protobuf-c/files/protobuf-c-1.5.0-Clean-CMake.patch +++ b/dev-libs/protobuf-c/files/protobuf-c-1.5.0-Clean-CMake.patch @@ -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 -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 diff --git a/dev-libs/protobuf-c/protobuf-c-1.5.0-r1.ebuild b/dev-libs/protobuf-c/protobuf-c-1.5.0-r1.ebuild deleted file mode 100644 index 842e911beb9e..000000000000 --- a/dev-libs/protobuf-c/protobuf-c-1.5.0-r1.ebuild +++ /dev/null @@ -1,51 +0,0 @@ -# Copyright 1999-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -inherit autotools multilib-minimal - -MY_PV="${PV/_/-}" -MY_P="${PN}-${MY_PV}" - -DESCRIPTION="Protocol Buffers implementation in C" -HOMEPAGE="https://github.com/protobuf-c/protobuf-c" -SRC_URI="https://github.com/${PN}/${PN}/releases/download/v${MY_PV}/${MY_P}.tar.gz" -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" -IUSE="static-libs" - -BDEPEND=" - >=dev-libs/protobuf-3:0 - virtual/pkgconfig -" -DEPEND=" - >=dev-libs/protobuf-3:0=[${MULTILIB_USEDEP}]" -RDEPEND="${DEPEND}" - -PATCHES=( - "${FILESDIR}/${PN}-1.5.0-Clean-CMake.patch" -) - -src_prepare() { - default - eautoreconf -} - -multilib_src_configure() { - local myeconfargs=( - $(use_enable static-libs static) - --enable-year2038 - ) - - ECONF_SOURCE="${S}" econf "${myeconfargs[@]}" -} - -multilib_src_install_all() { - find "${ED}" -name '*.la' -type f -delete || die - einstalldocs -} diff --git a/dev-libs/protobuf-c/protobuf-c-1.5.0-r2.ebuild b/dev-libs/protobuf-c/protobuf-c-1.5.0-r2.ebuild new file mode 100644 index 000000000000..3099c2e6a0ad --- /dev/null +++ b/dev-libs/protobuf-c/protobuf-c-1.5.0-r2.ebuild @@ -0,0 +1,56 @@ +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit autotools multilib-minimal + +MY_PV="${PV/_/-}" +MY_P="${PN}-${MY_PV}" + +DESCRIPTION="Protocol Buffers implementation in C" +HOMEPAGE="https://github.com/protobuf-c/protobuf-c" +SRC_URI="https://github.com/${PN}/${PN}/releases/download/v${MY_PV}/${MY_P}.tar.gz" +S="${WORKDIR}/${MY_P}" + +LICENSE="BSD-2" +# Subslot == SONAME version +SLOT="0/1.0.0" +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~loong ~mips ~ppc64 ~riscv ~sparc ~x86" +IUSE="static-libs" + +BDEPEND=" + >=dev-libs/protobuf-3:0 + virtual/pkgconfig +" +DEPEND=" + >=dev-libs/protobuf-3:0=[${MULTILIB_USEDEP}]" +# 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" +) + +src_prepare() { + default + eautoreconf +} + +multilib_src_configure() { + local myeconfargs=( + $(use_enable static-libs static) + --enable-year2038 + ) + + ECONF_SOURCE="${S}" econf "${myeconfargs[@]}" +} + +multilib_src_install_all() { + find "${ED}" -name '*.la' -type f -delete || die + einstalldocs +} -- cgit v1.2.3-65-gdbad