Compare commits

...

52 Commits
master ... f38

Author SHA1 Message Date
Fedora Release Engineering cad8fd9101 Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2023-01-20 10:20:36 +00:00
Benjamin A. Beasley b744f0ae20 Add a note about perl-Alien-ProtoBuf’s exact-version dependency 2023-01-03 20:48:43 -05:00
Benjamin A. Beasley 36c08e98b6 Update to 3.19.6; fix CVE-2022-3171 2022-12-07 13:49:42 -05:00
Benjamin A. Beasley 80670d4cdb Update to 3.19.5; fix CVE-2022-1941 2022-12-07 13:39:16 -05:00
Benjamin A. Beasley d6f4a56b7e Use a macro to avoid repeating the .so version, and improve .so globs 2022-12-07 13:33:36 -05:00
Benjamin A. Beasley 0fce2f1ffc Add a man page for protoc 2022-12-06 09:31:01 -05:00
Benjamin A. Beasley e944fe2238 The -vim subpackage now depends on vim-filesystem, not vim-enhanced
We don’t really need vim or vim-enhanced to be already installed in
order to install a plugin for it. We do need to depend on
vim-filesystem, which provides the necessary directory structure.
2022-12-05 19:05:05 -05:00
Benjamin A. Beasley 0271877f01 Remove obsolete ldconfig_scriptlets macros 2022-12-05 10:43:29 -05:00
Benjamin A. Beasley b75731146e Ensure all subpackages always have LICENSE, or depend on something that does 2022-12-05 10:42:08 -05:00
Benjamin A. Beasley 75a32b0a07 Re-enable compiled Python extension on Python 3.11 2022-12-05 10:39:12 -05:00
Benjamin A. Beasley 2674c81c49 Update summary and description to refer to “Python” instead of “Python 3” 2022-12-05 10:23:14 -05:00
Benjamin A. Beasley dc55af4fa6 Drop python3_pkgversion macro 2022-12-05 10:23:14 -05:00
Benjamin A. Beasley b85016d121 Drop obsolete python_provide macro 2022-12-05 10:23:14 -05:00
Benjamin A. Beasley b2cd8fe8e8 Drop manual dependency on python3-six, no longer needed 2022-12-05 10:23:14 -05:00
Benjamin A. Beasley 2036d34972 Organize the base BR’s a bit 2022-12-05 10:23:14 -05:00
Benjamin A. Beasley e328028233 Simplify the Source0 URL with a macro 2022-12-05 10:23:14 -05:00
Benjamin A. Beasley 7cbfd6ac54 Update/correct gtest commit hash to match upstream 2022-12-05 10:23:14 -05:00
Benjamin A. Beasley c0cef1e088 Improved handling of gtest sources 2022-12-05 10:23:14 -05:00
Benjamin A. Beasley 2012fba6ee Update License to SPDX 2022-12-05 10:23:14 -05:00
Orion Poplawski 6c8d4c7752 Build python support with C++ (bz#2107921) 2022-08-14 20:23:47 -06:00
Fedora Release Engineering 5d9cabe4c0 Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2022-07-22 15:28:41 +00:00
Benjamin A. Beasley b1fe3d640f Obsolete java subpackages on non-java arches 2022-07-06 15:11:25 -04:00
Benjamin A. Beasley a1089423b3 Exclude java subpackages on non-java arches (fix RHBZ#2104092) 2022-07-06 14:59:17 -04:00
Python Maint fd911b3964 Rebuilt for Python 3.11 2022-06-13 22:00:47 +02:00
Mamoru TASAKA 26e8f8ada1 Add some --add-opens option for java17
Restrict heap usage for mvn also on %ix86
2022-02-13 21:50:46 +09:00
Orion Poplawski 73fd95e79a Update to 3.19.4 2022-02-07 07:37:29 -07:00
Jiri d4af42c144 Rebuilt for java-17-openjdk as system jdk
https://fedoraproject.org/wiki/Changes/Java17
2022-02-05 23:54:27 +01:00
Fedora Release Engineering 46b9f555f1 - Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2022-01-21 09:30:55 +00:00
Orion Poplawski e691b11a84 Re-enable java 2021-11-09 22:03:38 -07:00
Adrian Reber 0a195a154c Revert "Re-enable java"
This reverts commit 08e46e3afb.
2021-11-05 15:48:07 +01:00
Adrian Reber 3b4dc1e6a5 Revert "Update java for 3.19.0"
This reverts commit d6917b5fff.
2021-11-05 15:47:58 +01:00
Orion Poplawski d6917b5fff Update java for 3.19.0 2021-11-02 18:49:03 -06:00
Orion Poplawski 08e46e3afb Re-enable java 2021-11-02 07:10:07 -06:00
Major Hayden 73ba13a4e9
Update to 3.19.0
Signed-off-by: Major Hayden <major@mhtx.net>
2021-10-27 13:05:58 -05:00
Adrian Reber 1acae29591
Disable tests that fail on 32bit arches 2021-10-22 10:37:46 +02:00
Orion Poplawski 76e9c65504 Update to 3.18.1 2021-10-13 22:34:35 -06:00
Fedora Release Engineering 998c183081 - Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2021-07-23 04:07:31 +00:00
Python Maint f1d9af006f Rebuilt for Python 3.10 2021-06-04 20:15:56 +02:00
Adrian Reber 1812650a0a Reintroduce the emacs subpackage to avoid file conflicts between
protobuf-compiler.x86_64 and protobuf-compiler.i686
2021-05-07 09:28:00 +02:00
Jonathan Wakely 4b6c0e2162 Rebuilt for removed libstdc++ symbol (#1937698) 2021-03-30 19:39:12 +01:00
Fedora Release Engineering 9df5d76ad5 - Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2021-01-27 08:38:03 +00:00
Adrian Reber 21c6d24bb0
Update to 3.14.0 2021-01-12 12:31:15 +01:00
Adrian Reber b888e7357d
Update to 3.14.0 2021-01-12 09:40:20 +01:00
Tom Stellard 3e487ec7b6 Add BuildRequires: make
https://fedoraproject.org/wiki/Changes/Remove_make_from_BuildRoot
2021-01-08 19:33:50 +00:00
Charalampos Stratakis 16834f0855 Update to 3.13.0 2020-08-26 21:07:52 +02:00
Fedora Release Engineering 418ca1e976 - Second attempt - Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2020-08-01 07:14:11 +00:00
Fedora Release Engineering 441cfe8c7d - Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2020-07-28 23:03:34 +00:00
Jiri 46b9594afd Rebuilt for JDK-11 2020-07-11 05:24:01 +02:00
Adrian Reber 9059bd58f0
Should not have deleted the test tarball.
Signed-off-by: Adrian Reber <adrian@lisas.de>
2020-06-19 18:22:16 +02:00
Adrian Reber cf97169a12
Update to 3.12.3 2020-06-19 17:32:44 +02:00
Miro Hrončok bec19057a1 Use -Wno-error=type-limits to workaround a compiler bug
https://bugzilla.redhat.com/show_bug.cgi?id=1838470
    https://github.com/protocolbuffers/protobuf/issues/7514
    https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95148
2020-05-28 10:12:39 +02:00
Miro Hrončok 650c7fb4cc Rebuilt for Python 3.9 2020-05-26 02:56:53 +02:00
8 changed files with 740 additions and 54 deletions

10
.gitignore vendored
View File

@ -16,3 +16,13 @@ protobuf-2.3.0.tar.bz2
/protobuf-3.11.2-all.tar.gz
/5ec7f0c4a113e2f18ac2c6cc7df51ad6afc24081.zip
/protobuf-3.11.4-all.tar.gz
/protobuf-3.12.3-all.tar.gz
/protobuf-3.13.0-all.tar.gz
/protobuf-3.14.0-all.tar.gz
/protobuf-3.18.1-all.tar.gz
/protobuf-3.19.0-all.tar.gz
/protobuf-3.19.4-all.tar.gz
/googletest-0e402173c97aea7a00749e825b194bfede4f2e45.tar.gz
/googletest-5ec7f0c4a113e2f18ac2c6cc7df51ad6afc24081.tar.gz
/protobuf-3.19.5-all.tar.gz
/protobuf-3.19.6-all.tar.gz

View File

@ -0,0 +1,76 @@
--- src/google/protobuf/any_test.cc 2021-10-22 08:52:03.604280348 +0200
+++ src/google/protobuf/any_test.cc.orig 2021-10-22 08:51:46.935156306 +0200
@@ -60,13 +60,6 @@
EXPECT_EQ(12345, submessage.int32_value());
}
-TEST(AnyTest, TestPackFromSerializationExceedsSizeLimit) {
- protobuf_unittest::TestAny submessage;
- submessage.mutable_text()->resize(INT_MAX, 'a');
- protobuf_unittest::TestAny message;
- EXPECT_FALSE(message.mutable_any_value()->PackFrom(submessage));
-}
-
TEST(AnyTest, TestUnpackWithTypeMismatch) {
protobuf_unittest::TestAny payload;
payload.set_int32_value(13);
--- src/google/protobuf/arena_unittest.cc 2021-10-22 08:52:37.804534886 +0200
+++ src/google/protobuf/arena_unittest.cc.orig 2021-10-22 08:51:55.150217437 +0200
@@ -1341,34 +1341,6 @@
// Align n to next multiple of 8
uint64_t Align8(uint64_t n) { return (n + 7) & -8; }
-TEST(ArenaTest, SpaceAllocated_and_Used) {
- Arena arena_1;
- EXPECT_EQ(0, arena_1.SpaceAllocated());
- EXPECT_EQ(0, arena_1.SpaceUsed());
- EXPECT_EQ(0, arena_1.Reset());
- Arena::CreateArray<char>(&arena_1, 320);
- // Arena will allocate slightly more than 320 for the block headers.
- EXPECT_LE(320, arena_1.SpaceAllocated());
- EXPECT_EQ(Align8(320), arena_1.SpaceUsed());
- EXPECT_LE(320, arena_1.Reset());
-
- // Test with initial block.
- std::vector<char> arena_block(1024);
- ArenaOptions options;
- options.start_block_size = 256;
- options.max_block_size = 8192;
- options.initial_block = &arena_block[0];
- options.initial_block_size = arena_block.size();
- Arena arena_2(options);
- EXPECT_EQ(1024, arena_2.SpaceAllocated());
- EXPECT_EQ(0, arena_2.SpaceUsed());
- EXPECT_EQ(1024, arena_2.Reset());
- Arena::CreateArray<char>(&arena_2, 55);
- EXPECT_EQ(1024, arena_2.SpaceAllocated());
- EXPECT_EQ(Align8(55), arena_2.SpaceUsed());
- EXPECT_EQ(1024, arena_2.Reset());
-}
-
TEST(ArenaTest, BlockSizeDoubling) {
Arena arena;
EXPECT_EQ(0, arena.SpaceUsed());
@@ -1368,22 +1396,6 @@
}
}
-TEST(ArenaTest, BlockSizeSmallerThanAllocation) {
- for (size_t i = 0; i <= 8; ++i) {
- ArenaOptions opt;
- opt.start_block_size = opt.max_block_size = i;
- Arena arena(opt);
-
- *Arena::Create<int64_t>(&arena) = 42;
- EXPECT_GE(arena.SpaceAllocated(), 8);
- EXPECT_EQ(8, arena.SpaceUsed());
-
- *Arena::Create<int64_t>(&arena) = 42;
- EXPECT_GE(arena.SpaceAllocated(), 16);
- EXPECT_EQ(16, arena.SpaceUsed());
- }
-}
-
TEST(ArenaTest, GetArenaShouldReturnTheArenaForArenaAllocatedMessages) {
Arena arena;
ArenaMessage* message = Arena::CreateMessage<ArenaMessage>(&arena);

View File

@ -0,0 +1,25 @@
--- a/src/google/protobuf/io/zero_copy_stream_unittest.cc.orig 2021-01-12 12:25:18.471517830 +0100
+++ b/src/google/protobuf/io/zero_copy_stream_unittest.cc 2021-01-12 12:25:42.022696126 +0100
@@ -712,22 +712,6 @@
}
}
-// Verifies that outputs up to kint32max can be created.
-TEST_F(IoTest, LargeOutput) {
- std::string str;
- StringOutputStream output(&str);
- void* unused_data;
- int size;
- // Repeatedly calling Next should eventually grow the buffer to kint32max.
- do {
- EXPECT_TRUE(output.Next(&unused_data, &size));
- } while (str.size() < std::numeric_limits<int>::max());
- // Further increases should be possible.
- output.Next(&unused_data, &size);
- EXPECT_GT(size, 0);
-}
-
-
// To test files, we create a temporary file, write, read, truncate, repeat.
TEST_F(IoTest, FileIo) {
std::string filename = TestTempDir() + "/zero_copy_stream_test_file";

View File

@ -0,0 +1,10 @@
--- protobuf-3.19.4/java/pom.xml.jre17 2022-02-13 11:45:39.367028268 +0900
+++ protobuf-3.19.4/java/pom.xml 2022-02-13 12:43:18.212542147 +0900
@@ -37,6 +37,7 @@
<test.proto.dir>src/test/proto</test.proto.dir>
<generated.sources.dir>${project.build.directory}/generated-sources</generated.sources.dir>
<generated.testsources.dir>${project.build.directory}/generated-test-sources</generated.testsources.dir>
+ <argLine>--add-opens java.base/java.lang=ALL-UNNAMED</argLine>
</properties>
<licenses>

View File

@ -0,0 +1,135 @@
From 5576f98f5d6aa0cc1e845a5fe5d00c034ef51f30 Mon Sep 17 00:00:00 2001
From: Alexander Shadchin <alexandr.shadchin@gmail.com>
Date: Sun, 14 Aug 2022 21:13:49 +0300
Subject: [PATCH] Fix build with Python 3.11
The PyFrameObject structure members have been removed from the public C API.
---
python/google/protobuf/pyext/descriptor.cc | 75 ++++++++++++++++++----
1 file changed, 62 insertions(+), 13 deletions(-)
diff --git a/python/google/protobuf/pyext/descriptor.cc b/python/google/protobuf/pyext/descriptor.cc
index a2993d908..44d811923 100644
--- a/python/google/protobuf/pyext/descriptor.cc
+++ b/python/google/protobuf/pyext/descriptor.cc
@@ -57,6 +57,37 @@
: 0) \
: PyBytes_AsStringAndSize(ob, (charpp), (sizep)))
+#if PY_VERSION_HEX < 0x030900B1 && !defined(PYPY_VERSION)
+static PyCodeObject* PyFrame_GetCode(PyFrameObject *frame)
+{
+ Py_INCREF(frame->f_code);
+ return frame->f_code;
+}
+
+static PyFrameObject* PyFrame_GetBack(PyFrameObject *frame)
+{
+ Py_XINCREF(frame->f_back);
+ return frame->f_back;
+}
+#endif
+
+#if PY_VERSION_HEX < 0x030B00A7 && !defined(PYPY_VERSION)
+static PyObject* PyFrame_GetLocals(PyFrameObject *frame)
+{
+ if (PyFrame_FastToLocalsWithError(frame) < 0) {
+ return NULL;
+ }
+ Py_INCREF(frame->f_locals);
+ return frame->f_locals;
+}
+
+static PyObject* PyFrame_GetGlobals(PyFrameObject *frame)
+{
+ Py_INCREF(frame->f_globals);
+ return frame->f_globals;
+}
+#endif
+
namespace google {
namespace protobuf {
namespace python {
@@ -95,48 +126,66 @@ bool _CalledFromGeneratedFile(int stacklevel) {
// This check is not critical and is somewhat difficult to implement correctly
// in PyPy.
PyFrameObject* frame = PyEval_GetFrame();
+ PyCodeObject* frame_code = nullptr;
+ PyObject* frame_globals = nullptr;
+ PyObject* frame_locals = nullptr;
+ bool result = false;
+
if (frame == NULL) {
- return false;
+ goto exit;
}
+ Py_INCREF(frame);
while (stacklevel-- > 0) {
- frame = frame->f_back;
+ PyFrameObject* next_frame = PyFrame_GetBack(frame);
+ Py_DECREF(frame);
+ frame = next_frame;
if (frame == NULL) {
- return false;
+ goto exit;
}
}
- if (frame->f_code->co_filename == NULL) {
- return false;
+ frame_code = PyFrame_GetCode(frame);
+ if (frame_code->co_filename == NULL) {
+ goto exit;
}
char* filename;
Py_ssize_t filename_size;
- if (PyString_AsStringAndSize(frame->f_code->co_filename,
+ if (PyString_AsStringAndSize(frame_code->co_filename,
&filename, &filename_size) < 0) {
// filename is not a string.
PyErr_Clear();
- return false;
+ goto exit;
}
if ((filename_size < 3) ||
(strcmp(&filename[filename_size - 3], ".py") != 0)) {
// Cython's stack does not have .py file name and is not at global module
// scope.
- return true;
+ result = true;
+ goto exit;
}
if (filename_size < 7) {
// filename is too short.
- return false;
+ goto exit;
}
if (strcmp(&filename[filename_size - 7], "_pb2.py") != 0) {
// Filename is not ending with _pb2.
- return false;
+ goto exit;
}
- if (frame->f_globals != frame->f_locals) {
+ frame_globals = PyFrame_GetGlobals(frame);
+ frame_locals = PyFrame_GetLocals(frame);
+ if (frame_globals != frame_locals) {
// Not at global module scope
- return false;
+ goto exit;
}
#endif
- return true;
+ result = true;
+exit:
+ Py_XDECREF(frame_globals);
+ Py_XDECREF(frame_locals);
+ Py_XDECREF(frame_code);
+ Py_XDECREF(frame);
+ return result;
}
// If the calling code is not a _pb2.py file, raise AttributeError.
--
2.38.1

View File

@ -1,30 +1,118 @@
# Build -python subpackage
%bcond_without python
# Build -python subpackage with C++. This significantly improves performance
# compared to the pure-Python implementation.
%bcond_without python_cpp
# Build -java subpackage
%ifarch %{java_arches}
%bcond_without java
%else
%bcond_with java
%endif
#global rcver rc2
Summary: Protocol Buffers - Google's data interchange format
Name: protobuf
Version: 3.11.4
Release: 1%{?dist}
License: BSD
# NOTE: perl-Alien-ProtoBuf has an exact-version dependency on the version of
# protobuf with which it was built; it therefore needs to be rebuilt even for
# “patch” updates of protobuf.
Version: 3.19.6
%global so_version 30
Release: 2%{?dist}
# The entire source is BSD-3-Clause, except the following files, which belong
# to the build system; are unpackaged maintainer utility scripts; or are used
# only for building tests that are not packaged—and so they do not affect the
# licenses of the binary RPMs:
#
# FSFAP:
# m4/ax_cxx_compile_stdcxx.m4
# m4/ax_prog_cc_for_build.m4
# m4/ax_prog_cxx_for_build.m4
# Apache-2.0:
# python/mox.py
# python/stubout.py
# third_party/googletest/
# except the following, which are BSD-3-Clause:
# third_party/googletest/googletest/test/gtest_pred_impl_unittest.cc
# third_party/googletest/googletest/include/gtest/gtest-param-test.h
# third_party/googletest/googletest/include/gtest/gtest-param-test.h.pump
# third_party/googletest/googletest/include/gtest/internal/gtest-param-util-generated.h
# third_party/googletest/googletest/include/gtest/internal/gtest-param-util-generated.h.pump
# third_party/googletest/googletest/include/gtest/internal/gtest-type-util.h
# third_party/googletest/googletest/include/gtest/internal/gtest-type-util.h.pump
# MIT:
# conformance/third_party/jsoncpp/json.h
# conformance/third_party/jsoncpp/jsoncpp.cpp
License: BSD-3-Clause
URL: https://github.com/protocolbuffers/protobuf
Source: https://github.com/protocolbuffers/protobuf/archive/v%{version}%{?rcver}/%{name}-%{version}%{?rcver}-all.tar.gz
Source0: %{url}/archive/v%{version}%{?rcver}/%{name}-%{version}%{?rcver}-all.tar.gz
Source1: ftdetect-proto.vim
Source2: protobuf-init.el
# We bundle a copy of the exact version of gtest that is used by upstream in
# the source RPM rather than using the system copy. This is to be discouraged,
# but necessary in this case. It is not treated as a bundled library because
# it is used only at build time, and contributes nothing to the installed
# files. We take measures to verify this in %%check. See
# https://github.com/protocolbuffers/protobuf/tree/v%%{version}/third_party to
# check the correct commit hash.
%global gtest_url https://github.com/google/googletest
%global gtest_commit 5ec7f0c4a113e2f18ac2c6cc7df51ad6afc24081
%global gtest_dir googletest-%{gtest_commit}
# For tests (using exactly the same version as the release)
Source3: https://github.com/google/googletest/archive/5ec7f0c4a113e2f18ac2c6cc7df51ad6afc24081.zip
Source3: %{gtest_url}/archive/%{gtest_commit}/%{gtest_dir}.tar.gz
# Man page hand-written for Fedora in groff_man(7) format based on “protoc
# --help” output.
Source4: protoc.1
# https://github.com/protocolbuffers/protobuf/issues/8082
Patch1: protobuf-3.14-disable-IoTest.LargeOutput.patch
# Disable tests that are failing on 32bit systems
Patch2: disable-tests-on-32-bit-systems.patch
# https://bugzilla.redhat.com/show_bug.cgi?id=2051202
# java.lang.ClassLoader.defineClass(java.lang.String,byte[],int,int,java.security.ProtectionDomain)
# throws java.lang.ClassFormatError accessible: module java.base does not "opens java.lang" to unnamed module @12d5624a
# at com.google.protobuf.ServiceTest.testGetPrototype(ServiceTest.java:107)
Patch3: protobuf-3.19.4-jre17-add-opens.patch
# Backport upstream commit da973aff2adab60a9e516d3202c111dbdde1a50f:
# Fix build with Python 3.11
#
# The PyFrameObject structure members have been removed from the public C API.
Patch4: protobuf-3.19.4-python3.11.patch
# A bundled copy of jsoncpp is included in the conformance tests, but the
# result is not packaged, so we do not treat it as a formal bundled
# dependency—thus the virtual Provides below is commented out. The bundling is
# removed in a later release:
# Make jsoncpp a formal dependency
# https://github.com/protocolbuffers/protobuf/pull/10739
# The bundled version number is obtained from JSONCPP_VERSION_STRING in
# conformance/third_party/jsoncpp/json.h.
# Provides: bundled(jsoncpp) = 1.6.5
BuildRequires: autoconf
BuildRequires: automake
BuildRequires: emacs
BuildRequires: gcc-c++
BuildRequires: libtool
BuildRequires: pkgconfig
BuildRequires: make
BuildRequires: gcc-c++
BuildRequires: emacs
BuildRequires: zlib-devel
%ifnarch %{java_arches}
Obsoletes: %{name}-java-util < 3.19.4-4
Obsoletes: %{name}-javadoc < 3.19.4-4
Obsoletes: %{name}-parent < 3.19.4-4
Obsoletes: %{name}-bom < 3.19.4-4
Obsoletes: %{name}-javalite < 3.19.4-4
%endif
%description
Protocol Buffers are a way of encoding structured data in an efficient
yet extensible format. Google uses Protocol Buffers for almost all of
@ -41,9 +129,6 @@ breaking deployed programs that are compiled against the "old" format.
%package compiler
Summary: Protocol Buffers compiler
Requires: %{name} = %{version}-%{release}
Obsoletes: protobuf-emacs < 3.6.1-4
Obsoletes: protobuf-emacs-el < 3.6.1-4
Requires: emacs-filesystem >= %{_emacs_version}
%description compiler
This package contains Protocol Buffers compiler for all programming
@ -103,25 +188,31 @@ which only depends libprotobuf-lite, which is much smaller than libprotobuf but
lacks descriptors, reflection, and some other features.
%if %{with python}
%package -n python%{python3_pkgversion}-%{name}
Summary: Python 3 bindings for Google Protocol Buffers
%package -n python3-%{name}
Summary: Python bindings for Google Protocol Buffers
BuildRequires: python3-devel
BuildRequires: python3dist(setuptools)
BuildRequires: python3dist(wheel)
%if %{with python_cpp}
Requires: %{name}%{?_isa} = %{version}-%{release}
%else
BuildArch: noarch
BuildRequires: python%{python3_pkgversion}-devel
BuildRequires: python%{python3_pkgversion}-setuptools
Requires: python%{python3_pkgversion}-six >= 1.9
%endif
Conflicts: %{name}-compiler > %{version}
Conflicts: %{name}-compiler < %{version}
Provides: %{name}-python3 = %{version}-%{release}
%{?python_provide:%python_provide python%{python3_pkgversion}-%{name}}
%description -n python%{python3_pkgversion}-%{name}
This package contains Python 3 libraries for Google Protocol Buffers
%description -n python3-%{name}
This package contains Python libraries for Google Protocol Buffers
%endif
%package vim
Summary: Vim syntax highlighting for Google Protocol Buffers descriptions
BuildArch: noarch
Requires: vim-enhanced
# We dont really need vim or vim-enhanced to be already installed in order to
# install a plugin for it. We do need to depend on vim-filesystem, which
# provides the necessary directory structure.
Requires: vim-filesystem
%description vim
This package contains syntax highlighting for Google Protocol Buffers
@ -135,6 +226,8 @@ BuildArch: noarch
BuildRequires: maven-local
BuildRequires: mvn(com.google.code.gson:gson)
BuildRequires: mvn(com.google.guava:guava)
BuildRequires: mvn(com.google.guava:guava-testlib)
BuildRequires: mvn(com.google.truth:truth)
BuildRequires: mvn(junit:junit)
BuildRequires: mvn(org.apache.felix:maven-bundle-plugin)
BuildRequires: mvn(org.apache.maven.plugins:maven-antrun-plugin)
@ -186,26 +279,48 @@ Protocol Buffer BOM POM.
%endif
%package emacs
Summary: Emacs mode for Google Protocol Buffers descriptions
BuildArch: noarch
Requires: emacs-filesystem >= %{_emacs_version}
Obsoletes: protobuf-emacs-el < 3.6.1-4
%description emacs
This package contains syntax highlighting for Google Protocol Buffers
descriptions in the Emacs editor.
%prep
%setup -q -n %{name}-%{version}%{?rcver} -a 3
%autopatch -p1
mv googletest-5ec7f0c4a113e2f18ac2c6cc7df51ad6afc24081/* third_party/googletest/
%ifarch %{ix86} armv7hl
# IoTest.LargeOutput fails on 32bit arches
# https://github.com/protocolbuffers/protobuf/issues/8082
%patch1 -p1
# Need to disable more tests that fail on 32bit arches only
%patch2 -p0
%endif
%patch3 -p1 -b .jre17
%patch4 -p1 -b .python311
# Copy in the needed gtest/gmock implementations.
%setup -q -T -D -b 3 -n %{name}-%{version}%{?rcver}
rm -rvf 'third_party/googletest'
mv '../%{gtest_dir}' 'third_party/googletest'
find -name \*.cc -o -name \*.h | xargs chmod -x
chmod 644 examples/*
%if %{with java}
%pom_remove_dep org.easymock:easymockclassextension java/pom.xml java/core/pom.xml java/lite/pom.xml java/util/pom.xml
%pom_remove_dep com.google.truth:truth java/pom.xml java/core/pom.xml java/lite/pom.xml java/util/pom.xml
%pom_remove_dep com.google.errorprone:error_prone_annotations java/util/pom.xml
%pom_remove_dep com.google.guava:guava-testlib java/pom.xml java/util/pom.xml
# These use easymockclassextension
rm java/core/src/test/java/com/google/protobuf/ServiceTest.java
# These use truth or error_prone_annotations or guava-testlib
rm java/core/src/test/java/com/google/protobuf/LiteralByteStringTest.java
rm java/core/src/test/java/com/google/protobuf/BoundedByteStringTest.java
rm java/core/src/test/java/com/google/protobuf/RopeByteStringTest.java
rm java/core/src/test/java/com/google/protobuf/RopeByteStringSubstringTest.java
rm -r java/util/src/test/java/com/google/protobuf/util
rm -r java/util/src/main/java/com/google/protobuf/util
%pom_remove_dep com.google.j2objc:j2objc-annotations java/util/pom.xml
# Remove annotation libraries we don't have
annotations=$(
find -name '*.java' |
xargs grep -h -e '^import com\.google\.errorprone\.annotation' \
-e '^import com\.google\.j2objc\.annotations' |
sort -u | sed 's/.*\.\([^.]*\);/\1/' | paste -sd\|
)
find -name '*.java' | xargs sed -ri \
"s/^import .*\.($annotations);//;s/@($annotations)"'\>\s*(\((("[^"]*")|([^)]*))\))?//g'
# Make OSGi dependency on sun.misc package optional
%pom_xpath_inject "pom:configuration/pom:instructions" "<Import-Package>sun.misc;resolution:=optional,*</Import-Package>" java/core
@ -232,18 +347,25 @@ export PTHREAD_LIBS="-lpthread"
./autogen.sh
%configure
%make_build
# -Wno-error=type-limits:
# https://bugzilla.redhat.com/show_bug.cgi?id=1838470
# https://github.com/protocolbuffers/protobuf/issues/7514
# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95148
# (also set in %%check)
%make_build CXXFLAGS="%{build_cxxflags} -Wno-error=type-limits"
%if %{with python}
pushd python
%py3_build
%py3_build %{?with_python_cpp:-- --cpp_implementation}
popd
%endif
%if %{with java}
%ifarch s390x %{arm}
%ifarch %ix86 s390x %{arm}
export MAVEN_OPTS=-Xmx1024m
%endif
%pom_disable_module kotlin java/pom.xml
%pom_disable_module kotlin-lite java/pom.xml
%mvn_build -s -- -f java/pom.xml
%endif
@ -257,19 +379,22 @@ fail=0
%else
fail=1
%endif
make %{?_smp_mflags} check || exit $fail
%make_build check CXXFLAGS="%{build_cxxflags} -Wno-error=type-limits" || exit $fail
%install
%make_install %{?_smp_mflags} STRIPBINARIES=no INSTALL="%{__install} -p" CPPROG="cp -p"
find %{buildroot} -type f -name "*.la" -exec rm -f {} \;
find %{buildroot} -type f -name "*.la" -exec rm -f {} +
# protoc.1 man page
install -p -m 0644 -D -t '%{buildroot}%{_mandir}/man1' '%{SOURCE4}'
%if %{with python}
pushd python
#python ./setup.py install --root=%{buildroot} --single-version-externally-managed --record=INSTALLED_FILES --optimize=1
%py3_install
find %{buildroot}%{python3_sitelib} -name \*.py |
xargs sed -i -e '1{\@^#!@d}'
%py3_install %{?with_python_cpp:-- --cpp_implementation}
%if %{without python_cpp}
find %{buildroot}%{python3_sitelib} -name \*.py -exec sed -i -e '1{\@^#!@d}' {} +
%endif
popd
%endif
install -p -m 644 -D %{SOURCE1} %{buildroot}%{_datadir}/vim/vimfiles/ftdetect/proto.vim
@ -285,22 +410,17 @@ install -p -m 0644 editors/protobuf-mode.elc %{buildroot}%{_emacs_sitelispdir}/%
mkdir -p %{buildroot}%{_emacs_sitestartdir}
install -p -m 0644 %{SOURCE2} %{buildroot}%{_emacs_sitestartdir}
%ldconfig_scriptlets
%ldconfig_scriptlets lite
%ldconfig_scriptlets compiler
%files
%doc CHANGES.txt CONTRIBUTORS.txt README.md
%license LICENSE
%{_libdir}/libprotobuf.so.22*
%{_libdir}/libprotobuf.so.%{so_version}{,.*}
%files compiler
%doc README.md
%license LICENSE
%{_bindir}/protoc
%{_libdir}/libprotoc.so.22*
%{_emacs_sitelispdir}/%{name}/
%{_emacs_sitestartdir}/protobuf-init.el
%{_mandir}/man1/protoc.1*
%{_libdir}/libprotoc.so.%{so_version}{,.*}
%files devel
%dir %{_includedir}/google
@ -310,12 +430,18 @@ install -p -m 0644 %{SOURCE2} %{buildroot}%{_emacs_sitestartdir}
%{_libdir}/pkgconfig/protobuf.pc
%doc examples/add_person.cc examples/addressbook.proto examples/list_people.cc examples/Makefile examples/README.md
%files emacs
%license LICENSE
%{_emacs_sitelispdir}/%{name}/
%{_emacs_sitestartdir}/protobuf-init.el
%files static
%{_libdir}/libprotobuf.a
%{_libdir}/libprotoc.a
%files lite
%{_libdir}/libprotobuf-lite.so.22*
%license LICENSE
%{_libdir}/libprotobuf-lite.so.%{so_version}{,.*}
%files lite-devel
%{_libdir}/libprotobuf-lite.so
@ -325,16 +451,25 @@ install -p -m 0644 %{SOURCE2} %{buildroot}%{_emacs_sitestartdir}
%{_libdir}/libprotobuf-lite.a
%if %{with python}
%files -n python%{python3_pkgversion}-protobuf
%files -n python3-protobuf
%if %{with python_cpp}
%dir %{python3_sitearch}/google
%{python3_sitearch}/google/protobuf/
%{python3_sitearch}/protobuf-%{version}%{?rcver}-py3.*.egg-info/
%{python3_sitearch}/protobuf-%{version}%{?rcver}-py3.*-nspkg.pth
%else
%license LICENSE
%dir %{python3_sitelib}/google
%{python3_sitelib}/google/protobuf/
%{python3_sitelib}/protobuf-%{version}%{?rcver}-py3.*.egg-info/
%{python3_sitelib}/protobuf-%{version}%{?rcver}-py3.*-nspkg.pth
%endif
%doc python/README.md
%doc examples/add_person.py examples/list_people.py examples/addressbook.proto
%endif
%files vim
%license LICENSE
%{_datadir}/vim/vimfiles/ftdetect/proto.vim
%{_datadir}/vim/vimfiles/syntax/proto.vim
@ -345,6 +480,7 @@ install -p -m 0644 %{SOURCE2} %{buildroot}%{_emacs_sitestartdir}
%license LICENSE
%files java-util -f .mfiles-protobuf-java-util
%license LICENSE
%files javadoc -f .mfiles-javadoc
%license LICENSE
@ -361,6 +497,107 @@ install -p -m 0644 %{SOURCE2} %{buildroot}%{_emacs_sitestartdir}
%changelog
* Fri Jan 20 2023 Fedora Release Engineering <releng@fedoraproject.org> - 3.19.6-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
* Wed Dec 07 2022 Benjamin A. Beasley <code@musicinmybrain.net> - 3.19.6-1
- Update to 3.19.6; fix CVE-2022-3171
* Wed Dec 07 2022 Benjamin A. Beasley <code@musicinmybrain.net> - 3.19.5-1
- Update to 3.19.5; fix CVE-2022-1941
* Sun Dec 04 2022 Benjamin A. Beasley <code@musicinmybrain.net> - 3.19.4-7
- Update License to SPDX
- Improved handling of gtest sources
- Update/correct gtest commit hash to match upstream
- Simplify the Source0 URL with a macro
- Drop manual dependency on python3-six, no longer needed
- Drop obsolete python_provide macro
- Drop python3_pkgversion macro
- Update summary and description to refer to “Python” instead of “Python 3”
- Re-enable compiled Python extension on Python 3.11
- Ensure all subpackages always have LICENSE, or depend on something that does
- Remove obsolete ldconfig_scriptlets macros
- The -vim subpackage now depends on vim-filesystem, no longer on vim-enhanced
- Add a man page for protoc
- Use a macro to avoid repeating the .so version, and improve .so globs
* Sun Aug 14 2022 Orion Poplawski <orion@nwra.com> - 3.19.4-6
- Build python support with C++ (bz#2107921)
* Fri Jul 22 2022 Fedora Release Engineering <releng@fedoraproject.org> - 3.19.4-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
* Wed Jul 06 2022 Benjamin A. Beasley <code@musicinmybrain.net> - 3.19.4-4
- Exclude java subpackages on non-java arches (fix RHBZ#2104092)
- Obsolete java subpackages on non-java arches
* Mon Jun 13 2022 Python Maint <python-maint@redhat.com> - 3.19.4-3
- Rebuilt for Python 3.11
* Sun Feb 13 2022 Mamoru TASAKA <mtasaka@fedoraproject.org> - 3.19.4-2
- Add some --add-opens option for java17
- Restrict heap usage for mvn also on %%ix86
* Mon Feb 07 2022 Orion Poplawski <orion@nwra.com> - 3.19.4-1
- Update to 3.19.4
* Sat Feb 05 2022 Jiri Vanek <jvanek@redhat.com> - 3.19.0-4
- Rebuilt for java-17-openjdk as system jdk
* Fri Jan 21 2022 Fedora Release Engineering <releng@fedoraproject.org> - 3.19.0-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
* Wed Nov 10 2021 Orion Poplawski <orion@nwra.com> - 3.19.0-2
- Re-enable java
* Wed Oct 27 2021 Major Hayden <major@mhtx.net> - 3.19.0-1
- Update to 3.19.1
* Fri Oct 22 2021 Adrian Reber <adrian@lisas.de> - 3.18.1-2
- Disable tests that fail on 32bit arches
* Thu Oct 14 2021 Orion Poplawski <orion@nwra.com> - 3.18.1-1
- Update to 3.18.1
* Fri Jul 23 2021 Fedora Release Engineering <releng@fedoraproject.org> - 3.14.0-6
- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
* Fri Jun 04 2021 Python Maint <python-maint@redhat.com> - 3.14.0-5
- Rebuilt for Python 3.10
* Thu May 06 2021 Adrian Reber <adrian@lisas.de> - 3.14.0-4
- Reintroduce the emacs subpackage to avoid file conflicts between
protobuf-compiler.x86_64 and protobuf-compiler.i686
* Tue Mar 30 2021 Jonathan Wakely <jwakely@redhat.com> - 3.14.0-3
- Rebuilt for removed libstdc++ symbol (#1937698)
* Wed Jan 27 2021 Fedora Release Engineering <releng@fedoraproject.org> - 3.14.0-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
* Mon Jan 04 2021 Adrian Reber <adrian@lisas.de> - 3.14.0-1
- Update to 3.14.0
* Wed Aug 26 2020 Charalampos Stratakis <cstratak@redhat.com> - 3.13.0-1
- Update to 3.13.0
* Sat Aug 01 2020 Fedora Release Engineering <releng@fedoraproject.org> - 3.12.3-4
- Second attempt - Rebuilt for
https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
* Tue Jul 28 2020 Fedora Release Engineering <releng@fedoraproject.org> - 3.12.3-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
* Sat Jul 11 2020 Jiri Vanek <jvanek@redhat.com> - 3.12.3-2
- Rebuilt for JDK-11, see https://fedoraproject.org/wiki/Changes/Java11
* Fri Jun 19 2020 Adrian Reber <adrian@lisas.de> - 3.12.3-2
- Update to 3.12.3
* Tue May 26 2020 Miro Hrončok <mhroncok@redhat.com> - 3.11.4-2
- Rebuilt for Python 3.9
* Tue Mar 31 2020 Adrian Reber <adrian@lisas.de> - 3.11.4-1
- Update to 3.11.4

193
protoc.1 Normal file
View File

@ -0,0 +1,193 @@
.TH protoc "1" "December 2022" protoc "User Commands"
.SH NAME
protoc \- Protobuf compiler
.SH SYNOPSIS
protoc
.RI [ OPTION ]
.I PROTO_FILES
.SH DESCRIPTION
.PP
Parse
.I PROTO_FILES
and generate output based on the options given.
.SH OPTIONS
.TP
.B \-I\fIPATH\fR, \fB\-\-proto_path=\fIPATH
Specify the directory in which to search for imports.
May be specified multiple times; directories will be searched in order.
If not given, the current working directory is used.
If not found in any of the these directories, the
.B \-\-descriptor_set_in
descriptors will be checked for required proto file.
.TP
.B \-\-version
Show version info and exit.
.TP
.B \-h\fR, \fB\-\-help
Show a help message and exit.
.TP
.BI \-\-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 be defined in
.I PROTO_FILES
or their imports.
.TP
.B \-\-deterministic_output
When using
.BR \-\-encode ,
ensure map fields are deterministically ordered.
Note that this order is not canonical,
and changes across builds or releases of
.BR protoc (1).
.TP
.BI \-\-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 be defined in
.I PROTO_FILES
or their imports.
.TP
.B \-\-decode_raw
Read an arbitrary protocol message
from standard input and write the raw tag/value pairs in text format
to standard output.
No
.I PROTO_FILES
should be given when using this flag.
.TP
.BI \-\-descriptor_set_in= FILES
Specifies a delimited list of
.I FILES
each containing a
.B FileDescriptorSet
(a protocol buffer defined in
.BR descriptor.proto ).
The
.B FileDescriptor
for each of the
.I PROTO_FILES
provided will be loaded from these
.BR FileDescriptorSets .
If a
.B FileDescriptor
appears multiple times, the first occurrence will be used.
.TP
.B \-o\fIFILE\fR, \fB\-\-descriptor_set_out=\fIFILE
Writes a
.B FileDescriptorSet
(a protocol buffer, defined in
.BR descriptor.proto )
containing all of the input files to
.IR FILE .
.TP
.B \-\-include_imports
When using
.BR \-\-descriptor_set_out ,
also include all dependencies of the input files in the set,
so that the set is self-contained.
.TP
.B \-\-include_source_info
When using
.BR \-\-descriptor_set_out ,
do not strip
.B SourceCodeInfo
from the
.BR FileDescriptorProto .
This results in vastly larger descriptors
that include information about the original location
of each decl in the source file
as well as surrounding comments.
.TP
.BI \-\-dependency_out= FILE
Write a dependency output file in the format expected by
.BR make (1).
This writes the transitive set of input file paths to
.I FILE
.TP
.BI \-\-error_format= FORMAT
Set the format in which to print errors.
.I FORMAT
may be
.RB \(oq gcc \(cq
(the default) or
.RP \(oq msvs \(cq
(Microsoft Visual Studio format).
.TP
.B \-\-fatal_warnings
Make warnings be fatal (similar to
.B \-Werr
in
.BR gcc (1)).
This flag will make
.BR protoc (1)
return with a non-zero exit code
if any warnings are generated.
.TP
.B \-\-print_free_field_numbers
Print the free field numbers of the messages
defined in the given proto files.
Groups share the same field number space with the parent message.
Extension ranges are counted as occupied fields numbers.
.TP
.BI \-\-plugin= EXECUTABLE
Specifies a plugin executable to use.
Normally,
.BR protoc (1)
searches the
.B PATH
for plugins, but you may specify additional executables
not in the path using this flag.
Additionally,
.I EXECUTABLE
may be of the form
.BR NAME=\fIPATH ,
in which case the given plugin name
is mapped to the given executable
even if the executable\(cqs own name differs.
.TP
.BI \-\-cpp_out= OUT_DIR
Generate C++ header and source.
.TP
.BI \-\-csharp_out= OUT_DIR
Generate C# source file.
.TP
.BI \-\-java_out= OUT_DIR
Generate Java source file.
.TP
.BI \-\-js_out= OUT_DIR
Generate JavaScript source.
.TP
.BI \-\-kotlin_out= OUT_DIR
Generate Kotlin file.
.TP
.BI \-\-objc_out= OUT_DIR
Generate Objective-C header and source.
.TP
.BI \-\-php_out= OUT_DIR
Generate PHP source file.
.TP
.BI \-\-python_out= OUT_DIR
Generate Python source file.
.TP
.BI \-\-ruby_out= OUT_DIR
Generate Ruby source file.
.TP
.BI @ <filename>
Read options and filenames from file.
If a relative file path is specified,
the file will be searched in the working directory.
The
.B \-\-proto_path
option will not affect how this argument file is searched.
Content of the file will be expanded in the position of
.BI @ <filename>
as in the argument list.
Note that shell expansion is not applied to the content of the file
(i.e., you cannot use quotes, wildcards, escapes, commands, etc.).
Each line corresponds to a single argument, even if it contains spaces.
.SH "SEE ALSO"
.BR make (1),
.BR gcc (1)

View File

@ -1,2 +1,2 @@
SHA512 (protobuf-3.11.4-all.tar.gz) = 777bbb0e9e2375eaebe6b8c87abd660bac70ee469c9ad00dd25917b82d7fb5bbe33cf87f0d69c90e19d55c07a7285ec20974ba4768623ce9ccfadf147fd5e261
SHA512 (5ec7f0c4a113e2f18ac2c6cc7df51ad6afc24081.zip) = ba904f3a0b606357873db938986b0abf37425a65501340fe81f73f9c5d05f542429662fe71c0b10e4796cb6335ae9a687fc9fb21084f2f5bfd2ede79977f5821
SHA512 (protobuf-3.19.6-all.tar.gz) = 8f92242f2be8e1bbfba41341c87709ad91ad83b8b3e3df88bb430411541d3399295f49291fd52b50e3487b0fce33181cb4d175685fd25aac72adfaee26a612d4
SHA512 (googletest-5ec7f0c4a113e2f18ac2c6cc7df51ad6afc24081.tar.gz) = 623b077b3334958fafcbc34aa85891883277994af33be530efd903f47738a3e3562001cbf3b6da1a5e7d03803c5bd51bcc1fab81490db85d5a4f2b15e7de1495