Compare commits

...

19 Commits

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
5 changed files with 462 additions and 35 deletions

4
.gitignore vendored
View File

@ -22,3 +22,7 @@ protobuf-2.3.0.tar.bz2
/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,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,12 +1,8 @@
# Build -python subpackage
%bcond_without python
# Build -python subpackage with C++
# Not compatible with Python 3.11
%if 0%{?fedora} >= 37
%bcond_with python_cpp
%else
# Build -python subpackage with C++. This significantly improves performance
# compared to the pure-Python implementation.
%bcond_without python_cpp
%endif
# Build -java subpackage
%ifarch %{java_arches}
%bcond_without java
@ -18,15 +14,60 @@
Summary: Protocol Buffers - Google's data interchange format
Name: protobuf
Version: 3.19.4
Release: 6%{?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
@ -37,14 +78,31 @@ Patch2: disable-tests-on-32-bit-systems.patch
# 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: make
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}
@ -130,12 +188,11 @@ 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
BuildRequires: python%{python3_pkgversion}-devel
BuildRequires: python%{python3_pkgversion}-setuptools
BuildRequires: python%{python3_pkgversion}-wheel
Requires: python%{python3_pkgversion}-six >= 1.9
%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
@ -144,16 +201,18 @@ BuildArch: noarch
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
@ -240,7 +299,13 @@ descriptions in the Emacs editor.
%patch2 -p0
%endif
%patch3 -p1 -b .jre17
mv googletest-5ec7f0c4a113e2f18ac2c6cc7df51ad6afc24081/* third_party/googletest/
%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}
@ -321,6 +386,9 @@ fail=1
%make_install %{?_smp_mflags} STRIPBINARIES=no INSTALL="%{__install} -p" CPPROG="cp -p"
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
%py3_install %{?with_python_cpp:-- --cpp_implementation}
@ -342,20 +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.30*
%{_libdir}/libprotobuf.so.%{so_version}{,.*}
%files compiler
%doc README.md
%license LICENSE
%{_bindir}/protoc
%{_libdir}/libprotoc.so.30*
%{_mandir}/man1/protoc.1*
%{_libdir}/libprotoc.so.%{so_version}{,.*}
%files devel
%dir %{_includedir}/google
@ -366,6 +431,7 @@ install -p -m 0644 %{SOURCE2} %{buildroot}%{_emacs_sitestartdir}
%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
@ -374,7 +440,8 @@ install -p -m 0644 %{SOURCE2} %{buildroot}%{_emacs_sitestartdir}
%{_libdir}/libprotoc.a
%files lite
%{_libdir}/libprotobuf-lite.so.30*
%license LICENSE
%{_libdir}/libprotobuf-lite.so.%{so_version}{,.*}
%files lite-devel
%{_libdir}/libprotobuf-lite.so
@ -384,13 +451,14 @@ 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/
@ -401,6 +469,7 @@ install -p -m 0644 %{SOURCE2} %{buildroot}%{_emacs_sitestartdir}
%endif
%files vim
%license LICENSE
%{_datadir}/vim/vimfiles/ftdetect/proto.vim
%{_datadir}/vim/vimfiles/syntax/proto.vim
@ -411,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
@ -427,6 +497,31 @@ 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)

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.19.4-all.tar.gz) = 2653b9852e5ac69f1de9b6ac02887c366aa0a9efd2b29e53135f61a9a10f5a1b5853a8c4cbb3658f519dfdbde9f32c547c39751ab417f123162b08be9e76c9e1
SHA512 (5ec7f0c4a113e2f18ac2c6cc7df51ad6afc24081.zip) = ba904f3a0b606357873db938986b0abf37425a65501340fe81f73f9c5d05f542429662fe71c0b10e4796cb6335ae9a687fc9fb21084f2f5bfd2ede79977f5821
SHA512 (protobuf-3.19.6-all.tar.gz) = 8f92242f2be8e1bbfba41341c87709ad91ad83b8b3e3df88bb430411541d3399295f49291fd52b50e3487b0fce33181cb4d175685fd25aac72adfaee26a612d4
SHA512 (googletest-5ec7f0c4a113e2f18ac2c6cc7df51ad6afc24081.tar.gz) = 623b077b3334958fafcbc34aa85891883277994af33be530efd903f47738a3e3562001cbf3b6da1a5e7d03803c5bd51bcc1fab81490db85d5a4f2b15e7de1495