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
-}

Reply via email to