commit: 1d53a95599d39c8f51c325625cd92cea3f389888 Author: Paul Zander <negril.nx+gentoo <AT> gmail <DOT> com> AuthorDate: Wed Jan 15 11:42:56 2025 +0000 Commit: Sam James <sam <AT> gentoo <DOT> org> CommitDate: Wed Oct 22 11:34:40 2025 +0000 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=1d53a955
dev-libs/protobuf: drop 21.9 Signed-off-by: Paul Zander <negril.nx+gentoo <AT> gmail.com> Part-of: https://github.com/gentoo/gentoo/pull/44225 Signed-off-by: Sam James <sam <AT> gentoo.org> dev-libs/protobuf/Manifest | 1 - .../files/protobuf-21.9-disable-32-bit-tests.patch | 118 ---------- .../protobuf-3.19.0-disable_no-warning-test.patch | 36 ---- .../files/protobuf-3.19.0-system_libraries.patch | 146 ------------- ...protobuf-3.20.2-protoc_input_output_files.patch | 240 --------------------- dev-libs/protobuf/protobuf-21.9.ebuild | 149 ------------- 6 files changed, 690 deletions(-) diff --git a/dev-libs/protobuf/Manifest b/dev-libs/protobuf/Manifest index 08271c62726d..407833f16903 100644 --- a/dev-libs/protobuf/Manifest +++ b/dev-libs/protobuf/Manifest @@ -1,5 +1,4 @@ DIST protobuf-21.12.tar.gz 5141166 BLAKE2B 33500612d103afb817062486a741e8e5503f82c42c70054d47d1899e6bb79f3fdde2666cad5b8eff6e1bc539c3b0cdf9f2b125ce7e5d3a459a69e84d67ab535e SHA512 2dc8f552388438268d8b9f7a9e84c6abf1736be3d5031438c789c317410c9f4b5cedd25bf7da6d67b3ba32ca890869f9ddaab2284d6ac0e734a5b135ffbb1346 -DIST protobuf-21.9.tar.gz 5110670 BLAKE2B a4f5b7f58e1c5904ca990b100a72992f6f56177b28773f8de8c99e4158391d33cfb8aa8575915887fc9ae4294faf81d4ff6b470bc07b394bfd5885a09ba0fafe SHA512 6954b42d21921e630173b7848c056ab95635627d8eddec960f3db2ddda13eedde00520a9b350722e76e2998649eb8ebe10758e1db938b6a91e38ff3295b1b7c1 DIST protobuf-25.3.tar.gz 5878962 BLAKE2B 9268f9bd993a1cfd6d3937a2ad56ba4cfe3d84923756513841cbf13039d4a07acb260468745cb1294f30334cb34b45c6fde272f5c40d9de63ac6a4ce5c263077 SHA512 1f73e237c919082e5423ae9e2ea8813dccf672c059051d1531fe89ffaa45872d3cf3052b8c3af26f674296ec17d7dc861c67b8f0834ed80261ce4a6a14ed7115 DIST protobuf-25.5.tar.gz 5877036 BLAKE2B a8174c7cbda47afa3f31d64c7a7aa7f233efd5df5a783abedd229613c8c27a2380684fb5851dad67f76f063688dd8060a0a373f2c95441c2ad91630eb187af22 SHA512 9fe130f5c04919accc99113e13096df93db4c2254a9c2428faf9459416907c77fbf4adefbae3fe644e1f26d9c1fc597165e2c5b6219156c97500d6ef3fdc0793 DIST protobuf-25.6.tar.gz 5878040 BLAKE2B b82848406890460d9321e6736e413290e1b4a73dc5f2d3db17dd4419e7ddbb788b6cdb52c884c3e7f0c49c5a69ce31468dcc311d73efca06f94ec51577472fcc SHA512 f1920414bbaed0a882b73349e1cd9cdf87c0d9c99790d70ab8ef589161a8dcad92361daec67bf9bf8350f4181fa8514b50362f1495f082ba5805c4a2e70b6308 diff --git a/dev-libs/protobuf/files/protobuf-21.9-disable-32-bit-tests.patch b/dev-libs/protobuf/files/protobuf-21.9-disable-32-bit-tests.patch deleted file mode 100644 index cd6b5aa2db6d..000000000000 --- a/dev-libs/protobuf/files/protobuf-21.9-disable-32-bit-tests.patch +++ /dev/null @@ -1,118 +0,0 @@ -https://bugs.gentoo.org/875584 -https://github.com/protocolbuffers/protobuf/pull/10589 - -From 5f4a52d9bff7595ec47fb6727662a1cada3cd404 Mon Sep 17 00:00:00 2001 -From: Mike Kruskal <[email protected]> -Date: Thu, 15 Sep 2022 10:23:23 -0700 -Subject: [PATCH 3/7] Patching static assert test failure - ---- a/src/google/protobuf/extension_set_unittest.cc -+++ b/src/google/protobuf/extension_set_unittest.cc -@@ -855,8 +855,10 @@ TEST(ExtensionSetTest, SpaceUsedExcludingSelf) { - const size_t old_capacity = \ - message->GetRepeatedExtension(unittest::repeated_##type##_extension) \ - .Capacity(); \ -- EXPECT_GE(old_capacity, \ -- (RepeatedFieldLowerClampLimit<cpptype, sizeof(void*)>())); \ -+ EXPECT_GE( \ -+ old_capacity, \ -+ (RepeatedFieldLowerClampLimit<cpptype, std::max(sizeof(cpptype), \ -+ sizeof(void*))>())); \ - for (int i = 0; i < 16; ++i) { \ - message->AddExtension(unittest::repeated_##type##_extension, value); \ - } \ - -From c94b66706bec17d918495f4715183a5eaf0f8044 Mon Sep 17 00:00:00 2001 -From: Mike Kruskal <[email protected]> -Date: Thu, 15 Sep 2022 11:31:31 -0700 -Subject: [PATCH 4/7] Test fixes for 32-bit architectures - ---- a/src/google/protobuf/compiler/cpp/message_size_unittest.cc -+++ b/src/google/protobuf/compiler/cpp/message_size_unittest.cc -@@ -139,9 +139,9 @@ TEST(GeneratedMessageTest, OneStringSize) { - - TEST(GeneratedMessageTest, MoreStringSize) { - struct MockGenerated : public MockMessageBase { // 16 bytes -- int has_bits[1]; // 4 bytes - int cached_size; // 4 bytes - MockRepeatedPtrField data; // 24 bytes -+ // + 4 bytes padding - }; - GOOGLE_CHECK_MESSAGE_SIZE(MockGenerated, 48); - EXPECT_EQ(sizeof(protobuf_unittest::MoreString), sizeof(MockGenerated)); ---- a/src/google/protobuf/io/zero_copy_stream_unittest.cc -+++ b/src/google/protobuf/io/zero_copy_stream_unittest.cc -@@ -720,6 +720,9 @@ TEST_F(IoTest, StringIo) { - - // Verifies that outputs up to kint32max can be created. - TEST_F(IoTest, LargeOutput) { -+ // Filter out this test on 32-bit architectures. -+ if(sizeof(void*) < 8) return; -+ - std::string str; - StringOutputStream output(&str); - void* unused_data; ---- a/src/google/protobuf/repeated_field_unittest.cc -+++ b/src/google/protobuf/repeated_field_unittest.cc -@@ -429,14 +429,14 @@ TEST(RepeatedField, ReserveNothing) { - - TEST(RepeatedField, ReserveLowerClamp) { - int clamped_value = internal::CalculateReserveSize<bool, sizeof(void*)>(0, 1); -- EXPECT_GE(clamped_value, 8 / sizeof(bool)); -+ EXPECT_GE(clamped_value, sizeof(void*) / sizeof(bool)); - EXPECT_EQ((internal::RepeatedFieldLowerClampLimit<bool, sizeof(void*)>()), - clamped_value); - // EXPECT_EQ(clamped_value, (internal::CalculateReserveSize<bool, - // sizeof(void*)>( clamped_value, 2))); - - clamped_value = internal::CalculateReserveSize<int, sizeof(void*)>(0, 1); -- EXPECT_GE(clamped_value, 8 / sizeof(int)); -+ EXPECT_GE(clamped_value, sizeof(void*) / sizeof(int)); - EXPECT_EQ((internal::RepeatedFieldLowerClampLimit<int, sizeof(void*)>()), - clamped_value); - // EXPECT_EQ(clamped_value, (internal::CalculateReserveSize<int, ---- a/src/google/protobuf/util/time_util_test.cc -+++ b/src/google/protobuf/util/time_util_test.cc -@@ -48,15 +48,18 @@ using google::protobuf::Timestamp; - namespace { - - TEST(TimeUtilTest, TimestampStringFormat) { -- Timestamp begin, end; -- EXPECT_TRUE(TimeUtil::FromString("0001-01-01T00:00:00Z", &begin)); -- EXPECT_EQ(TimeUtil::kTimestampMinSeconds, begin.seconds()); -- EXPECT_EQ(0, begin.nanos()); -- EXPECT_TRUE(TimeUtil::FromString("9999-12-31T23:59:59.999999999Z", &end)); -- EXPECT_EQ(TimeUtil::kTimestampMaxSeconds, end.seconds()); -- EXPECT_EQ(999999999, end.nanos()); -- EXPECT_EQ("0001-01-01T00:00:00Z", TimeUtil::ToString(begin)); -- EXPECT_EQ("9999-12-31T23:59:59.999999999Z", TimeUtil::ToString(end)); -+ // These these are out of bounds for 32-bit architectures. -+ if(sizeof(time_t) >= sizeof(uint64_t)) { -+ Timestamp begin, end; -+ EXPECT_TRUE(TimeUtil::FromString("0001-01-01T00:00:00Z", &begin)); -+ EXPECT_EQ(TimeUtil::kTimestampMinSeconds, begin.seconds()); -+ EXPECT_EQ(0, begin.nanos()); -+ EXPECT_TRUE(TimeUtil::FromString("9999-12-31T23:59:59.999999999Z", &end)); -+ EXPECT_EQ(TimeUtil::kTimestampMaxSeconds, end.seconds()); -+ EXPECT_EQ(999999999, end.nanos()); -+ EXPECT_EQ("0001-01-01T00:00:00Z", TimeUtil::ToString(begin)); -+ EXPECT_EQ("9999-12-31T23:59:59.999999999Z", TimeUtil::ToString(end)); -+ } - - // Test negative timestamps. - Timestamp time = TimeUtil::NanosecondsToTimestamp(-1); -@@ -94,9 +97,12 @@ TEST(TimeUtilTest, DurationStringFormat) { - EXPECT_TRUE(TimeUtil::FromString("0001-01-01T00:00:00Z", &begin)); - EXPECT_TRUE(TimeUtil::FromString("9999-12-31T23:59:59.999999999Z", &end)); - -- EXPECT_EQ("315537897599.999999999s", TimeUtil::ToString(end - begin)); -+ // These these are out of bounds for 32-bit architectures. -+ if(sizeof(time_t) >= sizeof(uint64_t)) { -+ EXPECT_EQ("315537897599.999999999s", TimeUtil::ToString(end - begin)); -+ EXPECT_EQ("-315537897599.999999999s", TimeUtil::ToString(begin - end)); -+ } - EXPECT_EQ(999999999, (end - begin).nanos()); -- EXPECT_EQ("-315537897599.999999999s", TimeUtil::ToString(begin - end)); - EXPECT_EQ(-999999999, (begin - end).nanos()); - - // Generated output should contain 3, 6, or 9 fractional digits. diff --git a/dev-libs/protobuf/files/protobuf-3.19.0-disable_no-warning-test.patch b/dev-libs/protobuf/files/protobuf-3.19.0-disable_no-warning-test.patch deleted file mode 100644 index eb3dd0c1cb3f..000000000000 --- a/dev-libs/protobuf/files/protobuf-3.19.0-disable_no-warning-test.patch +++ /dev/null @@ -1,36 +0,0 @@ -From 12e381222a8cdce50845dfb7d8fdf863f6f8bb8a Mon Sep 17 00:00:00 2001 -From: Arfrever Frehtes Taifersar Arahesis <[email protected]> -Date: Fri, 28 Jan 2022 15:08:40 +0800 -Subject: [PATCH] protobuf-3.19.0: disable no-warning test - -Disable no-warning-test which is compiled with -Werror option -and whose only purpose is checking if compilation results in any warnings. - -Signed-off-by: Arfrever Frehtes Taifersar Arahesis <[email protected]> -Signed-off-by: Yixun Lan <[email protected]> ---- - src/Makefile.am | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/src/Makefile.am b/src/Makefile.am -index 3312e5d..7e86b62 100644 ---- a/src/Makefile.am -+++ b/src/Makefile.am -@@ -722,7 +722,7 @@ GOOGLETEST_SRC_DIR=$(srcdir)/../third_party/googletest/googletest - GOOGLEMOCK_SRC_DIR=$(srcdir)/../third_party/googletest/googlemock - check_PROGRAMS = protoc protobuf-test protobuf-lazy-descriptor-test \ - protobuf-lite-test test_plugin protobuf-lite-arena-test \ -- no-warning-test $(GZCHECKPROGRAMS) -+ $(GZCHECKPROGRAMS) - protobuf_test_LDADD = $(PTHREAD_LIBS) libprotobuf.la libprotoc.la \ - $(GOOGLETEST_BUILD_DIR)/lib/libgtest.la \ - $(GOOGLEMOCK_BUILD_DIR)/lib/libgmock.la \ -@@ -911,4 +911,4 @@ nodist_no_warning_test_SOURCES = no_warning_test.cc $(protoc_outputs) - - TESTS = protobuf-test protobuf-lazy-descriptor-test protobuf-lite-test \ - google/protobuf/compiler/zip_output_unittest.sh $(GZTESTS) \ -- protobuf-lite-arena-test no-warning-test -+ protobuf-lite-arena-test --- -2.34.1 - diff --git a/dev-libs/protobuf/files/protobuf-3.19.0-system_libraries.patch b/dev-libs/protobuf/files/protobuf-3.19.0-system_libraries.patch deleted file mode 100644 index 56905c7847db..000000000000 --- a/dev-libs/protobuf/files/protobuf-3.19.0-system_libraries.patch +++ /dev/null @@ -1,146 +0,0 @@ -From c080d329298e841d7d4e1380ff7ec88de5cb3b02 Mon Sep 17 00:00:00 2001 -From: Arfrever Frehtes Taifersar Arahesis <[email protected]> -Date: Fri, 28 Jan 2022 15:14:59 +0800 -Subject: [PATCH] protobuf-3.19.0: system_libraries - -Use system version of GoogleTest, -which will unbundle gtest, gmock libraries - -Signed-off-by: Arfrever Frehtes Taifersar Arahesis <[email protected]> -Signed-off-by: Yixun Lan <[email protected]> ---- - Makefile.am | 20 +------------------- - configure.ac | 7 ------- - src/Makefile.am | 33 ++++++--------------------------- - 3 files changed, 7 insertions(+), 53 deletions(-) - -diff --git a/Makefile.am b/Makefile.am -index 41d4061..b24f8f4 100644 ---- a/Makefile.am -+++ b/Makefile.am -@@ -11,28 +11,10 @@ SUBDIRS = . src - # Always include third_party directories in distributions. - DIST_SUBDIRS = src conformance benchmarks third_party/googletest - --# Build gmock before we build protobuf tests. We don't add gmock to SUBDIRS --# because then "make check" would also build and run all of gmock's own tests, --# which takes a lot of time and is generally not useful to us. Also, we don't --# want "make install" to recurse into gmock since we don't want to overwrite --# the installed version of gmock if there is one. - check-local: -- @echo "Making lib/libgmock.a lib/libgmock_main.a in gmock" -- @cd third_party/googletest/googletest && $(MAKE) $(AM_MAKEFLAGS) lib/libgtest.la lib/libgtest_main.la -- @cd third_party/googletest/googlemock && $(MAKE) $(AM_MAKEFLAGS) lib/libgmock.la lib/libgmock_main.la - --# We would like to clean gmock when "make clean" is invoked. But we have to --# be careful because clean-local is also invoked during "make distclean", but --# "make distclean" already recurses into gmock because it's listed among the --# DIST_SUBDIRS. distclean will delete gmock/Makefile, so if we then try to --# cd to the directory again and "make clean" it will fail. So, check that the --# Makefile exists before recursing. - clean-local: -- @if test -e third_party/googletest/Makefile; then \ -- echo "Making clean in googletest"; \ -- cd third_party/googletest && $(MAKE) $(AM_MAKEFLAGS) clean; \ -- fi; \ -- if test -e conformance/Makefile; then \ -+ @if test -e conformance/Makefile; then \ - echo "Making clean in conformance"; \ - cd conformance && $(MAKE) $(AM_MAKEFLAGS) clean; \ - fi; \ -diff --git a/configure.ac b/configure.ac -index 02085ca..449fb3d 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -236,12 +236,5 @@ if test "x$ANDROID_TEST" = xyes; then - fi - AC_SUBST([LIBLOG_LIBS]) - --# HACK: Make gmock's configure script pick up our copy of CFLAGS and CXXFLAGS, --# since the flags added by ACX_CHECK_SUNCC must be used when compiling gmock --# too. --export CFLAGS --export CXXFLAGS --AC_CONFIG_SUBDIRS([third_party/googletest]) -- - AC_CONFIG_FILES([Makefile src/Makefile benchmarks/Makefile conformance/Makefile protobuf.pc protobuf-lite.pc]) - AC_OUTPUT -diff --git a/src/Makefile.am b/src/Makefile.am -index 7e86b62..47d759f 100644 ---- a/src/Makefile.am -+++ b/src/Makefile.am -@@ -716,19 +716,11 @@ COMMON_TEST_SOURCES = \ - google/protobuf/testing/googletest.cc \ - google/protobuf/testing/googletest.h - --GOOGLETEST_BUILD_DIR=../third_party/googletest/googletest --GOOGLEMOCK_BUILD_DIR=../third_party/googletest/googlemock --GOOGLETEST_SRC_DIR=$(srcdir)/../third_party/googletest/googletest --GOOGLEMOCK_SRC_DIR=$(srcdir)/../third_party/googletest/googlemock - check_PROGRAMS = protoc protobuf-test protobuf-lazy-descriptor-test \ - protobuf-lite-test test_plugin protobuf-lite-arena-test \ - $(GZCHECKPROGRAMS) - protobuf_test_LDADD = $(PTHREAD_LIBS) libprotobuf.la libprotoc.la \ -- $(GOOGLETEST_BUILD_DIR)/lib/libgtest.la \ -- $(GOOGLEMOCK_BUILD_DIR)/lib/libgmock.la \ -- $(GOOGLEMOCK_BUILD_DIR)/lib/libgmock_main.la --protobuf_test_CPPFLAGS = -I$(GOOGLETEST_SRC_DIR)/include \ -- -I$(GOOGLEMOCK_SRC_DIR)/include -+ -lgtest -lgmock -lgmock_main - # Disable optimization for tests unless the user explicitly asked for it, - # since test_util.cc takes forever to compile with optimization (with GCC). - # See configure.ac for more info. -@@ -820,12 +812,8 @@ $(am_protobuf_test_OBJECTS): unittest_proto_middleman - # Run cpp_unittest again with PROTOBUF_TEST_NO_DESCRIPTORS defined. - protobuf_lazy_descriptor_test_LDADD = $(PTHREAD_LIBS) libprotobuf.la \ - libprotoc.la \ -- $(GOOGLETEST_BUILD_DIR)/lib/libgtest.la \ -- $(GOOGLEMOCK_BUILD_DIR)/lib/libgmock.la \ -- $(GOOGLEMOCK_BUILD_DIR)/lib/libgmock_main.la --protobuf_lazy_descriptor_test_CPPFLAGS = -I$(GOOGLEMOCK_SRC_DIR)/include \ -- -I$(GOOGLETEST_SRC_DIR)/include \ -- -DPROTOBUF_TEST_NO_DESCRIPTORS -+ -lgtest -lgmock -lgmock_main -+protobuf_lazy_descriptor_test_CPPFLAGS = -DPROTOBUF_TEST_NO_DESCRIPTORS - protobuf_lazy_descriptor_test_CXXFLAGS = $(NO_OPT_CXXFLAGS) - protobuf_lazy_descriptor_test_SOURCES = \ - google/protobuf/compiler/cpp/cpp_unittest.cc \ -@@ -847,11 +835,7 @@ COMMON_LITE_TEST_SOURCES = \ - # full runtime and we want to make sure this test builds without full - # runtime. - protobuf_lite_test_LDADD = $(PTHREAD_LIBS) libprotobuf-lite.la \ -- $(GOOGLETEST_BUILD_DIR)/lib/libgtest.la \ -- $(GOOGLEMOCK_BUILD_DIR)/lib/libgmock.la \ -- $(GOOGLEMOCK_BUILD_DIR)/lib/libgmock_main.la --protobuf_lite_test_CPPFLAGS= -I$(GOOGLEMOCK_SRC_DIR)/include \ -- -I$(GOOGLETEST_SRC_DIR)/include -+ -lgtest -lgmock -lgmock_main - protobuf_lite_test_CXXFLAGS = $(NO_OPT_CXXFLAGS) - protobuf_lite_test_SOURCES = \ - google/protobuf/lite_unittest.cc \ -@@ -863,11 +847,7 @@ $(am_protobuf_lite_test_OBJECTS): unittest_proto_middleman - # gtest when building the test internally our memory sanitizer doesn't detect - # memory leaks (don't know why). - protobuf_lite_arena_test_LDADD = $(PTHREAD_LIBS) libprotobuf-lite.la \ -- $(GOOGLETEST_BUILD_DIR)/lib/libgtest.la \ -- $(GOOGLEMOCK_BUILD_DIR)/lib/libgmock.la \ -- $(GOOGLEMOCK_BUILD_DIR)/lib/libgmock_main.la --protobuf_lite_arena_test_CPPFLAGS = -I$(GOOGLEMOCK_SRC_DIR)/include \ -- -I$(GOOGLETEST_SRC_DIR)/include -+ -lgtest -lgmock -lgmock_main - protobuf_lite_arena_test_CXXFLAGS = $(NO_OPT_CXXFLAGS) - protobuf_lite_arena_test_SOURCES = \ - google/protobuf/lite_arena_unittest.cc \ -@@ -877,8 +857,7 @@ $(am_protobuf_lite_arena_test_OBJECTS): unittest_proto_middleman - - # Test plugin binary. - test_plugin_LDADD = $(PTHREAD_LIBS) libprotobuf.la libprotoc.la \ -- $(GOOGLETEST_BUILD_DIR)/lib/libgtest.la --test_plugin_CPPFLAGS = -I$(GOOGLETEST_SRC_DIR)/include -+ -lgtest - test_plugin_SOURCES = \ - google/protobuf/compiler/mock_code_generator.cc \ - google/protobuf/compiler/test_plugin.cc \ --- -2.34.1 - diff --git a/dev-libs/protobuf/files/protobuf-3.20.2-protoc_input_output_files.patch b/dev-libs/protobuf/files/protobuf-3.20.2-protoc_input_output_files.patch deleted file mode 100644 index e4bf6858974a..000000000000 --- a/dev-libs/protobuf/files/protobuf-3.20.2-protoc_input_output_files.patch +++ /dev/null @@ -1,240 +0,0 @@ -https://github.com/protocolbuffers/protobuf/pull/235 - ---- a/src/google/protobuf/compiler/command_line_interface.cc -+++ b/src/google/protobuf/compiler/command_line_interface.cc -@@ -1112,6 +1112,28 @@ - } - - if (mode_ == MODE_ENCODE || mode_ == MODE_DECODE) { -+ bool success = false; -+ int in_fd = STDIN_FILENO; -+ int out_fd = STDOUT_FILENO; -+ -+ if (!protobuf_in_path_.empty()) { -+ in_fd = open(protobuf_in_path_.c_str(), O_RDONLY); -+ if (in_fd == -1) { -+ std::cerr << protobuf_in_path_ << ": error: failed to open file." << std::endl; -+ return 1; -+ } -+ } -+ if (!protobuf_out_path_.empty()) { -+ out_fd = open(protobuf_out_path_.c_str(), -+ O_WRONLY | O_CREAT | O_TRUNC, -+ 0644); -+ if (out_fd == -1) { -+ std::cerr << protobuf_out_path_ << ": error: failed to open file." << std::endl; -+ close(in_fd); -+ return 1; -+ } -+ } -+ - if (codec_type_.empty()) { - // HACK: Define an EmptyMessage type to use for decoding. - DescriptorPool pool; -@@ -1120,13 +1142,20 @@ - file.add_message_type()->set_name("EmptyMessage"); - GOOGLE_CHECK(pool.BuildFile(file) != nullptr); - codec_type_ = "EmptyMessage"; -- if (!EncodeOrDecode(&pool)) { -- return 1; -- } -+ success = EncodeOrDecode(&pool, in_fd, out_fd); - } else { -- if (!EncodeOrDecode(descriptor_pool.get())) { -- return 1; -- } -+ success = EncodeOrDecode(descriptor_pool.get(), in_fd, out_fd); -+ } -+ -+ if (in_fd != STDIN_FILENO) { -+ close(in_fd); -+ } -+ if (out_fd != STDOUT_FILENO) { -+ close(out_fd); -+ } -+ -+ if (!success) { -+ return 1; - } - } - -@@ -1165,6 +1194,11 @@ - for (int i = 0; i < proto_path_.size(); i++) { - source_tree->MapPath(proto_path_[i].first, proto_path_[i].second); - } -+ if (mode_ == MODE_COMPILE && -+ (!protobuf_in_path_.empty() || !protobuf_out_path_.empty())) { -+ std::cerr << "--protobuf_in and --protobuf_out are only valid with " -+ << "decode operations. Ignoring."; -+ } - - // Map input files to virtual paths if possible. - if (!MakeInputsBeProtoPathRelative(source_tree, fallback_database)) { -@@ -1888,6 +1922,12 @@ - } else if (name == "--deterministic_output") { - deterministic_output_ = true; - -+ } else if (name == "--protobuf_in") { -+ protobuf_in_path_ = value; -+ -+ } else if (name == "--protobuf_out") { -+ protobuf_out_path_ = value; -+ - } else if (name == "--error_format") { - if (value == "gcc") { - error_format_ = ERROR_FORMAT_GCC; -@@ -2021,22 +2061,38 @@ - --version Show version info and exit. - -h, --help Show this text and exit. - --encode=MESSAGE_TYPE Read a text-format message of the given type -- from standard input and write it in binary -- to standard output. The message type must -+ from input protobuf file and write it in binary -+ to output protobuf file. The message type must - be defined in PROTO_FILES or their imports. -+ The input/output protobuf files are specified -+ using the --protobuf_in and --protobuf_out -+ command line flags. - --deterministic_output When using --encode, ensure map fields are - deterministically ordered. Note that this order - is not canonical, and changes across builds or - releases of protoc. - --decode=MESSAGE_TYPE Read a binary message of the given type from -- standard input and write it in text format -- to standard output. The message type must -+ input protobuf file and write it in text format -+ to output protobuf file. The message type must - be defined in PROTO_FILES or their imports. -+ The input/output protobuf files are specified -+ using the --protobuf_in and --protobuf_out -+ command line flags. - --decode_raw Read an arbitrary protocol message from -- standard input and write the raw tag/value -- pairs in text format to standard output. No -+ input protobuf file and write the raw tag/value -+ pairs in text format to output protobuf file. No - PROTO_FILES should be given when using this -- flag. -+ flag. The input/output protobuf files are -+ specified using the --protobuf_in and -+ --protobuf_out command line flags. -+ --protobuf_in=FILE Absolute path to the protobuf file from which -+ input of encoding/decoding operation will be -+ read. If omitted, input will be read from -+ standard input. -+ --protobuf_out=FILE Absolute path to the protobuf file to which -+ output of encoding/decoding operation will be -+ written. If omitted, output will be written to -+ standard output. - --descriptor_set_in=FILES Specifies a delimited list of FILES - each containing a FileDescriptorSet (a - protocol buffer defined in descriptor.proto). -@@ -2347,7 +2403,9 @@ - return true; - } - --bool CommandLineInterface::EncodeOrDecode(const DescriptorPool* pool) { -+bool CommandLineInterface::EncodeOrDecode(const DescriptorPool* pool, -+ int in_fd, -+ int out_fd) { - // Look up the type. - const Descriptor* type = pool->FindMessageTypeByName(codec_type_); - if (type == nullptr) { -@@ -2359,15 +2417,15 @@ - std::unique_ptr<Message> message(dynamic_factory.GetPrototype(type)->New()); - - if (mode_ == MODE_ENCODE) { -- SetFdToTextMode(STDIN_FILENO); -- SetFdToBinaryMode(STDOUT_FILENO); -+ SetFdToTextMode(in_fd); -+ SetFdToBinaryMode(out_fd); - } else { -- SetFdToBinaryMode(STDIN_FILENO); -- SetFdToTextMode(STDOUT_FILENO); -+ SetFdToBinaryMode(in_fd); -+ SetFdToTextMode(out_fd); - } - -- io::FileInputStream in(STDIN_FILENO); -- io::FileOutputStream out(STDOUT_FILENO); -+ io::FileInputStream in(in_fd); -+ io::FileOutputStream out(out_fd); - - if (mode_ == MODE_ENCODE) { - // Input is text. ---- a/src/google/protobuf/compiler/command_line_interface.h -+++ b/src/google/protobuf/compiler/command_line_interface.h -@@ -294,7 +294,9 @@ - GeneratorContext* generator_context, std::string* error); - - // Implements --encode and --decode. -- bool EncodeOrDecode(const DescriptorPool* pool); -+ bool EncodeOrDecode(const DescriptorPool* pool, -+ int in_fd, -+ int out_fd); - - // Implements the --descriptor_set_out option. - bool WriteDescriptorSet( -@@ -429,6 +431,13 @@ - // parsed FileDescriptorSets to be used for loading protos. Otherwise, empty. - std::vector<std::string> descriptor_set_in_names_; - -+ // When using --encode / --decode / --decode_raw absolute path to the output -+ // file. (Empty string indicates write to STDOUT). -+ std::string protobuf_out_path_; -+ // When using --encode / --decode / --decode_raw, absolute path to the input -+ // file. (Empty string indicates read from STDIN). -+ std::string protobuf_in_path_; -+ - // If --descriptor_set_out was given, this is the filename to which the - // FileDescriptorSet should be written. Otherwise, empty. - std::string descriptor_set_out_name_; ---- a/src/google/protobuf/compiler/command_line_interface_unittest.cc -+++ b/src/google/protobuf/compiler/command_line_interface_unittest.cc -@@ -99,7 +99,7 @@ - void SetUp() override; - void TearDown() override; - -- // Runs the CommandLineInterface with the given command line. The -+ // Run the CommandLineInterface with the given command line. The - // command is automatically split on spaces, and the string "$tmpdir" - // is replaced with TestTempDir(). - void Run(const std::string& command); -@@ -2626,6 +2626,17 @@ - std::string::npos); - } - -+ void ExpectBinaryFilesMatch(const std::string &expected_file, -+ const std::string &actual_file) { -+ std::string expected_output, actual_output; -+ ASSERT_TRUE(File::ReadFileToString(expected_file, &expected_output)); -+ ASSERT_TRUE(File::ReadFileToString(actual_file, &actual_output)); -+ -+ // Don't use EXPECT_EQ because we don't want to print raw binary data to -+ // stdout on failure. -+ EXPECT_TRUE(expected_output == actual_output); -+ } -+ - private: - void WriteUnittestProtoDescriptorSet() { - unittest_proto_descriptor_set_filename_ = -@@ -2749,6 +2760,19 @@ - "Can only use --deterministic_output with --encode.\n"); - } - -+TEST_P(EncodeDecodeTest, RedirectInputOutput) { -+ std::string out_file = TestTempDir() + "/golden_message_out.pbf"; -+ EXPECT_TRUE( -+ Run(TestUtil::MaybeTranslatePath("net/proto2/internal/unittest.proto") + -+ " --encode=protobuf_unittest.TestAllTypes" + -+ " --protobuf_in=" + TestUtil::GetTestDataPath( -+ "net/proto2/internal/" -+ "testdata/text_format_unittest_data_oneof_implemented.txt") + -+ " --protobuf_out=" + out_file)); -+ ExpectBinaryFilesMatch(out_file, TestUtil::GetTestDataPath( -+ "net/proto2/internal/testdata/golden_message_oneof_implemented")); -+} -+ - INSTANTIATE_TEST_SUITE_P(FileDescriptorSetSource, EncodeDecodeTest, - testing::Values(PROTO_PATH, DESCRIPTOR_SET_IN)); - } // anonymous namespace diff --git a/dev-libs/protobuf/protobuf-21.9.ebuild b/dev-libs/protobuf/protobuf-21.9.ebuild deleted file mode 100644 index ede7e0768711..000000000000 --- a/dev-libs/protobuf/protobuf-21.9.ebuild +++ /dev/null @@ -1,149 +0,0 @@ -# Copyright 2008-2025 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -inherit autotools elisp-common flag-o-matic multilib-minimal toolchain-funcs - -if [[ "${PV}" == *9999 ]]; then - inherit git-r3 - - EGIT_REPO_URI="https://github.com/protocolbuffers/protobuf.git" - EGIT_SUBMODULES=() -else - SRC_URI="https://github.com/protocolbuffers/protobuf/archive/v${PV}.tar.gz -> ${P}.tar.gz" - KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux ~x64-macos" -fi - -DESCRIPTION="Google's Protocol Buffers - Extensible mechanism for serializing structured data" -HOMEPAGE=" - https://developers.google.com/protocol-buffers/ -" - -LICENSE="BSD" -SLOT="0/32" -IUSE="emacs examples static-libs test zlib" -RESTRICT="!test? ( test )" - -BDEPEND="emacs? ( app-editors/emacs:* )" -DEPEND="test? ( >=dev-cpp/gtest-1.9[${MULTILIB_USEDEP}] ) - zlib? ( sys-libs/zlib[${MULTILIB_USEDEP}] )" -RDEPEND="emacs? ( app-editors/emacs:* ) - zlib? ( sys-libs/zlib[${MULTILIB_USEDEP}] )" - -PATCHES=( - "${FILESDIR}/${PN}-3.19.0-disable_no-warning-test.patch" - "${FILESDIR}/${PN}-3.19.0-system_libraries.patch" - "${FILESDIR}/${PN}-3.20.2-protoc_input_output_files.patch" - "${FILESDIR}/${PN}-21.9-disable-32-bit-tests.patch" -) - -DOCS=(CHANGES.txt CONTRIBUTORS.txt README.md) - -src_prepare() { - default - - # https://github.com/protocolbuffers/protobuf/issues/7413 - sed -e "/^AC_PROG_CXX_FOR_BUILD$/d" -i configure.ac || die - - # https://github.com/protocolbuffers/protobuf/issues/8082 - sed -e "/^TEST_F(IoTest, LargeOutput) {$/,/^}$/d" -i src/google/protobuf/io/zero_copy_stream_unittest.cc || die - - # https://github.com/protocolbuffers/protobuf/issues/8459 - sed \ - -e "/^TEST(ArenaTest, BlockSizeSmallerThanAllocation) {$/a\\ if (sizeof(void*) == 4) {\n GTEST_SKIP();\n }" \ - -e "/^TEST(ArenaTest, SpaceAllocated_and_Used) {$/a\\ if (sizeof(void*) == 4) {\n GTEST_SKIP();\n }" \ - -i src/google/protobuf/arena_unittest.cc || die - - # https://github.com/protocolbuffers/protobuf/issues/8460 - sed -e "/^TEST(AnyTest, TestPackFromSerializationExceedsSizeLimit) {$/a\\ if (sizeof(void*) == 4) {\n GTEST_SKIP();\n }" -i src/google/protobuf/any_test.cc || die - - # https://github.com/protocolbuffers/protobuf/issues/9433 - sed -e "/^[[:space:]]*static_assert(alignof(U) <= 8, \"\");$/d" -i src/google/protobuf/descriptor.cc || die - - eautoreconf -} - -src_configure() { - append-cppflags -DGOOGLE_PROTOBUF_NO_RTTI - - if tc-ld-is-gold; then - # https://sourceware.org/bugzilla/show_bug.cgi?id=24527 - tc-ld-disable-gold - fi - - multilib-minimal_src_configure -} - -multilib_src_configure() { - local options=( - $(use_enable static-libs static) - $(use_with zlib) - ) - - if tc-is-cross-compiler; then - # Build system uses protoc when building, so protoc copy runnable on host is needed. - mkdir -p "${WORKDIR}/build" || die - pushd "${WORKDIR}/build" > /dev/null || die - ECONF_SOURCE="${S}" econf_build "${options[@]}" - options+=(--with-protoc="$(pwd)/src/protoc") - popd > /dev/null || die - fi - - ECONF_SOURCE="${S}" econf "${options[@]}" -} - -src_compile() { - multilib-minimal_src_compile - - if use emacs; then - elisp-compile editors/protobuf-mode.el - fi -} - -multilib_src_compile() { - if tc-is-cross-compiler; then - emake -C "${WORKDIR}/build/src" protoc - fi - - default -} - -multilib_src_test() { - emake check -} - -multilib_src_install_all() { - find "${ED}" -name "*.la" -delete || die - - if [[ ! -f "${ED}/usr/$(get_libdir)/libprotobuf.so.${SLOT#*/}" ]]; then - eerror "No matching library found with SLOT variable, currently set: ${SLOT}\n" \ - "Expected value: ${ED}/usr/$(get_libdir)/libprotobuf.so.${SLOT#*/}" - die "Please update SLOT variable" - fi - - insinto /usr/share/vim/vimfiles/syntax - doins editors/proto.vim - insinto /usr/share/vim/vimfiles/ftdetect - doins "${FILESDIR}/proto.vim" - - if use emacs; then - elisp-install ${PN} editors/protobuf-mode.el* - elisp-site-file-install "${FILESDIR}/70${PN}-gentoo.el" - fi - - if use examples; then - DOCS+=(examples) - docompress -x /usr/share/doc/${PF}/examples - fi - - einstalldocs -} - -pkg_postinst() { - use emacs && elisp-site-regen -} - -pkg_postrm() { - use emacs && elisp-site-regen -}
