summaryrefslogtreecommitdiff
path: root/dev-libs/protobuf
diff options
context:
space:
mode:
authorroot <root@alpha.trunkmasters.com>2026-06-04 05:48:38 -0500
committerroot <root@alpha.trunkmasters.com>2026-06-04 05:48:38 -0500
commitbfd9c39e4712ebdb442d4ca0673061faed1e70e1 (patch)
tree0d7a74b4463ee387f9cf9368ceb1b757f694f72a /dev-libs/protobuf
parentf716a9fe6455d39eef01e718aae68dae61c19704 (diff)
downloadbaldeagleos-repo-bfd9c39e4712ebdb442d4ca0673061faed1e70e1.tar.gz
baldeagleos-repo-bfd9c39e4712ebdb442d4ca0673061faed1e70e1.tar.xz
baldeagleos-repo-bfd9c39e4712ebdb442d4ca0673061faed1e70e1.zip
Revert "Adding metadata"
This reverts commit f716a9fe6455d39eef01e718aae68dae61c19704.
Diffstat (limited to 'dev-libs/protobuf')
-rw-r--r--dev-libs/protobuf/Manifest10
-rw-r--r--dev-libs/protobuf/files/70protobuf-gentoo.el3
-rw-r--r--dev-libs/protobuf/files/proto.vim1
-rw-r--r--dev-libs/protobuf/files/protobuf-21.9-disable-32-bit-tests.patch118
-rw-r--r--dev-libs/protobuf/files/protobuf-3.19.0-disable_no-warning-test.patch36
-rw-r--r--dev-libs/protobuf/files/protobuf-3.19.0-system_libraries.patch146
-rw-r--r--dev-libs/protobuf/files/protobuf-3.20.2-protoc_input_output_files.patch240
-rw-r--r--dev-libs/protobuf/metadata.xml23
-rw-r--r--dev-libs/protobuf/protobuf-21.12.ebuild105
-rw-r--r--dev-libs/protobuf/protobuf-29.6.ebuild106
-rw-r--r--dev-libs/protobuf/protobuf-30.2.ebuild106
-rw-r--r--dev-libs/protobuf/protobuf-31.1.ebuild106
-rw-r--r--dev-libs/protobuf/protobuf-32.1.ebuild106
-rw-r--r--dev-libs/protobuf/protobuf-33.6.ebuild106
-rw-r--r--dev-libs/protobuf/protobuf-34.1.ebuild106
-rw-r--r--dev-libs/protobuf/protobuf-35.0.ebuild106
16 files changed, 1424 insertions, 0 deletions
diff --git a/dev-libs/protobuf/Manifest b/dev-libs/protobuf/Manifest
new file mode 100644
index 000000000000..d0e092a7bc50
--- /dev/null
+++ b/dev-libs/protobuf/Manifest
@@ -0,0 +1,10 @@
+DIST googletest-09ffd0015395354774c059a17d9f5bee36177ff9.tar.gz 886670 BLAKE2B 7bfaf186b0f04609714b04641f87dad624c263452a0e3878a5750b9d70d7bd8b71ef3f3500b0cb877d5ed6164eff6c7a3766f5b44db5271faed2d42440d17799 SHA512 e647073fbddbf202514db0bc71b39ae90c0e2528a9c658051a6a5725c34c68556ce91e25f7fbb580dcb27acdf9ec676b9dcdeb3bf30af79c50dfb3a60430203e
+DIST googletest-1d17ea141d2c11b8917d2c7d029f1c4e2b9769b2.tar.gz 873606 BLAKE2B 2808ff26b62e1f61d6d76e956427f8d5ebc57a9fdaae12514fde2e0f6fe9d574cb246401d762b8400792a9c8cd85327eae0546e64a92ad2835e16ee92673fc45 SHA512 af660ed16718b12df0aedaee44175ab16c4ad65e9d9aa6681ef0ef9f0c9ada17fb974af84dae901a4917f0050a023467647ac056a56c93d69e6549fa98703680
+DIST protobuf-21.12.tar.gz 5141166 BLAKE2B 33500612d103afb817062486a741e8e5503f82c42c70054d47d1899e6bb79f3fdde2666cad5b8eff6e1bc539c3b0cdf9f2b125ce7e5d3a459a69e84d67ab535e SHA512 2dc8f552388438268d8b9f7a9e84c6abf1736be3d5031438c789c317410c9f4b5cedd25bf7da6d67b3ba32ca890869f9ddaab2284d6ac0e734a5b135ffbb1346
+DIST v29.6.tar.gz 9353493 BLAKE2B d68f3fad860f9f8a238f0117f055c7a5492b820c9a22b4ad286e5912946c76ed44d3c4ef4c77ada9511368ac8e1527ae60dee7baf9af707c8840ab7a82f57344 SHA512 cf47676578098f6aa3c5c44f1ea351a2332b65f3f71fcd5ba66673f01c56571ac2fab69df172bf016a1d3f9cc033e735deef9055708592d43b6035ec6bcfa3da
+DIST v30.2.tar.gz 9523463 BLAKE2B c62321f592164ed9f365036011a3938bb0ed6c2efb7a707cba51534e0c388d87a57841fdd4d4f33bd2d463148c6cf3814e6b2bc3737a06f3b86a40163fb9c163 SHA512 f639c0970039d20eb3b05246db9b476a21d90f858fda958cc22162e064ad2d26383fc3679317e37a74e35f02948228dbce13885e7097834ed93b27131c97e70b
+DIST v31.1.tar.gz 9602477 BLAKE2B abb35cb4deddd63e56f1cc6c18e0c3f5331adb502573dadc0feb93e7d56cb956596742071af59ba95ad5c8055e4508f7c9a2653ee8a77cccf489c3cc7caf2cd6 SHA512 30561e92ff791b1c8c0f30cad833b2189e7f907fccc630a5090aaae00bf565d2f534db1126137a0ae4af85b49dfc16fdae82dc78c00e6db389c04e777705e289
+DIST v32.1.tar.gz 9694736 BLAKE2B 37a310799eaa58b14f67c62410f1e150c031b94db5a499ceeda749bd13a1165403a5d4c86ffa45729ae333080697ce0619b29a51d2bc345de012f99a3ce5dd20 SHA512 840239f4fb57450ffe61f2cdc73daf5f1f3ea317b1ab1135a90303783e62722cfa410ff27bb2c5c6d3106be39ccdc95cdfbc5bf271ba79f935ab85f9b8ce3075
+DIST v33.6.tar.gz 6890866 BLAKE2B 318a24f478084c8c0e97f4fe14677b86f1c01e4bdc148564fd1fda997e8fecf39c2dba4903784d10733ebcf4671bd4ba67f739f54218074e9c3dd883bae717c3 SHA512 16f8689ec7aba47d29f27c2360c33c78d6e11ae9f29e815f792e6b943713395e680f0ab6d48f9395e8bec1df44c4afdc212ad4e4fc3629b820e7b3ac82e132e9
+DIST v34.1.tar.gz 7037923 BLAKE2B 38e0717361f8130f404217c7d8feba1984fc18424245a471be70eeb34bdab6c50f3b8d1cce5e0914065d1ebf607c022cae58fbcebe3e0495ee7279e011b17553 SHA512 87820e7792dc42e20dc084174f096031e2173d68a8fcf8c5deb8e91c25396d6ce423da2019b8757f27c9adbc030b7cfd9b3efcb41e18ac19b2f36c995953b8b7
+DIST v35.0.tar.gz 7153471 BLAKE2B 1deed56c80be6613ed8d67a8b28b4a62c0ccae2ba89b44b886c5030377b495c1d0d8e0f15786e69aae928067e2eb8877503e14a64946a20901a4872470ca989a SHA512 0d97b06f4e40b631cf5498bdb895846fd98943eeb97abe7993ee23a200c4956d34bc3c8c1436e5ac8413d217b49ba8689b3a58908a8e4ab5283864d678950aaf
diff --git a/dev-libs/protobuf/files/70protobuf-gentoo.el b/dev-libs/protobuf/files/70protobuf-gentoo.el
new file mode 100644
index 000000000000..51370527f6f2
--- /dev/null
+++ b/dev-libs/protobuf/files/70protobuf-gentoo.el
@@ -0,0 +1,3 @@
+(add-to-list 'load-path "@SITELISP@")
+(add-to-list 'auto-mode-alist '("\\.proto\\'" . protobuf-mode))
+(autoload 'protobuf-mode "protobuf-mode" "Google protobuf mode." t)
diff --git a/dev-libs/protobuf/files/proto.vim b/dev-libs/protobuf/files/proto.vim
new file mode 100644
index 000000000000..6d26809efee6
--- /dev/null
+++ b/dev-libs/protobuf/files/proto.vim
@@ -0,0 +1 @@
+au BufRead,BufNewFile *.proto set filetype=proto
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
new file mode 100644
index 000000000000..cd6b5aa2db6d
--- /dev/null
+++ b/dev-libs/protobuf/files/protobuf-21.9-disable-32-bit-tests.patch
@@ -0,0 +1,118 @@
+https://bugs.gentoo.org/875584
+https://github.com/protocolbuffers/protobuf/pull/10589
+
+From 5f4a52d9bff7595ec47fb6727662a1cada3cd404 Mon Sep 17 00:00:00 2001
+From: Mike Kruskal <mkruskal@google.com>
+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 <mkruskal@google.com>
+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
new file mode 100644
index 000000000000..eb3dd0c1cb3f
--- /dev/null
+++ b/dev-libs/protobuf/files/protobuf-3.19.0-disable_no-warning-test.patch
@@ -0,0 +1,36 @@
+From 12e381222a8cdce50845dfb7d8fdf863f6f8bb8a Mon Sep 17 00:00:00 2001
+From: Arfrever Frehtes Taifersar Arahesis <Arfrever@Apache.Org>
+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 <Arfrever@Apache.Org>
+Signed-off-by: Yixun Lan <dlan@gentoo.org>
+---
+ 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
new file mode 100644
index 000000000000..56905c7847db
--- /dev/null
+++ b/dev-libs/protobuf/files/protobuf-3.19.0-system_libraries.patch
@@ -0,0 +1,146 @@
+From c080d329298e841d7d4e1380ff7ec88de5cb3b02 Mon Sep 17 00:00:00 2001
+From: Arfrever Frehtes Taifersar Arahesis <Arfrever@Apache.Org>
+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 <Arfrever@Apache.Org>
+Signed-off-by: Yixun Lan <dlan@gentoo.org>
+---
+ 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
new file mode 100644
index 000000000000..e4bf6858974a
--- /dev/null
+++ b/dev-libs/protobuf/files/protobuf-3.20.2-protoc_input_output_files.patch
@@ -0,0 +1,240 @@
+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/metadata.xml b/dev-libs/protobuf/metadata.xml
new file mode 100644
index 000000000000..76f0e5a75754
--- /dev/null
+++ b/dev-libs/protobuf/metadata.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://liguros.gitlab.io/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>dev@liguros.net</email>
+ <name>Development</name>
+ </maintainer>
+ <maintainer type="person">
+ <email>arfrever.fta@gmail.com</email>
+ <name>Arfrever Frehtes Taifersar Arahesis</name>
+ </maintainer>
+ <maintainer type="project">
+ <email>cjk@gentoo.org</email>
+ <name>Cjk</name>
+ </maintainer>
+ <upstream>
+ <remote-id type="cpe">cpe:/a:google:protobuf</remote-id>
+ </upstream>
+ <origin>ports</origin>
+ <slots>
+ <subslots>Soname version number</subslots>
+ </slots>
+</pkgmetadata> \ No newline at end of file
diff --git a/dev-libs/protobuf/protobuf-21.12.ebuild b/dev-libs/protobuf/protobuf-21.12.ebuild
new file mode 100644
index 000000000000..3672570cf101
--- /dev/null
+++ b/dev-libs/protobuf/protobuf-21.12.ebuild
@@ -0,0 +1,105 @@
+# Copyright 2008-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit cmake-multilib elisp-common 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 ~loong ~mips ppc64 ~riscv x86 ~amd64-linux ~x86-linux ~x64-macos"
+fi
+
+DESCRIPTION="Google's Protocol Buffers - Extensible mechanism for serializing structured data"
+HOMEPAGE="https://protobuf.dev/"
+
+LICENSE="BSD"
+SLOT="0/3.$(ver_cut 1-2).0"
+IUSE="emacs examples test zlib"
+RESTRICT="!test? ( test )"
+
+BDEPEND="emacs? ( app-editors/emacs:* )"
+DEPEND="
+ zlib? ( sys-libs/zlib[${MULTILIB_USEDEP}] )
+ test? ( >=dev-cpp/gtest-1.9[${MULTILIB_USEDEP}] )
+"
+RDEPEND="
+ emacs? ( app-editors/emacs:* )
+ zlib? ( sys-libs/zlib[${MULTILIB_USEDEP}] )
+"
+
+PATCHES=(
+ "${FILESDIR}/${PN}-23.3-disable-32-bit-tests.patch"
+ "${FILESDIR}/${PN}-23.3-static_assert-failure.patch"
+)
+
+DOCS=( CONTRIBUTORS.txt README.md )
+
+src_configure() {
+ if tc-ld-is-gold; then
+ # https://sourceware.org/bugzilla/show_bug.cgi?id=24527
+ tc-ld-disable-gold
+ fi
+
+ cmake-multilib_src_configure
+}
+
+multilib_src_configure() {
+ local mycmakeargs=(
+ -Dprotobuf_DISABLE_RTTI=ON
+ -Dprotobuf_BUILD_EXAMPLES=$(usex examples)
+ -Dprotobuf_WITH_ZLIB=$(usex zlib)
+ -Dprotobuf_BUILD_TESTS=$(usex test)
+ )
+ use test && mycmakeargs+=(-Dprotobuf_USE_EXTERNAL_GTEST=ON)
+
+ cmake_src_configure
+}
+
+src_compile() {
+ cmake-multilib_src_compile
+
+ if use emacs; then
+ elisp-compile editors/protobuf-mode.el
+ fi
+}
+
+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
+}
diff --git a/dev-libs/protobuf/protobuf-29.6.ebuild b/dev-libs/protobuf/protobuf-29.6.ebuild
new file mode 100644
index 000000000000..b2aa93deaec5
--- /dev/null
+++ b/dev-libs/protobuf/protobuf-29.6.ebuild
@@ -0,0 +1,106 @@
+# Copyright 2023-2025 Liguros Authors
+# Distributed under the terms of the GNU General Public License v2
+EAPI=8
+
+inherit cmake-multilib elisp-common toolchain-funcs
+
+DESCRIPTION="Google's Protocol Buffers - Extensible mechanism for serializing structured data"
+HOMEPAGE="https://protobuf.dev/"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~loong ~mips ~ppc64 ~riscv ~x86 ~amd64-linux ~x86-linux ~x64-macos"
+GOOGLETEST_COMMIT="1d17ea141d2c11b8917d2c7d029f1c4e2b9769b2"
+SRC_URI="
+ https://github.com/protocolbuffers/protobuf/archive/refs/tags/v${PV}.tar.gz
+ https://github.com/google/googletest/archive/${GOOGLETEST_COMMIT}.tar.gz -> googletest-${GOOGLETEST_COMMIT}.tar.gz
+"
+
+LICENSE="BSD"
+SLOT="0/$(ver_cut 1-2).0"
+IUSE="emacs examples test zlib"
+RESTRICT="!test? ( test )"
+
+BDEPEND="
+ emacs? ( app-editors/emacs:* )
+"
+DEPEND="
+ ${BDEPEND}
+ >=dev-cpp/abseil-cpp-20230125.3-r1:=[${MULTILIB_USEDEP}]
+ zlib? ( sys-libs/zlib[${MULTILIB_USEDEP}] )
+ test? ( >=dev-cpp/gtest-1.9[${MULTILIB_USEDEP}] )
+"
+RDEPEND="
+ ${DEPEND}
+"
+
+DOCS=(CONTRIBUTORS.txt README.md)
+
+src_prepare() {
+ cp -r ${WORKDIR}/googletest-${GOOGLETEST_COMMIT}/* ${S}/third_party/googletest
+ rm -rf ${WORKDIR}/googletest-${GOOGLETEST_COMMIT}
+ cmake_src_prepare
+}
+
+src_configure() {
+ if tc-ld-is-gold; then
+ # https://sourceware.org/bugzilla/show_bug.cgi?id=24527
+ tc-ld-disable-gold
+ fi
+
+ cmake-multilib_src_configure
+}
+
+multilib_src_configure() {
+ local mycmakeargs=(
+ -Dprotobuf_DISABLE_RTTI=ON
+ -Dprotobuf_BUILD_EXAMPLES=$(usex examples)
+ -Dprotobuf_WITH_ZLIB=$(usex zlib)
+ -Dprotobuf_BUILD_TESTS=$(usex test)
+ -Dprotobuf_ABSL_PROVIDER=package
+ -Dprotobuf_BUILD_TESTS=OFF
+ )
+ use test && mycmakeargs+=(-Dprotobuf_USE_EXTERNAL_GTEST=ON)
+
+ cmake_src_configure
+}
+
+src_compile() {
+ cmake-multilib_src_compile
+
+ if use emacs; then
+ elisp-compile editors/protobuf-mode.el
+ fi
+}
+
+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
+}
diff --git a/dev-libs/protobuf/protobuf-30.2.ebuild b/dev-libs/protobuf/protobuf-30.2.ebuild
new file mode 100644
index 000000000000..b2aa93deaec5
--- /dev/null
+++ b/dev-libs/protobuf/protobuf-30.2.ebuild
@@ -0,0 +1,106 @@
+# Copyright 2023-2025 Liguros Authors
+# Distributed under the terms of the GNU General Public License v2
+EAPI=8
+
+inherit cmake-multilib elisp-common toolchain-funcs
+
+DESCRIPTION="Google's Protocol Buffers - Extensible mechanism for serializing structured data"
+HOMEPAGE="https://protobuf.dev/"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~loong ~mips ~ppc64 ~riscv ~x86 ~amd64-linux ~x86-linux ~x64-macos"
+GOOGLETEST_COMMIT="1d17ea141d2c11b8917d2c7d029f1c4e2b9769b2"
+SRC_URI="
+ https://github.com/protocolbuffers/protobuf/archive/refs/tags/v${PV}.tar.gz
+ https://github.com/google/googletest/archive/${GOOGLETEST_COMMIT}.tar.gz -> googletest-${GOOGLETEST_COMMIT}.tar.gz
+"
+
+LICENSE="BSD"
+SLOT="0/$(ver_cut 1-2).0"
+IUSE="emacs examples test zlib"
+RESTRICT="!test? ( test )"
+
+BDEPEND="
+ emacs? ( app-editors/emacs:* )
+"
+DEPEND="
+ ${BDEPEND}
+ >=dev-cpp/abseil-cpp-20230125.3-r1:=[${MULTILIB_USEDEP}]
+ zlib? ( sys-libs/zlib[${MULTILIB_USEDEP}] )
+ test? ( >=dev-cpp/gtest-1.9[${MULTILIB_USEDEP}] )
+"
+RDEPEND="
+ ${DEPEND}
+"
+
+DOCS=(CONTRIBUTORS.txt README.md)
+
+src_prepare() {
+ cp -r ${WORKDIR}/googletest-${GOOGLETEST_COMMIT}/* ${S}/third_party/googletest
+ rm -rf ${WORKDIR}/googletest-${GOOGLETEST_COMMIT}
+ cmake_src_prepare
+}
+
+src_configure() {
+ if tc-ld-is-gold; then
+ # https://sourceware.org/bugzilla/show_bug.cgi?id=24527
+ tc-ld-disable-gold
+ fi
+
+ cmake-multilib_src_configure
+}
+
+multilib_src_configure() {
+ local mycmakeargs=(
+ -Dprotobuf_DISABLE_RTTI=ON
+ -Dprotobuf_BUILD_EXAMPLES=$(usex examples)
+ -Dprotobuf_WITH_ZLIB=$(usex zlib)
+ -Dprotobuf_BUILD_TESTS=$(usex test)
+ -Dprotobuf_ABSL_PROVIDER=package
+ -Dprotobuf_BUILD_TESTS=OFF
+ )
+ use test && mycmakeargs+=(-Dprotobuf_USE_EXTERNAL_GTEST=ON)
+
+ cmake_src_configure
+}
+
+src_compile() {
+ cmake-multilib_src_compile
+
+ if use emacs; then
+ elisp-compile editors/protobuf-mode.el
+ fi
+}
+
+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
+}
diff --git a/dev-libs/protobuf/protobuf-31.1.ebuild b/dev-libs/protobuf/protobuf-31.1.ebuild
new file mode 100644
index 000000000000..e46cee6c6499
--- /dev/null
+++ b/dev-libs/protobuf/protobuf-31.1.ebuild
@@ -0,0 +1,106 @@
+# Copyright 2023-2025 Liguros Authors
+# Distributed under the terms of the GNU General Public License v2
+EAPI=8
+
+inherit cmake-multilib elisp-common toolchain-funcs
+
+DESCRIPTION="Google's Protocol Buffers - Extensible mechanism for serializing structured data"
+HOMEPAGE="https://protobuf.dev/"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~loong ~mips ~ppc64 ~riscv ~x86 ~amd64-linux ~x86-linux ~x64-macos"
+GOOGLETEST_COMMIT="09ffd0015395354774c059a17d9f5bee36177ff9"
+SRC_URI="
+ https://github.com/protocolbuffers/protobuf/archive/refs/tags/v${PV}.tar.gz
+ https://github.com/google/googletest/archive/${GOOGLETEST_COMMIT}.tar.gz -> googletest-${GOOGLETEST_COMMIT}.tar.gz
+"
+
+LICENSE="BSD"
+SLOT="0/$(ver_cut 1-2).0"
+IUSE="emacs examples test zlib"
+RESTRICT="!test? ( test )"
+
+BDEPEND="
+ emacs? ( app-editors/emacs:* )
+"
+DEPEND="
+ ${BDEPEND}
+ >=dev-cpp/abseil-cpp-20230125.3-r1:=[${MULTILIB_USEDEP}]
+ zlib? ( sys-libs/zlib[${MULTILIB_USEDEP}] )
+ test? ( >=dev-cpp/gtest-1.9[${MULTILIB_USEDEP}] )
+"
+RDEPEND="
+ ${DEPEND}
+"
+
+DOCS=(CONTRIBUTORS.txt README.md)
+
+src_prepare() {
+ cp -r ${WORKDIR}/googletest-${GOOGLETEST_COMMIT}/* ${S}/third_party/googletest
+ rm -rf ${WORKDIR}/googletest-${GOOGLETEST_COMMIT}
+ cmake_src_prepare
+}
+
+src_configure() {
+ if tc-ld-is-gold; then
+ # https://sourceware.org/bugzilla/show_bug.cgi?id=24527
+ tc-ld-disable-gold
+ fi
+
+ cmake-multilib_src_configure
+}
+
+multilib_src_configure() {
+ local mycmakeargs=(
+ -Dprotobuf_DISABLE_RTTI=ON
+ -Dprotobuf_BUILD_EXAMPLES=$(usex examples)
+ -Dprotobuf_WITH_ZLIB=$(usex zlib)
+ -Dprotobuf_BUILD_TESTS=$(usex test)
+ -Dprotobuf_ABSL_PROVIDER=package
+ -Dprotobuf_BUILD_TESTS=OFF
+ )
+ use test && mycmakeargs+=(-Dprotobuf_USE_EXTERNAL_GTEST=ON)
+
+ cmake_src_configure
+}
+
+src_compile() {
+ cmake-multilib_src_compile
+
+ if use emacs; then
+ elisp-compile editors/protobuf-mode.el
+ fi
+}
+
+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
+}
diff --git a/dev-libs/protobuf/protobuf-32.1.ebuild b/dev-libs/protobuf/protobuf-32.1.ebuild
new file mode 100644
index 000000000000..e46cee6c6499
--- /dev/null
+++ b/dev-libs/protobuf/protobuf-32.1.ebuild
@@ -0,0 +1,106 @@
+# Copyright 2023-2025 Liguros Authors
+# Distributed under the terms of the GNU General Public License v2
+EAPI=8
+
+inherit cmake-multilib elisp-common toolchain-funcs
+
+DESCRIPTION="Google's Protocol Buffers - Extensible mechanism for serializing structured data"
+HOMEPAGE="https://protobuf.dev/"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~loong ~mips ~ppc64 ~riscv ~x86 ~amd64-linux ~x86-linux ~x64-macos"
+GOOGLETEST_COMMIT="09ffd0015395354774c059a17d9f5bee36177ff9"
+SRC_URI="
+ https://github.com/protocolbuffers/protobuf/archive/refs/tags/v${PV}.tar.gz
+ https://github.com/google/googletest/archive/${GOOGLETEST_COMMIT}.tar.gz -> googletest-${GOOGLETEST_COMMIT}.tar.gz
+"
+
+LICENSE="BSD"
+SLOT="0/$(ver_cut 1-2).0"
+IUSE="emacs examples test zlib"
+RESTRICT="!test? ( test )"
+
+BDEPEND="
+ emacs? ( app-editors/emacs:* )
+"
+DEPEND="
+ ${BDEPEND}
+ >=dev-cpp/abseil-cpp-20230125.3-r1:=[${MULTILIB_USEDEP}]
+ zlib? ( sys-libs/zlib[${MULTILIB_USEDEP}] )
+ test? ( >=dev-cpp/gtest-1.9[${MULTILIB_USEDEP}] )
+"
+RDEPEND="
+ ${DEPEND}
+"
+
+DOCS=(CONTRIBUTORS.txt README.md)
+
+src_prepare() {
+ cp -r ${WORKDIR}/googletest-${GOOGLETEST_COMMIT}/* ${S}/third_party/googletest
+ rm -rf ${WORKDIR}/googletest-${GOOGLETEST_COMMIT}
+ cmake_src_prepare
+}
+
+src_configure() {
+ if tc-ld-is-gold; then
+ # https://sourceware.org/bugzilla/show_bug.cgi?id=24527
+ tc-ld-disable-gold
+ fi
+
+ cmake-multilib_src_configure
+}
+
+multilib_src_configure() {
+ local mycmakeargs=(
+ -Dprotobuf_DISABLE_RTTI=ON
+ -Dprotobuf_BUILD_EXAMPLES=$(usex examples)
+ -Dprotobuf_WITH_ZLIB=$(usex zlib)
+ -Dprotobuf_BUILD_TESTS=$(usex test)
+ -Dprotobuf_ABSL_PROVIDER=package
+ -Dprotobuf_BUILD_TESTS=OFF
+ )
+ use test && mycmakeargs+=(-Dprotobuf_USE_EXTERNAL_GTEST=ON)
+
+ cmake_src_configure
+}
+
+src_compile() {
+ cmake-multilib_src_compile
+
+ if use emacs; then
+ elisp-compile editors/protobuf-mode.el
+ fi
+}
+
+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
+}
diff --git a/dev-libs/protobuf/protobuf-33.6.ebuild b/dev-libs/protobuf/protobuf-33.6.ebuild
new file mode 100644
index 000000000000..9bf1ec7a2966
--- /dev/null
+++ b/dev-libs/protobuf/protobuf-33.6.ebuild
@@ -0,0 +1,106 @@
+# Copyright 2023-2026 Liguros Authors
+# Distributed under the terms of the GNU General Public License v2
+EAPI=8
+
+inherit cmake-multilib elisp-common toolchain-funcs
+
+DESCRIPTION="Google's Protocol Buffers - Extensible mechanism for serializing structured data"
+HOMEPAGE="https://protobuf.dev/"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~loong ~mips ~ppc64 ~riscv ~x86 ~amd64-linux ~x86-linux ~x64-macos"
+GOOGLETEST_COMMIT="09ffd0015395354774c059a17d9f5bee36177ff9"
+SRC_URI="
+ https://github.com/protocolbuffers/protobuf/archive/refs/tags/v${PV}.tar.gz
+ https://github.com/google/googletest/archive/${GOOGLETEST_COMMIT}.tar.gz -> googletest-${GOOGLETEST_COMMIT}.tar.gz
+"
+
+LICENSE="BSD"
+SLOT="0/$(ver_cut 1-2).0"
+IUSE="emacs examples test zlib"
+RESTRICT="!test? ( test )"
+
+BDEPEND="
+ emacs? ( app-editors/emacs:* )
+"
+DEPEND="
+ ${BDEPEND}
+ >=dev-cpp/abseil-cpp-20230125.3-r1:=[${MULTILIB_USEDEP}]
+ zlib? ( sys-libs/zlib[${MULTILIB_USEDEP}] )
+ test? ( >=dev-cpp/gtest-1.9[${MULTILIB_USEDEP}] )
+"
+RDEPEND="
+ ${DEPEND}
+"
+
+DOCS=(CONTRIBUTORS.txt README.md)
+
+src_prepare() {
+ cp -r ${WORKDIR}/googletest-${GOOGLETEST_COMMIT}/* ${S}/third_party/googletest
+ rm -rf ${WORKDIR}/googletest-${GOOGLETEST_COMMIT}
+ cmake_src_prepare
+}
+
+src_configure() {
+ if tc-ld-is-gold; then
+ # https://sourceware.org/bugzilla/show_bug.cgi?id=24527
+ tc-ld-disable-gold
+ fi
+
+ cmake-multilib_src_configure
+}
+
+multilib_src_configure() {
+ local mycmakeargs=(
+ -Dprotobuf_DISABLE_RTTI=ON
+ -Dprotobuf_BUILD_EXAMPLES=$(usex examples)
+ -Dprotobuf_WITH_ZLIB=$(usex zlib)
+ -Dprotobuf_BUILD_TESTS=$(usex test)
+ -Dprotobuf_ABSL_PROVIDER=package
+ -Dprotobuf_BUILD_TESTS=OFF
+ )
+ use test && mycmakeargs+=(-Dprotobuf_USE_EXTERNAL_GTEST=ON)
+
+ cmake_src_configure
+}
+
+src_compile() {
+ cmake-multilib_src_compile
+
+ if use emacs; then
+ elisp-compile editors/protobuf-mode.el
+ fi
+}
+
+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
+}
diff --git a/dev-libs/protobuf/protobuf-34.1.ebuild b/dev-libs/protobuf/protobuf-34.1.ebuild
new file mode 100644
index 000000000000..9bf1ec7a2966
--- /dev/null
+++ b/dev-libs/protobuf/protobuf-34.1.ebuild
@@ -0,0 +1,106 @@
+# Copyright 2023-2026 Liguros Authors
+# Distributed under the terms of the GNU General Public License v2
+EAPI=8
+
+inherit cmake-multilib elisp-common toolchain-funcs
+
+DESCRIPTION="Google's Protocol Buffers - Extensible mechanism for serializing structured data"
+HOMEPAGE="https://protobuf.dev/"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~loong ~mips ~ppc64 ~riscv ~x86 ~amd64-linux ~x86-linux ~x64-macos"
+GOOGLETEST_COMMIT="09ffd0015395354774c059a17d9f5bee36177ff9"
+SRC_URI="
+ https://github.com/protocolbuffers/protobuf/archive/refs/tags/v${PV}.tar.gz
+ https://github.com/google/googletest/archive/${GOOGLETEST_COMMIT}.tar.gz -> googletest-${GOOGLETEST_COMMIT}.tar.gz
+"
+
+LICENSE="BSD"
+SLOT="0/$(ver_cut 1-2).0"
+IUSE="emacs examples test zlib"
+RESTRICT="!test? ( test )"
+
+BDEPEND="
+ emacs? ( app-editors/emacs:* )
+"
+DEPEND="
+ ${BDEPEND}
+ >=dev-cpp/abseil-cpp-20230125.3-r1:=[${MULTILIB_USEDEP}]
+ zlib? ( sys-libs/zlib[${MULTILIB_USEDEP}] )
+ test? ( >=dev-cpp/gtest-1.9[${MULTILIB_USEDEP}] )
+"
+RDEPEND="
+ ${DEPEND}
+"
+
+DOCS=(CONTRIBUTORS.txt README.md)
+
+src_prepare() {
+ cp -r ${WORKDIR}/googletest-${GOOGLETEST_COMMIT}/* ${S}/third_party/googletest
+ rm -rf ${WORKDIR}/googletest-${GOOGLETEST_COMMIT}
+ cmake_src_prepare
+}
+
+src_configure() {
+ if tc-ld-is-gold; then
+ # https://sourceware.org/bugzilla/show_bug.cgi?id=24527
+ tc-ld-disable-gold
+ fi
+
+ cmake-multilib_src_configure
+}
+
+multilib_src_configure() {
+ local mycmakeargs=(
+ -Dprotobuf_DISABLE_RTTI=ON
+ -Dprotobuf_BUILD_EXAMPLES=$(usex examples)
+ -Dprotobuf_WITH_ZLIB=$(usex zlib)
+ -Dprotobuf_BUILD_TESTS=$(usex test)
+ -Dprotobuf_ABSL_PROVIDER=package
+ -Dprotobuf_BUILD_TESTS=OFF
+ )
+ use test && mycmakeargs+=(-Dprotobuf_USE_EXTERNAL_GTEST=ON)
+
+ cmake_src_configure
+}
+
+src_compile() {
+ cmake-multilib_src_compile
+
+ if use emacs; then
+ elisp-compile editors/protobuf-mode.el
+ fi
+}
+
+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
+}
diff --git a/dev-libs/protobuf/protobuf-35.0.ebuild b/dev-libs/protobuf/protobuf-35.0.ebuild
new file mode 100644
index 000000000000..9bf1ec7a2966
--- /dev/null
+++ b/dev-libs/protobuf/protobuf-35.0.ebuild
@@ -0,0 +1,106 @@
+# Copyright 2023-2026 Liguros Authors
+# Distributed under the terms of the GNU General Public License v2
+EAPI=8
+
+inherit cmake-multilib elisp-common toolchain-funcs
+
+DESCRIPTION="Google's Protocol Buffers - Extensible mechanism for serializing structured data"
+HOMEPAGE="https://protobuf.dev/"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~loong ~mips ~ppc64 ~riscv ~x86 ~amd64-linux ~x86-linux ~x64-macos"
+GOOGLETEST_COMMIT="09ffd0015395354774c059a17d9f5bee36177ff9"
+SRC_URI="
+ https://github.com/protocolbuffers/protobuf/archive/refs/tags/v${PV}.tar.gz
+ https://github.com/google/googletest/archive/${GOOGLETEST_COMMIT}.tar.gz -> googletest-${GOOGLETEST_COMMIT}.tar.gz
+"
+
+LICENSE="BSD"
+SLOT="0/$(ver_cut 1-2).0"
+IUSE="emacs examples test zlib"
+RESTRICT="!test? ( test )"
+
+BDEPEND="
+ emacs? ( app-editors/emacs:* )
+"
+DEPEND="
+ ${BDEPEND}
+ >=dev-cpp/abseil-cpp-20230125.3-r1:=[${MULTILIB_USEDEP}]
+ zlib? ( sys-libs/zlib[${MULTILIB_USEDEP}] )
+ test? ( >=dev-cpp/gtest-1.9[${MULTILIB_USEDEP}] )
+"
+RDEPEND="
+ ${DEPEND}
+"
+
+DOCS=(CONTRIBUTORS.txt README.md)
+
+src_prepare() {
+ cp -r ${WORKDIR}/googletest-${GOOGLETEST_COMMIT}/* ${S}/third_party/googletest
+ rm -rf ${WORKDIR}/googletest-${GOOGLETEST_COMMIT}
+ cmake_src_prepare
+}
+
+src_configure() {
+ if tc-ld-is-gold; then
+ # https://sourceware.org/bugzilla/show_bug.cgi?id=24527
+ tc-ld-disable-gold
+ fi
+
+ cmake-multilib_src_configure
+}
+
+multilib_src_configure() {
+ local mycmakeargs=(
+ -Dprotobuf_DISABLE_RTTI=ON
+ -Dprotobuf_BUILD_EXAMPLES=$(usex examples)
+ -Dprotobuf_WITH_ZLIB=$(usex zlib)
+ -Dprotobuf_BUILD_TESTS=$(usex test)
+ -Dprotobuf_ABSL_PROVIDER=package
+ -Dprotobuf_BUILD_TESTS=OFF
+ )
+ use test && mycmakeargs+=(-Dprotobuf_USE_EXTERNAL_GTEST=ON)
+
+ cmake_src_configure
+}
+
+src_compile() {
+ cmake-multilib_src_compile
+
+ if use emacs; then
+ elisp-compile editors/protobuf-mode.el
+ fi
+}
+
+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
+}