2021-03-22 22:34:21 +00:00
# We need to use C++17 to link against the system abseil-cpp, or we get linker
# errors.
%global cpp_std 17
2021-03-15 13:02:16 +00:00
2021-06-10 15:00:02 +00:00
# Bootstrapping breaks the circular dependency on python3dist(xds-protos),
# which is packaged separately but ultimately generated from grpc sources using
# the proto compilers in this package; the consequence is that we cannot build
# the python3-grpcio-admin or python3-grpcio-csds, or the Python documentation,
# until after bootstrapping.
%bcond_with bootstrap
2021-03-15 13:02:16 +00:00
# However, gtest in Fedora uses the C++11 ABI, so we get linker errors building
# the tests if we use C++17. We must therefore bundle a copy of gtest in the
# source RPM rather than using the system copy. This is to be discouraged, but
# there is no alternative in this case. It is not treated as a bundled library
2021-06-10 15:00:02 +00:00
# because it is used only at build time, and contributes nothing to the
# installed files.
2021-06-30 14:54:56 +00:00
%global gtest_version 1.11.0
2021-03-22 22:34:21 +00:00
%bcond_with system_gtest
2021-03-15 13:02:16 +00:00
2021-03-22 22:34:21 +00:00
# This must be enabled to get grpc_cli, which is apparently considered part of
# the tests by upstream. This is mentioned in
# https://github.com/grpc/grpc/issues/23432.
%bcond_without core_tests
2021-02-03 00:33:37 +00:00
2021-08-11 02:19:32 +00:00
# A number failing Python tests are skipped without understanding. This lets
# us easily re-enable them to try to work toward a fix or a useful upstream bug
# report.
#
# Note that some failing tests fail only with a particular test suite
# (test_lite/test_gevent/etc.); it is not easy for us to skip tests based on
# which test suite is running them, so we skip a test if it fails in any suite.
%bcond_with unexplained_failing_python_tests
2021-03-21 21:53:01 +00:00
# A great many of these tests (over 20%) fail. Any help in understanding these
# well enough to fix them or report them upstream is welcome.
%bcond_with python_aio_tests
2021-08-11 02:19:32 +00:00
%ifnarch s390x
%bcond_without python_gevent_tests
%else
# A signficant number of Python tests pass in test_lite but fail in
# test_gevent, mostly by dumping core without a traceback. Since it is tedious
# to enumerate these (and it is difficult to implement “suite-specific” skips
# for shared tests, so the tests would have to be skipped in all suites), we
# just skip the gevent suite entirely on this architecture.
2021-03-21 21:53:01 +00:00
%bcond_with python_gevent_tests
2021-08-11 02:19:32 +00:00
%endif
2021-03-21 21:53:01 +00:00
2021-02-02 13:20:44 +00:00
Name : grpc
2021-08-19 20:41:42 +00:00
Version : 1.39.1
2021-07-20 20:53:45 +00:00
Release : %autorelease
2021-02-02 13:20:44 +00:00
Summary : RPC library and framework
2021-03-15 12:37:56 +00:00
# CMakeLists.txt: gRPC_CORE_SOVERSION
2021-06-10 15:00:02 +00:00
%global c_so_version 18
2021-03-15 12:37:56 +00:00
# CMakeLists.txt: gRPC_CPP_SOVERSION
2021-06-10 15:00:02 +00:00
%global cpp_so_version 1.39
2021-03-15 12:37:56 +00:00
# CMakeLists.txt: gRPC_CSHARP_SOVERSION
2021-06-10 15:00:02 +00:00
%global csharp_so_version 2.39
2021-05-21 15:01:38 +00:00
# See https://github.com/abseil/abseil-cpp/issues/950#issuecomment-843169602
# regarding unusual SOVERSION style (not a single number).
2021-03-15 12:37:56 +00:00
2021-02-02 13:20:44 +00:00
# The entire source is ASL 2.0 except the following:
#
# BSD:
# - third_party/upb/, except third_party/upb/third_party/lunit/
# * Potentially linked into any compiled subpackage (but not -doc,
# pure-Python subpackages, etc.)
# - third_party/address_sorting/
# * Potentially linked into any compiled subpackage (but not -doc,
# pure-Python subpackages, etc.)
#
# as well as the following which do not contribute to the base License field or
# any subpackage License field for the reasons noted:
#
# MPLv2.0:
# - etc/roots.pem
# * Truncated to an empty file in prep; a symlink to the shared system
# certificates is used instead
# - src/android/test/interop/app/src/main/assets/roots.pem
# * Truncated to an empty file in prep
# ISC:
# - src/boringssl/crypto_test_data.cc and src/boringssl/err_data.c
# * Removed in prep; not used when building with system OpenSSL
# BSD:
2021-03-22 22:34:21 +00:00
# - src/objective-c/*.podspec and
# templates/src/objective-c/*.podspec.template
2021-02-02 13:20:44 +00:00
# * Unused since the Objective-C bindings are not currently built
# MIT:
# - third_party/cares/ares_build.h
# * Removed in prep; header from system C-Ares used instead
# - third_party/rake-compiler-dock/
# * Removed in prep, since we build no containers
# - third_party/upb/third_party/lunit/
# * Removed in prep, since there is no obvious way to run the upb tests
License : ASL 2.0 and BSD
URL : https://www.%{name} .io
%global forgeurl https://github.com/%{name} /%{name} /
Source0 : %{forgeurl} /archive/v%{version} /%{name} -%{version} .tar.gz
2021-03-15 13:02:16 +00:00
# Used only at build time (not a bundled library); see notes at definition of
# gtest_version macro for explanation and justification.
2021-03-26 00:24:52 +00:00
%global gtest_url https://github.com/google/googletest
%global gtest_archivename googletest-release-%{gtest_version}
Source1 : https://github.com/google/googletest/archive/release-%{gtest_version} /%{gtest_archivename} .tar.gz
2021-02-02 13:20:44 +00:00
2021-03-22 22:34:21 +00:00
# Downstream grpc_cli man pages; hand-written based on “grpc_cli help” output.
Source100 : %{name} _cli.1
Source101 : %{name} _cli-ls.1
Source102 : %{name} _cli-call.1
Source103 : %{name} _cli-type.1
Source104 : %{name} _cli-parse.1
Source105 : %{name} _cli-totext.1
Source106 : %{name} _cli-tojson.1
Source107 : %{name} _cli-tobinary.1
Source108 : %{name} _cli-help.1
2021-02-02 13:20:44 +00:00
# ~~~~ C (core) and C++ (cpp) ~~~~
BuildRequires : gcc-c++
2021-02-03 00:33:37 +00:00
BuildRequires : cmake
BuildRequires : ninja-build
2021-03-22 22:34:21 +00:00
%if %{with core_tests}
# Used on grpc_cli:
2021-02-02 13:20:44 +00:00
BuildRequires : chrpath
2021-03-22 22:34:21 +00:00
%endif
2021-02-02 13:20:44 +00:00
2021-03-15 12:45:20 +00:00
BuildRequires : pkgconfig(zlib)
BuildRequires : cmake(gflags)
BuildRequires : pkgconfig(protobuf)
2021-02-02 13:20:44 +00:00
BuildRequires : protobuf-compiler
2021-03-22 22:34:21 +00:00
BuildRequires : pkgconfig(re2)
2021-03-15 12:45:20 +00:00
BuildRequires : pkgconfig(openssl)
BuildRequires : cmake(c-ares)
2021-03-22 22:34:21 +00:00
BuildRequires : abseil-cpp-devel
2021-06-10 12:12:44 +00:00
# Sets XXH_INCLUDE_ALL, which means xxhash is used as a header-only library
2021-06-14 22:30:59 +00:00
BuildRequires : pkgconfig(libxxhash)
BuildRequires : xxhash-static
2021-03-22 22:34:21 +00:00
# Header-only C library, which we unbundle from the bundled copy of upb
BuildRequires : wyhash_final1-devel
BuildRequires : wyhash_final1-static
2021-02-03 00:33:37 +00:00
%if %{with core_tests}
2021-03-15 12:45:20 +00:00
BuildRequires : cmake(benchmark)
2021-03-15 13:02:16 +00:00
%if %{with system_gtest}
2021-03-15 12:45:20 +00:00
BuildRequires : cmake(gtest)
BuildRequires : pkgconfig(gmock)
2021-02-03 00:33:37 +00:00
%endif
2021-03-15 13:02:16 +00:00
%endif
2021-02-02 13:20:44 +00:00
# ~~~~ Python ~~~~
BuildRequires : python3-devel
2021-04-03 12:18:11 +00:00
BuildRequires : python3dist(setuptools)
# grpcio (setup.py) setup_requires (with
# GRPC_PYTHON_ENABLE_DOCUMENTATION_BUILD):
BuildRequires : python3dist(sphinx)
# grpcio (setup.py) setup_requires (with
# GRPC_PYTHON_ENABLE_DOCUMENTATION_BUILD):
# grpcio_tests (src/python/grpcio_tests/setup.py) install_requires:
BuildRequires : python3dist(six) >= 1.10
# grpcio (setup.py) install_requires also has:
# six>=1.5.2
# grpcio (setup.py) setup_requires (with GRPC_PYTHON_BUILD_WITH_CYTHON, or
# absent generated sources); also needed for grpcio_tools
# (tools/distrib/python/grpcio_tools/setup.py)
2021-02-02 13:20:44 +00:00
BuildRequires : python3dist(cython)
2021-04-03 12:18:11 +00:00
# grpcio (setup.py) install_requires:
# grpcio_tests (src/python/grpcio_tests/setup.py) install_requires:
# futures>=2.2.0; python_version<'3.2'
# grpcio (setup.py) install_requires:
# grpcio_tests (src/python/grpcio_tests/setup.py) install_requires:
# enum34>=1.0.4; python_version<'3.4'
2021-06-10 15:00:02 +00:00
# grpcio_csds (src/python/grpcio_csds/setup.py) install_requires:
2021-04-03 12:18:11 +00:00
# grpcio_channelz (src/python/grpcio_channelz/setup.py) install_requires:
# grpcio_health_checking (src/python/grpcio_health_checking/setup.py)
# install_requires:
# grpcio_reflection (src/python/grpcio_reflection/setup.py) install_requires:
# grpcio_status (src/python/grpcio_status/setup.py) install_requires:
# grpcio_testing (src/python/grpcio_testing/setup.py) install_requires:
# grpcio_tests (src/python/grpcio_tests/setup.py) install_requires:
BuildRequires : python3dist(protobuf) >= 3.6.0
# grpcio_tools (tools/distrib/python/grpcio_tools/setup.py) install_requires
# also has:
# protobuf>=3.5.0.post1
# which is written as
# python3dist(protobuf) >= 3.5^post1
# grpcio_status (src/python/grpcio_status/setup.py) install_requires:
BuildRequires : python3dist(googleapis-common-protos) >= 1.5.5
2021-06-10 15:00:02 +00:00
%if %{without bootstrap}
# grpcio_csds (src/python/grpcio_csds/setup.py) install_requires
BuildRequires : python3dist(xds-protos) >= 0.0.7
%endif
2021-04-03 12:18:11 +00:00
# Several packages have dependencies on grpcio or grpcio_tools—and grpcio-tests
# depends on all of the other Python packages—which are satisfied within this
# package.
2021-06-10 15:00:02 +00:00
#
# Similarly, grpcio_admin depends on grpcio_channelz and grpcio_csds.
2021-04-03 12:18:11 +00:00
# grpcio_tests (src/python/grpcio_tests/setup.py) install_requires:
BuildRequires : python3dist(coverage) >= 4.0
# grpcio_tests (src/python/grpcio_tests/setup.py) install_requires:
BuildRequires : python3dist(oauth2client) >= 1.4.7
# grpcio_tests (src/python/grpcio_tests/setup.py) install_requires:
BuildRequires : python3dist(google-auth) >= 1.0.0
# grpcio_tests (src/python/grpcio_tests/setup.py) install_requires:
BuildRequires : python3dist(requests) >= 2.4.12
2021-03-15 13:24:04 +00:00
# Required for “test_gevent” tests:
BuildRequires : python3dist(gevent)
2021-02-02 13:20:44 +00:00
2021-03-22 22:34:21 +00:00
# For stopping the port server
BuildRequires : curl
2021-02-02 13:20:44 +00:00
# ~~~~ Miscellaneous ~~~~
# https://bugzilla.redhat.com/show_bug.cgi?id=1893533
%global _lto_cflags %{nil}
2021-03-22 13:35:13 +00:00
# Reference documentation
BuildRequires : doxygen
2021-02-02 13:20:44 +00:00
BuildRequires : ca-certificates
# For converting absolute symlinks in the buildroot to relative ones
BuildRequires : symlinks
BuildRequires : dos2unix
2021-03-15 12:30:31 +00:00
# Apply Fedora system crypto policies. Since this is Fedora-specific, the patch
# is not suitable for upstream.
2021-02-02 13:20:44 +00:00
# https://docs.fedoraproject.org/en-US/packaging-guidelines/CryptoPolicies/#_cc_applications
2021-06-10 15:00:02 +00:00
#
# In fact, this may not be needed, since only testing code is patched.
Patch0 : %{name} -1.39.0-system-crypto-policies.patch
2021-03-22 22:34:21 +00:00
# Add an option GRPC_PYTHON_BUILD_SYSTEM_ABSL to go with the gRPC_ABSL_PROVIDER
# option already provided upstream. See
# https://github.com/grpc/grpc/issues/25559.
2021-08-19 20:41:42 +00:00
Patch1 : %{name} -1.37.0-python-grpcio-use-system-abseil.patch
2021-03-15 13:20:37 +00:00
# Fix errors like:
# TypeError: super(type, obj): obj must be an instance or subtype of type
# It is not clear why these occur.
2021-08-19 20:41:42 +00:00
Patch2 : %{name} -1.36.4-python-grpcio_tests-fixture-super.patch
2021-03-15 13:20:37 +00:00
# Skip tests requiring non-loopback network access when the
# FEDORA_NO_NETWORK_TESTS environment variable is set.
2021-08-19 20:41:42 +00:00
Patch3 : %{name} -1.36.4-python-grpcio_tests-make-network-tests-skippable.patch
2021-03-15 13:20:37 +00:00
# A handful of compression tests miss the compression ratio threshold. It seems
# to be inconsistent which particular combinations fail in a particular test
# run. It is not clear that this is a real problem. Any help in understanding
# the actual cause well enough to fix this or usefully report it upstream is
# welcome.
2021-08-19 20:41:42 +00:00
Patch4 : %{name} -1.36.4-python-grpcio_tests-skip-compression-tests.patch
2021-03-22 22:34:21 +00:00
# The upstream requirement to link gtest/gmock from grpc_cli is spurious.
# Remove it. We still have to build the core tests and link a test library
# (libgrpc++_test_config.so…)
2021-08-19 20:41:42 +00:00
Patch5 : %{name} -1.37.0-grpc_cli-do-not-link-gtest-gmock.patch
2021-06-10 15:00:02 +00:00
# Fix confusion about path to python_wrapper.sh in httpcli/httpscli tests. I
# suppose that the unpatched code must be correct for how upstream runs the
# tests, somehow.
2021-08-19 20:41:42 +00:00
Patch6 : %{name} -1.39.0-python_wrapper-path.patch
2021-06-10 15:00:02 +00:00
# Port Python 2 scripts used in core tests to Python 3
2021-08-19 20:41:42 +00:00
Patch7 : %{name} -1.39.0-python2-test-scripts.patch
2021-02-02 13:20:44 +00:00
Requires : %{name} -data = %{version} -%{release}
# Upstream https://github.com/protocolbuffers/upb does not support building
# with anything other than Bazel, and Bazel is not likely to make it into
# Fedora anytime soon due to its nightmarish collection of dependencies.
# Monitor this at https://bugzilla.redhat.com/show_bug.cgi?id=1470842.
2021-03-22 22:34:21 +00:00
# Therefore upb cannot be packaged for Fedora, and we must use the bundled
# copy.
2021-02-02 13:20:44 +00:00
#
# Note that upstream has never chosen a version, and it is not clear from which
# commit the bundled copy was taken or forked.
#
# Note also that libupb is installed in the system-wide linker path, which will
# be a problem if upb is ever packaged separately. We will cross that bridge if
# we get there.
Provides : bundled(upb)
# Regarding third_party/address_sorting: this looks a bit like a bundled
# library, but it is not. From a source file comment:
# This is an adaptation of Android's implementation of RFC 6724 (in Android’ s
# getaddrinfo.c). It has some cosmetic differences from Android’ s
# getaddrinfo.c, but Android’ s getaddrinfo.c was used as a guide or example
# of a way to implement the RFC 6724 spec when this was written.
2018-12-17 10:46:12 +00:00
2018-12-07 08:01:19 +00:00
%description
gRPC is a modern open source high performance RPC framework that can run in any
environment. It can efficiently connect services in and across data centers
with pluggable support for load balancing, tracing, health checking and
authentication. It is also applicable in last mile of distributed computing to
connect devices, mobile applications and browsers to backend services.
The main usage scenarios:
2021-03-22 22:34:21 +00:00
• Efficiently connecting polyglot services in microservices style
architecture
2021-03-15 12:35:28 +00:00
• Connecting mobile devices, browser clients to backend services
• Generating efficient client libraries
2018-12-07 08:01:19 +00:00
Core Features that make it awesome:
2021-03-15 12:35:28 +00:00
• Idiomatic client libraries in 10 languages
• Highly efficient on wire and with a simple service definition framework
• Bi-directional streaming with http/2 based transport
• Pluggable auth, tracing, load balancing and health checking
2021-02-02 13:20:44 +00:00
This package provides the shared C core library.
%package data
Summary : Data for gRPC bindings
License : ASL 2.0
BuildArch : noarch
Requires : ca-certificates
%description data
Common data for gRPC bindings: currently, this contains only a symbolic link to
the system shared TLS certificates.
%package doc
Summary : Documentation and examples for gRPC
License : ASL 2.0
BuildArch : noarch
2021-03-22 13:35:13 +00:00
Obsoletes : python-grpcio-doc < 1.26.0-13
Provides : python-grpcio-doc = %{version} -%{release}
2021-06-10 15:00:02 +00:00
%if %{without bootstrap}
Provides : python-grpcio-admin-doc = %{version} -%{release}
Provides : python-grpcio-csds-doc = %{version} -%{release}
2021-03-22 13:35:13 +00:00
Provides : python-grpcio-channelz-doc = %{version} -%{release}
Provides : python-grpcio-health-checking-doc = %{version} -%{release}
Provides : python-grpcio-reflection-doc = %{version} -%{release}
Provides : python-grpcio-status-doc = %{version} -%{release}
Provides : python-grpcio-testing-doc = %{version} -%{release}
2021-06-10 15:00:02 +00:00
%endif
2021-03-22 13:35:13 +00:00
2021-02-02 13:20:44 +00:00
%description doc
2021-03-22 13:35:13 +00:00
Documentation and examples for gRPC, including documentation for the following:
• C (core)
○ API
○ Internals
• C++
○ API
○ Internals
• Objective C
○ API
○ Internals
• Python
○ grpcio
2021-06-10 15:00:02 +00:00
○ grpcio_admin
○ grpcio_csds
2021-03-22 13:35:13 +00:00
○ grpcio_channelz
○ grpcio_health_checking
○ grpcio_reflection
○ grpcio_status
○ grpcio_testing
2021-02-02 13:20:44 +00:00
%package cpp
Summary : C++ language bindings for gRPC
# License: same as base package
Requires : %{name} %{?_isa} = %{version} -%{release}
%description cpp
C++ language bindings for gRPC.
2018-12-07 08:01:19 +00:00
%package plugins
2021-02-02 13:20:44 +00:00
Summary : Protocol buffers compiler plugins for gRPC
# License: same as base package
Requires : %{name} %{?_isa} = %{version} -%{release}
Requires : protobuf-compiler
2018-12-07 08:01:19 +00:00
%description plugins
Plugins to the protocol buffers compiler to generate gRPC sources.
2021-02-02 13:20:44 +00:00
2018-12-07 08:01:19 +00:00
%package cli
2021-02-02 13:20:44 +00:00
Summary : Command-line tool for gRPC
# License: same as base package
Requires : %{name} %{?_isa} = %{version} -%{release}
2018-12-07 08:01:19 +00:00
%description cli
2021-02-02 13:20:44 +00:00
The command line tool can do the following things:
2021-03-15 12:35:28 +00:00
• Send unary rpc.
• Attach metadata and display received metadata.
• Handle common authentication to server.
• Infer request/response types from server reflection result.
• Find the request/response types from a given proto file.
• Read proto request in text form.
• Read request in wire form (for protobuf messages, this means serialized
2021-02-02 13:20:44 +00:00
binary form).
2021-03-15 12:35:28 +00:00
• Display proto response in text form.
• Write response in wire form to a file.
2021-02-02 13:20:44 +00:00
2018-12-07 08:01:19 +00:00
%package devel
2021-02-02 13:20:44 +00:00
Summary : Development files for gRPC library
# License: same as base package
Requires : %{name} %{?_isa} = %{version} -%{release}
Requires : %{name} -cpp%{?_isa} = %{version} -%{release}
2021-03-22 22:34:21 +00:00
2021-03-15 12:52:18 +00:00
Requires : cmake-filesystem
2018-12-07 08:01:19 +00:00
2021-03-22 22:34:21 +00:00
# grpc/impl/codegen/port_platform.h includes linux/version.h
Requires : kernel-headers%{?_isa}
# grpcpp/impl/codegen/config_protobuf.h includes google/protobuf/…
Requires : pkgconfig(protobuf)
# grpcpp/test/mock_stream.h includes gmock/gmock.h
Requires : pkgconfig(gmock)
# grpcpp/impl/codegen/sync.h includes absl/synchronization/mutex.h
# grpc.pc has -labsl_[…]
Requires : abseil-cpp-devel%{?_isa}
# grpc.pc has -lre2
Requires : pkgconfig(re2)
# grpc.pc has -lcares
Requires : cmake(c-ares)
# grpc.pc has -lz
Requires : pkgconfig(zlib)
2018-12-07 08:01:19 +00:00
%description devel
2021-02-02 13:20:44 +00:00
Development headers and files for gRPC libraries (both C and C++).
2018-12-07 08:01:19 +00:00
2018-12-14 19:51:14 +00:00
%package -n python3-grpcio
2021-02-02 13:20:44 +00:00
Summary : Python language bindings for gRPC
# License: same as base package
# Note that the Python package has no runtime dependency on the base C library;
# everything it needs is bundled.
Requires : %{name} -data = %{version} -%{release}
2018-12-14 19:51:14 +00:00
%description -n python3-grpcio
2021-02-02 13:20:44 +00:00
Python language bindings for gRPC (HTTP/2-based RPC framework).
%package -n python3-grpcio-tools
Summary : Package for gRPC Python tools
# License: same as base package
%description -n python3-grpcio-tools
Package for gRPC Python tools.
2021-06-10 15:00:02 +00:00
%if %{without bootstrap}
%package -n python3-grpcio-admin
Summary : A collection of admin services
License : ASL 2.0
BuildArch : noarch
%description -n python3-grpcio-admin
gRPC Python Admin Interface Package
===================================
Debugging gRPC library can be a complex task. There are many configurations and
internal states, which will affect the behavior of the library. This Python
package will be the collection of admin services that are exposing debug
information. Currently, it includes:
* Channel tracing metrics (grpcio-channelz)
* Client Status Discovery Service (grpcio-csds)
Here is a snippet to create an admin server on " l o c a l h o s t : 5 0 0 5 1 " :
server = grpc.server(ThreadPoolExecutor())
port = server.add_insecure_port('localhost:50051' )
grpc_admin.add_admin_servicers(self._server)
server.start()
Welcome to explore the admin services with CLI tool " g r p c d e b u g " :
https://github.com/grpc-ecosystem/grpcdebug.
For any issues or suggestions, please send to
https://github.com/grpc/grpc/issues.
%endif
%if %{without bootstrap}
%package -n python3-grpcio-csds
Summary : xDS configuration dump library
License : ASL 2.0
BuildArch : noarch
%description -n python3-grpcio-csds
gRPC Python Client Status Discovery Service package
===================================================
CSDS is part of the Envoy xDS protocol:
https://www.envoyproxy.io/docs/envoy/latest/api-v3/service/status/v3/csds.proto.
It allows the gRPC application to programmatically expose the received traffic
configuration (xDS resources). Welcome to explore with CLI tool " g r p c d e b u g " :
https://github.com/grpc-ecosystem/grpcdebug.
For any issues or suggestions, please send to
https://github.com/grpc/grpc/issues.
%endif
2021-02-02 13:20:44 +00:00
%package -n python3-grpcio-channelz
Summary : Channel Level Live Debug Information Service for gRPC
License : ASL 2.0
BuildArch : noarch
%description -n python3-grpcio-channelz
2021-06-10 15:00:02 +00:00
gRPC Python Channelz package
============================
2021-02-02 13:20:44 +00:00
Channelz is a live debug tool in gRPC Python.
%package -n python3-grpcio-health-checking
Summary : Standard Health Checking Service for gRPC
License : ASL 2.0
BuildArch : noarch
%description -n python3-grpcio-health-checking
2021-06-10 15:00:02 +00:00
gRPC Python Health Checking
===========================
2021-02-02 13:20:44 +00:00
Reference package for GRPC Python health checking.
%package -n python3-grpcio-reflection
Summary : Standard Protobuf Reflection Service for gRPC
License : ASL 2.0
BuildArch : noarch
%description -n python3-grpcio-reflection
2021-06-10 15:00:02 +00:00
gRPC Python Reflection package
==============================
2021-02-02 13:20:44 +00:00
Reference package for reflection in GRPC Python.
%package -n python3-grpcio-status
Summary : Status proto mapping for gRPC
License : ASL 2.0
BuildArch : noarch
%description -n python3-grpcio-status
2021-06-10 15:00:02 +00:00
gRPC Python Status Proto
===========================
2021-02-02 13:20:44 +00:00
Reference package for GRPC Python status proto mapping.
%package -n python3-grpcio-testing
Summary : Testing utilities for gRPC Python
License : ASL 2.0
BuildArch : noarch
%description -n python3-grpcio-testing
2021-06-10 15:00:02 +00:00
gRPC Python Testing Package
===========================
2021-02-02 13:20:44 +00:00
Testing utilities for gRPC Python.
2018-12-07 08:01:19 +00:00
%prep
2021-02-02 13:20:44 +00:00
%autosetup -p1
2021-08-19 20:41:42 +00:00
echo '===== Patching grpcio_tools for system protobuf =====' 2>&1
# Build python3-grpcio_tools against system protobuf packages instead of
# expecting a git submodule. Must also add requisite linker flags using
# GRPC_PYTHON_LDFLAGS. This was formerly done by
# grpc-VERSION-python-grpcio_tools-use-system-protobuf.patch, but it had to be
# tediously but trivially rebased every patch release as the CC_FILES list
# changed, so we automated the patch.
sed -r -i \
-e " s / ^ ( # A U T O - G E N E R A T E D . * ) / \\ 1 \\ n \
# Then, modified by hand to build with an external system protobuf\
# installation./" \
-e 's/^(CC_FILES=\[).*(\])/\1\2/' \
-e " s @ ^ ( ( C C | P R O T O ) _ I N C L U D E = ' ) [ ^ ' ] + ' @ \1 %{_includedir} ' @ " \
-e '/^PROTOBUF_SUBMODULE_VERSION=/d' \
'tools/distrib/python/grpcio_tools/protoc_lib_deps.py'
2021-06-10 15:00:02 +00:00
echo '===== Preparing gtest/gmock =====' 2>&1
2021-03-15 13:02:16 +00:00
%if %{without system_gtest}
# Copy in the needed gtest/gmock implementations.
%setup -q -T -D -b 1
rm -rvf 'third_party/googletest'
2021-03-26 00:24:52 +00:00
mv '../%{gtest_archivename}' 'third_party/googletest'
2021-03-15 13:02:16 +00:00
%else
# Patch CMakeLists for external gtest/gmock.
#
# 1. Create dummy sources, adding a typedef so the translation unit is not
# empty, rather than removing references to these sources from
# CMakeLists.txt. This is so that we do not end up with executables with no
# sources, only libraries, which is a CMake error.
# 2. Either remove references to the corresponding include directories, or
# create the directories and leave them empty.
# 3. “Stuff” the external library into the target_link_libraries() for each
# test by noting that GMock/GTest/GFlags are always used together.
for gwhat in test mock
do
mkdir -p " t h i r d _ p a r t y / g o o g l e t e s t / g o o g l e $ { g w h a t } / s r c " \
" t h i r d _ p a r t y / g o o g l e t e s t / g o o g l e $ { g w h a t } / i n c l u d e "
echo " t y p e d e f i n t d u m m y _ $ { g w h a t } _ t y p e ; " \
> " t h i r d _ p a r t y / g o o g l e t e s t / g o o g l e $ { g w h a t } / s r c / g $ { g w h a t } - a l l . c c "
done
sed -r -i 's/^([[:blank:]]*)(\$\{_gRPC_GFLAGS_LIBRARIES\})/' \
'\1\2\n\1gtest\n\1gmock/' CMakeLists.txt
%endif
2021-06-10 15:00:02 +00:00
echo '===== Removing bundled wyhash =====' 2>&1
2021-03-22 22:34:21 +00:00
# Remove bundled wyhash (via upb); to avoid patching the build system, simply
# use a symlink to find the system copy. This is sufficient since it is a
# header-only library.
rm -rvf third_party/upb/third_party/wyhash
ln -s %{_includedir} /wyhash_final1/ third_party/upb/third_party/wyhash
2021-06-10 15:00:02 +00:00
echo '===== Removing bundled xxhash =====' 2>&1
2021-03-22 22:34:21 +00:00
# Remove bundled xxhash
rm -rvf third_party/xxhash
2021-06-10 12:12:44 +00:00
# Since grpc sets XXH_INCLUDE_ALL wherever it uses xxhash, it is using xxhash
# as a header-only library. This means we can replace it with the system copy
# by doing nothing further; xxhash.h is in the system include path and will be
# found instead, and there are no linker flags to add. See also
# https://github.com/grpc/grpc/issues/25945.
2021-03-15 15:28:06 +00:00
2021-06-10 15:00:02 +00:00
echo '===== Fixing permissions =====' 2>&1
2021-02-02 13:20:44 +00:00
# Fix some of the weirdest accidentally-executable files
find . -type f -name '*.md' -perm /0111 -execdir chmod -v a-x '{}' '+'
2021-06-10 15:00:02 +00:00
echo '===== Loosening version specifications =====' 2>&1
2021-02-02 13:20:44 +00:00
# Allow building Python documentation with a newer Sphinx; the upstream version
# requirement is needlessly strict. (It is fine for upstream’ s own purposes, as
# they are happy to build documentation with a pinned old version.)
sed -r -i " s / ( ' S p h i n x ) ~ = . * ' / \1 ' / " setup.py
2021-06-10 15:00:02 +00:00
echo '===== Removing selected unused sources =====' 2>&1
2021-02-02 13:20:44 +00:00
# Remove unused sources that have licenses not in the License field, to ensure
# they are not accidentally used in the build. See the comment above the base
# package License field for more details.
rm -rfv \
src/boringssl/*.c src/boringssl/*.cc \
third_party/cares/ares_build.h \
third_party/rake-compiler-dock \
third_party/upb/third_party/lunit
# Since we are replacing roots.pem with a symlink to the shared system
# certificates, we do not include its license (MPLv2.0) in any License field.
# We remove its contents so that, if we make a packaging mistake, we will have
# a bug but not an incorrect License field.
echo '' > etc/roots.pem
# Remove Android sources and examples. We do not need these on Linux, and they
# have some issues that will be flagged when reviewing the package, such as:
# - Another copy of the MPLv2.0-licensed certificate bundle from
# etc/roots.pem, in src/android/test/interop/app/src/main/assets/roots.pem
# - Pre-built jar files at
# src/android/test/interop/gradle/wrapper/gradle-wrapper.jar and
# examples/android/helloworld/gradle/wrapper/gradle-wrapper.jar
rm -rvf examples/android src/android
# Remove unwanted .gitignore files, generally in examples. One could argue that
# a sample .gitignore file is part of the example, but, well, we’ re not going
# to do that.
find . -type f -name .gitignore -print -delete
2021-06-10 15:00:02 +00:00
echo '===== Fixing shebangs =====' 2>&1
2021-02-02 13:20:44 +00:00
# Find executables with /usr/bin/env shebangs in the examples, and fix them.
find examples -type f -perm /0111 |
while read -r fn
do
if head -n 1 " $ { f n } " | grep -E '^#!/usr/bin/env[[:blank:]]'
then
sed -r -i '1{s|^(#!/usr/bin/)env[[:blank:]]+([^[:blank:]]+)|\1\2|}' \
" $ { f n } "
fi
done
2021-06-10 15:00:02 +00:00
echo '===== Fixing line endings =====' 2>&1
2021-02-02 13:20:44 +00:00
# Fix some CRNL line endings:
dos2unix \
examples/cpp/helloworld/CMakeLists.txt \
examples/cpp/helloworld/cmake_externalproject/CMakeLists.txt
# We leave those under examples/csharp alone.
2021-06-10 15:00:02 +00:00
echo '===== Fixing hard-coded C++ standard =====' 2>&1
2021-03-22 22:34:21 +00:00
# We need to adjust the C++ standard to avoid abseil-related linker errors. For
# the main C++ build, we can use CMAKE_CXX_STANDARD. For extensions, examples,
# etc., we must patch.
sed -r -i 's/(std=c\+\+)11/\1%{cpp_std}/g' \
setup.py %{name} .gyp Rakefile \
examples/cpp/*/Makefile \
examples/cpp/*/CMakeLists.txt \
tools/run_tests/artifacts/artifact_targets.py \
tools/distrib/python/grpcio_tools/setup.py
2021-06-10 15:00:02 +00:00
echo '===== Fixing .pc install path =====' 2>&1
2021-03-15 13:27:03 +00:00
# Fix the install path for .pc files
# https://github.com/grpc/grpc/issues/25635
sed -r -i 's|lib(/pkgconfig)|\${gRPC_INSTALL_LIBDIR}\1|' CMakeLists.txt
2021-06-10 15:00:02 +00:00
echo '===== Patching to skip certain broken tests =====' 2>&1
2021-08-11 02:19:32 +00:00
%if %{without unexplained_failing_python_tests}
2021-06-10 15:00:02 +00:00
# Confirmed in 1.39.0 2021-07-29
2021-03-22 22:34:21 +00:00
# TODO figure out how to report this upstream in a useful/actionable way
2021-06-10 15:00:02 +00:00
sed -r -i " s / ^ ( [ [ : b l a n k : ] ] * ) ( d e f t e s t _ d e a l l o c a t e d _ s e r v e r _ s t o p s ) \\ b / \
2021-03-22 22:34:21 +00:00
\\1@unittest.skip('May hang unexplainedly' )\\n\\1\\2/" \
2021-06-10 15:00:02 +00:00
'src/python/grpcio_tests/tests/unit/_server_shutdown_test.py'
2021-03-22 22:34:21 +00:00
%ifarch %{ix86} %{arm32}
2021-06-10 15:00:02 +00:00
# Confirmed in 1.39.0 2021-07-29
2021-03-21 21:53:01 +00:00
# TODO figure out how to report this upstream in a useful/actionable way
sed -r -i " s / ^ ( [ [ : b l a n k : ] ] * ) ( d e f t e s t _ c o n c u r r e n t _ s t r e a m _ s t r e a m ) \\ b / \
\\1@unittest.skip('May hang unexplainedly' )\\n\\1\\2/" \
'src/python/grpcio_tests/tests/testing/_client_test.py'
2021-08-06 12:50:12 +00:00
%endif
2021-03-22 22:34:21 +00:00
2021-08-06 12:50:12 +00:00
%ifarch %{ix86} %{arm32}
2021-06-10 15:00:02 +00:00
# Confirmed in 1.39.0 2021-07-29
2021-03-21 21:53:01 +00:00
# These tests fail with:
# OverflowError: Python int too large to convert to C ssize_t
# TODO figure out how to report this upstream in a useful/actionable way
sed -r -i \
" s / ^ ( [ [ : b l a n k : ] ] * ) ( d e f t e s t ( S S L S e s s i o n C a c h e L R U | S e s s i o n R e s u m p t i o n ) ) \\ b / \
\\1@unittest.skip('Unexplained overflow error on 32-bit' )\\n\\1\\2/" \
'src/python/grpcio_tests/tests/unit/_auth_context_test.py' \
'src/python/grpcio_tests/tests/unit/_session_cache_test.py'
%endif
2021-08-11 02:19:32 +00:00
# Confirmed in 1.39.0 2021-08-19
# These tests can be flaky and may fail only sometimes. Failures have been seen
# on all architectures.
# TODO figure out how to report this upstream in a useful/actionable way
sed -r -i " s / ^ ( [ [ : b l a n k : ] ] * ) ( d e f t e s t C o n c u r r e n t ( B l o c k i n g | F u t u r e ) \
Invocations)\\b/\\1@unittest.skip('May hang unexplainedly' )\\n\\1\\2/" \
'src/python/grpcio_tests/tests/unit/_rpc_part_2_test.py'
%ifarch %{arm64} ppc64le s390x x86_64
# Confirmed in 1.39.0 2021-08-11
# TODO figure out how to report this upstream in a useful/actionable way
#
# unit._dynamic_stubs_test.DynamicStubTest.test_grpc_tools_unimportable
# traceback:
# Traceback (most recent call last):
# File "/usr/lib64/python3.10/unittest/case.py", line 59, in testPartExecutor
# yield
# File "/usr/lib64/python3.10/unittest/case.py", line 592, in run
# self._callTestMethod(testMethod)
# File "/usr/lib64/python3.10/unittest/case.py", line 549, in _callTestMethod
# method()
# File
# "/builddir/build/BUILD/grpc-1.39.0/src/python/grpcio_tests/tests/unit/_dynamic_stubs_test.py",
# line 136, in test_grpc_tools_unimportable
# _run_in_subprocess(_test_grpc_tools_unimportable)
# File
# "/builddir/build/BUILD/grpc-1.39.0/src/python/grpcio_tests/tests/unit/_dynamic_stubs_test.py",
# line 80, in _run_in_subprocess
# assert proc.exitcode == 0, "Process exited with code {}".format(
# AssertionError: Process exited with code 64
sed -r -i " s / ^ ( [ [ : b l a n k : ] ] * ) ( c l a s s D y n a m i c S t u b T e s t ) \\ b / \
\\1@unittest.skip('Child process exits with code 64' )\\n\\1\\2/" \
'src/python/grpcio_tests/tests/unit/_dynamic_stubs_test.py'
%endif
%ifarch %{arm64} ppc64le s390x x86_64
# Confirmed in 1.39.0 2021-08-11
# TODO figure out how to report this upstream in a useful/actionable way
#
# unit._logging_test.LoggingTest.test_can_configure_logger
# traceback:
# Traceback (most recent call last):
# File "/usr/lib64/python3.10/unittest/case.py", line 59, in testPartExecutor
# yield
# File "/usr/lib64/python3.10/unittest/case.py", line 592, in run
# self._callTestMethod(testMethod)
# File "/usr/lib64/python3.10/unittest/case.py", line 549, in _callTestMethod
# method()
# File
# "/builddir/build/BUILD/grpc-1.39.0/src/python/grpcio_tests/tests/unit/_logging_test.py",
# line 66, in test_can_configure_logger
# self._verifyScriptSucceeds(script)
# File
# "/builddir/build/BUILD/grpc-1.39.0/src/python/grpcio_tests/tests/unit/_logging_test.py",
# line 91, in _verifyScriptSucceeds
# self.assertEqual(
# File "/usr/lib64/python3.10/unittest/case.py", line 839, in assertEqual
# assertion_func(first, second, msg=msg)
# File "/usr/lib64/python3.10/unittest/case.py", line 832, in _baseAssertEqual
# raise self.failureException(msg)
# AssertionError: 0 != 64 : process failed with exit code 64 (stdout: b'', stderr: b'')
sed -r -i " s / ^ ( [ [ : b l a n k : ] ] * ) ( d e f t e s t _ ( c a n _ c o n f i g u r e _ l o g g e r | g r p c _ l o g g e r | \
handler_found|logger_not_occupied))\\b/\
\\1@unittest.skip('Child process exits with code 64' )\\n\\1\\2/" \
'src/python/grpcio_tests/tests/unit/_logging_test.py'
%endif
%ifarch %{ix86} %{arm32}
# Confirmed in 1.39.0 2021-08-11
# TODO figure out how to report this upstream in a useful/actionable way
sed -r -i " s / ^ ( [ [ : b l a n k : ] ] * ) ( d e f t e s t C a n c e l M a n y C a l l s ) \\ b / \
\\1@unittest.skip('May hang unexplainedly' )\\n\\1\\2/" \
'src/python/grpcio_tests/tests/unit/_cython/_cancel_many_calls_test.py'
%endif
2021-08-06 12:50:12 +00:00
%ifarch %{arm64}
2021-08-11 02:19:32 +00:00
# Confirmed in 1.39.0 2021-08-11
# Some of these (at least testSuccessfulStreamRequestStreamResponse) may be
# flaky and fail only occasionally.
2021-08-06 12:50:12 +00:00
# TODO figure out how to report this upstream in a useful/actionable way
2021-08-11 02:19:32 +00:00
sed -r -i " s / ^ ( [ [ : b l a n k : ] ] * ) ( d e f t e s t \
(ConsumingSomeButNotAllStreamResponsesStreamRequest|\
SuccessfulStreamRequestStreamResponse))\\b/\
2021-08-06 12:50:12 +00:00
\\1@unittest.skip('May hang unexplainedly' )\\n\\1\\2/" \
'src/python/grpcio_tests/tests/unit/_rpc_part_2_test.py'
%endif
2021-03-21 21:53:01 +00:00
%endif
2018-12-07 08:01:19 +00:00
%build
2021-02-02 13:20:44 +00:00
# ~~~~ C (core) and C++ (cpp) ~~~~
2021-06-10 15:00:02 +00:00
echo '===== Building C (core) and C++ components =====' 2>&1
2021-02-03 00:33:37 +00:00
# We could use either make or ninja as the backend; ninja is faster and has no
# disadvantages (except a small additional BR, given we already need Python)
2021-03-22 22:34:21 +00:00
#
# We need to adjust the C++ standard to avoid abseil-related linker errors.
2021-02-03 00:33:37 +00:00
%cmake \
2021-03-15 13:32:03 +00:00
-DgRPC_INSTALL:BOOL=ON \
2021-03-22 22:34:21 +00:00
-DCMAKE_CXX_STANDARD:STRING=%{cpp_std} \
-DCMAKE_SKIP_INSTALL_RPATH:BOOL=ON \
2021-03-15 13:32:03 +00:00
-DgRPC_INSTALL_BINDIR:PATH=%{_bindir} \
-DgRPC_INSTALL_LIBDIR:PATH=%{_libdir} \
-DgRPC_INSTALL_INCLUDEDIR:PATH=%{_includedir} \
-DgRPC_INSTALL_CMAKEDIR:PATH=%{_libdir} /cmake/%{name} \
-DgRPC_INSTALL_SHAREDIR:PATH=%{_datadir} /%{name} \
2021-02-03 00:33:37 +00:00
-DgRPC_BUILD_TESTS:BOOL=%{?with_core_tests:ON}%{?!with_core_tests:OFF} \
-DgRPC_BUILD_CODEGEN:BOOL=ON \
2021-03-15 13:32:03 +00:00
-DgRPC_BUILD_CSHARP_EXT:BOOL=ON \
2021-02-03 00:33:37 +00:00
-DgRPC_BACKWARDS_COMPATIBILITY_MODE:BOOL=OFF \
-DgRPC_ZLIB_PROVIDER:STRING='package' \
-DgRPC_CARES_PROVIDER:STRING='package' \
2021-03-22 22:34:21 +00:00
-DgRPC_RE2_PROVIDER:STRING='package' \
2021-02-03 00:33:37 +00:00
-DgRPC_SSL_PROVIDER:STRING='package' \
-DgRPC_PROTOBUF_PROVIDER:STRING='package' \
-DgRPC_PROTOBUF_PACKAGE_TYPE:STRING='MODULE' \
-DgRPC_BENCHMARK_PROVIDER:STRING='package' \
2021-03-22 22:34:21 +00:00
-DgRPC_ABSL_PROVIDER:STRING='package' \
2021-03-15 13:32:03 +00:00
-DgRPC_USE_PROTO_LITE:BOOL=OFF \
-DgRPC_BUILD_GRPC_CPP_PLUGIN:BOOL=ON \
-DgRPC_BUILD_GRPC_CSHARP_PLUGIN:BOOL=ON \
-DgRPC_BUILD_GRPC_NODE_PLUGIN:BOOL=ON \
-DgRPC_BUILD_GRPC_OBJECTIVE_C_PLUGIN:BOOL=ON \
-DgRPC_BUILD_GRPC_PHP_PLUGIN:BOOL=ON \
-DgRPC_BUILD_GRPC_PYTHON_PLUGIN:BOOL=ON \
-DgRPC_BUILD_GRPC_RUBY_PLUGIN:BOOL=ON \
-GNinja
2021-02-03 00:33:37 +00:00
%cmake_build
2018-12-07 08:01:19 +00:00
2021-06-10 15:00:02 +00:00
echo '===== Building C (core) and C++ documentation =====' 2>&1
# Doxygen (reference: C/core, C++, objc)
./tools/doxygen/run_doxygen.sh
2021-02-02 13:20:44 +00:00
# ~~~~ Python ~~~~
2021-06-10 15:00:02 +00:00
echo '===== Building Python grpcio package =====' 2>&1
2021-02-02 13:20:44 +00:00
# Since we will need all of the Python packages for the documentation build,
# and there are some other interdependencies (e.g., many have setup_requires:
# grpcio-tools), we do a temporary install of the built packages into a local
# directory, and add it to the PYTHONPATH.
PYROOT=" $ { P W D } / %{_vpath_builddir} / p y r o o t "
if [ -n " $ { P Y T H O N P A T H - } " ]; then PYTHONPATH=" $ { P Y T H O N P A T H } : " ; fi
PYTHONPATH=" $ { P Y T H O N P A T H - } $ { P Y R O O T } %{python3_sitelib} "
PYTHONPATH=" $ { P Y T H O N P A T H } : $ { P Y R O O T } %{python3_sitearch} "
export PYTHONPATH
# ~~ grpcio ~~
2021-03-22 22:34:21 +00:00
# Note that we had to patch in the GRPC_PYTHON_BUILD_SYSTEM_ABSL option.
export GRPC_PYTHON_BUILD_WITH_CYTHON='True'
export GRPC_PYTHON_BUILD_SYSTEM_OPENSSL='True'
export GRPC_PYTHON_BUILD_SYSTEM_ZLIB='True'
export GRPC_PYTHON_BUILD_SYSTEM_CARES='True'
export GRPC_PYTHON_BUILD_SYSTEM_RE2='True'
export GRPC_PYTHON_BUILD_SYSTEM_ABSL='True'
export GRPC_PYTHON_DISABLE_LIBC_COMPATIBILITY='True'
export GRPC_PYTHON_ENABLE_DOCUMENTATION_BUILD='True'
2021-03-15 13:39:12 +00:00
# We must set GRPC_PYTHON_CFLAGS to avoid unwanted defaults. We take the
# upstream flags except that we remove -std=c99, which is inapplicable to the
# C++ parts of the extension.
#
# We must set GRPC_PYTHON_LDFLAGS to avoid unwanted defaults. The upstream
# flags attempt to statically link libgcc, so we do not need any of them. Since
# we forcibly unbundle protobuf, we need to add linker flags for protobuf
# ourselves.
export GRPC_PYTHON_CFLAGS=" - f v i s i b i l i t y = h i d d e n - f n o - w r a p v - f n o - e x c e p t i o n s $ (
pkg-config --cflags protobuf
)"
export GRPC_PYTHON_LDFLAGS=" $ ( p k g - c o n f i g - - l i b s p r o t o b u f ) "
2021-02-02 13:20:44 +00:00
%py3_build
%{__python 3} %{py_setup} %{?py_setup_args} install \
-O1 --skip-build --root " $ { P Y R O O T } "
# ~~ grpcio-tools ~~
2021-06-10 15:00:02 +00:00
echo '===== Building Python grpcio_tools package =====' 2>&1
2021-02-02 13:20:44 +00:00
pushd " t o o l s / d i s t r i b / p y t h o n / g r p c i o _ t o o l s / " >/dev/null
# When copying more things in here, make sure the subpackage License field
# stays correct. We need copies, not symlinks, so that the “graft” in
# MANIFEST.in works.
mkdir -p %{name} _root/src
for srcdir in compiler
do
cp -rp " . . / . . / . . / . . / s r c / $ { s r c d i r } " " %{name} _ r o o t / s r c / "
done
cp -rp '../../../../include' '%{name}_root/'
2021-03-15 13:39:12 +00:00
# We must set GRPC_PYTHON_CFLAGS and GRPC_PYTHON_LDFLAGS again; grpcio_tools
# does not have the same default upstream flags as grpcio does, and it needs to
# link the protobuf compiler library.
export GRPC_PYTHON_CFLAGS=" - f n o - w r a p v - f r t t i $ ( p k g - c o n f i g - - c f l a g s p r o t o b u f ) "
export GRPC_PYTHON_LDFLAGS=" $ ( p k g - c o n f i g - - l i b s p r o t o b u f ) - l p r o t o c "
%py3_build
2021-02-02 13:20:44 +00:00
# Remove unwanted shebang from grpc_tools.protoc source file, which will be
# installed without an executable bit:
find . -type f -name protoc.py -execdir sed -r -i '1{/^#!/d}' '{}' '+'
%{__python 3} %{py_setup} %{?py_setup_args} install \
-O1 --skip-build --root " $ { P Y R O O T } "
popd >/dev/null
2021-06-10 15:00:02 +00:00
echo '===== Building pure-Python packages =====' 1>&2
for suffix in channelz %{?!with_bootstrap:csds admin} health_checking \
reflection status testing tests
2021-02-02 13:20:44 +00:00
do
echo " - - - - > g r p c i o _ $ { s u f f i x } < - - - - " 1>&2
pushd " s r c / p y t h o n / g r p c i o _ $ { s u f f i x } / " >/dev/null
2021-06-10 15:00:02 +00:00
if ! echo " $ { s u f f i x } " | grep -E " ^ ( a d m i n | c s d s ) $ " >/dev/null
then
%{__python 3} %{py_setup} %{?py_setup_args} preprocess
fi
if ! echo " $ { s u f f i x } " | grep -E " ^ ( a d m i n | c s d s | t e s t i n g ) $ " >/dev/null
2021-03-15 13:39:12 +00:00
then
%{__python 3} %{py_setup} %{?py_setup_args} build_package_protos
fi
2021-02-02 13:20:44 +00:00
%py3_build
%{__python 3} %{py_setup} %{?py_setup_args} install \
-O1 --skip-build --root " $ { P Y R O O T } "
popd >/dev/null
done
2021-06-10 15:00:02 +00:00
echo '===== Building pure-Python documentation =====' 1>&2
%if %{without bootstrap}
2021-03-22 13:35:13 +00:00
# Sphinx (Python)
2021-02-02 13:20:44 +00:00
%{__python 3} %{py_setup} %{?py_setup_args} doc
2021-03-22 13:35:13 +00:00
rm -vrf doc/build/.buildinfo doc/build/.doctrees
2021-06-10 15:00:02 +00:00
%endif
2021-02-02 13:20:44 +00:00
2018-12-14 19:51:14 +00:00
2018-12-07 08:01:19 +00:00
%install
2021-02-02 13:20:44 +00:00
# ~~~~ C (core) and C++ (cpp) ~~~~
2021-02-03 00:33:37 +00:00
%cmake_install
2021-03-22 22:34:21 +00:00
%if %{with core_tests}
2021-03-15 13:41:02 +00:00
# For some reason, grpc_cli is not installed. Do it manually.
install -t '%{buildroot}%{_bindir}' -p -D '%{_vpath_builddir}/%{name}_cli'
# grpc_cli build does not respect CMAKE_INSTALL_RPATH
# https://github.com/grpc/grpc/issues/25176
chrpath --delete '%{buildroot}%{_bindir}/%{name}_cli'
2021-03-22 22:34:21 +00:00
# This library is also required for grpc_cli; it is built as part of the test
# code.
install -t '%{buildroot}%{_libdir}' -p \
%{_vpath_builddir} /lib%{name} ++_test_config.so.*
chrpath --delete '%{buildroot}%{_libdir}/' lib%{name} ++_test_config.so.*
install -d '%{buildroot}/%{_mandir}/man1'
install -t '%{buildroot}/%{_mandir}/man1' -p -m 0644 \
%{SOURCE100} %{SOURCE101} %{SOURCE102} %{SOURCE103} %{SOURCE104} \
%{SOURCE106} %{SOURCE107} %{SOURCE108}
2021-02-03 00:33:37 +00:00
%endif
2021-03-22 22:34:21 +00:00
2021-02-02 13:20:44 +00:00
# Remove any static libraries that may have been installed against our wishes
find %{buildroot} -type f -name '*.a' -print -delete
# Fix wrong permissions on installed headers
find %{buildroot} %{_includedir} /%{name} * -type f -name '*.h' -perm /0111 \
-execdir chmod -v a-x '{}' '+'
# ~~~~ Python ~~~~
# Since several packages have an install_requires: grpcio-tools, we must ensure
# the buildroot Python site-packages directories are in the PYTHONPATH.
pushd '%{buildroot}'
PYROOT=" $ { P W D } "
popd
if [ -n " $ { P Y T H O N P A T H - } " ]; then PYTHONPATH=" $ { P Y T H O N P A T H } : " ; fi
PYTHONPATH=" $ { P Y T H O N P A T H - } $ { P Y R O O T } %{python3_sitelib} "
PYTHONPATH=" $ { P Y T H O N P A T H } : $ { P Y R O O T } %{python3_sitearch} "
export PYTHONPATH
# ~~ grpcio ~~
%py3_install
# ~~ grpcio-tools ~~
pushd " t o o l s / d i s t r i b / p y t h o n / g r p c i o _ t o o l s / " >/dev/null
2018-12-14 19:51:14 +00:00
%py3_install
2021-02-02 13:20:44 +00:00
popd >/dev/null
# ~~ pure-python modules grpcio-* ~~
2021-06-10 15:00:02 +00:00
for suffix in channelz %{?!with_bootstrap:csds admin} health_checking \
reflection status testing
2021-02-02 13:20:44 +00:00
do
pushd " s r c / p y t h o n / g r p c i o _ $ { s u f f i x } / " >/dev/null
%py3_install
popd >/dev/null
done
2021-03-15 13:40:24 +00:00
# The grpcio_tests package should not be installed; it would provide top-level
# packages with generic names like “tests” or “tests_aio”.
2021-02-02 13:20:44 +00:00
# ~~~~ Miscellaneous ~~~~
# Replace copies of the certificate bundle with symlinks to the shared system
# certificates. This has the following benefits:
# - Reduces duplication and save space
# - Respects system-wide administrative trust configuration
# - Keeps “MPLv2.0” from having to be added to a number of License fields
%global sysbundle %{_sysconfdir} /pki/ca-trust/extracted/pem/tls-ca-bundle.pem
# We do not own this file; we temporarily install it in the buildroot so we do
# not have dangling symlinks.
install -D -t " %{buildroot} $ ( d i r n a m e ' %{sysbundle} ' ) " -m 0644 '%{sysbundle}'
find '%{buildroot}' -type f -name 'roots.pem' |
while read -r fn
do
ln -s -f " %{buildroot} %{sysbundle} " " $ { f n } "
symlinks -c -o " $ { f n } "
done
2021-04-06 20:03:08 +00:00
rm -rvf " %{buildroot} $ ( d i r n a m e ' %{sysbundle} ' ) "
2021-02-02 13:20:44 +00:00
# ~~ documentation and examples ~~
install -D -t '%{buildroot}%{_pkgdocdir}' -m 0644 -p AUTHORS *.md
2021-03-22 13:35:13 +00:00
cp -rp doc/ref examples '%{buildroot}%{_pkgdocdir}'
2021-06-10 15:00:02 +00:00
%if %{without bootstrap}
2021-03-22 13:35:13 +00:00
install -d '%{buildroot}%{_pkgdocdir}/python'
cp -rp doc/build '%{buildroot}%{_pkgdocdir}/python/html'
2021-06-10 15:00:02 +00:00
%endif
2021-02-02 13:20:44 +00:00
%check
2021-03-15 13:20:37 +00:00
export FEDORA_NO_NETWORK_TESTS=1
2021-03-22 22:34:21 +00:00
%if %{with core_tests}
PORT_SERVER_PORT=" $ ( a w k '
/_PORT_SERVER_PORT[[:blank:]]*=[[:blank:]]*[[:digit:]]+$/ { print $NF }
' tools/run_tests/python_utils/start_port_server.py)"
2021-03-23 21:59:49 +00:00
# Note that no tests are actually found by ctest:
2021-02-03 00:33:37 +00:00
%ctest
2021-03-23 21:59:49 +00:00
2021-03-22 22:34:21 +00:00
# Exclude tests that are known to hang or otherwise fail. Assistance welcome in
# figuring out what is wrong with these. Note, however, that we are running
# the tests very differently from upstream, which uses scripts in
# tools/run_tests/ that rebuild the entire source and use Docker, so it is
# likely to be difficult to get help from upstream for any failures here. Note
# that some of these tests would never work in an environment without Internet
# access.
2021-06-23 16:35:07 +00:00
{ sed -r -e '/^(#|$)/d' -e 's|^(.*)$|%{_vpath_builddir}/\1_test|' <<'EOF'
2021-03-22 22:34:21 +00:00
# Requires (or may require) network:
resolve_address_using_ares_resolver
resolve_address_using_ares_resolver_posix
resolve_address_using_native_resolver
resolve_address_using_native_resolver_posix
ssl_transport_security
# Seems to require privilege:
flaky_network
%ifarch s390x
# Unexplained:
#
# [ RUN ] AddressSortingTest.TestSorterKnowsIpv6LoopbackIsAvailable
# ../test/cpp/naming/address_sorting_test.cc:807: Failure
# Expected equality of these values:
# source_addr_output->sin6_family
# Which is: 0
# 10
# ../test/cpp/naming/address_sorting_test.cc:817: Failure
# Expected equality of these values:
# source_addr_str
# Which is: "::"
# "::1"
# [ FAILED ] AddressSortingTest.TestSorterKnowsIpv6LoopbackIsAvailable (0 ms)
2021-06-10 15:00:02 +00:00
#
2021-08-06 12:50:12 +00:00
# Confirmed in 1.39.0 2021-08-05
2021-03-22 22:34:21 +00:00
address_sorting
2021-08-06 12:50:12 +00:00
%endif
2021-03-22 22:34:21 +00:00
2021-08-06 12:50:12 +00:00
%ifarch s390x
2021-03-22 22:34:21 +00:00
# Unexplained:
#
# Status is not ok: Setting authenticated associated data failed
2021-08-06 12:50:12 +00:00
# E0805 21:01:40.415152384 1888289 aes_gcm_test.cc:77] assertion failed: status == GRPC_STATUS_OK
# *** SIGABRT received at time=1628197300 on cpu 1 ***
# PC: @ 0x3ff8581ec8e (unknown) __pthread_kill_internal
# @ 0x3ff85701524 (unknown) (unknown)
# @ 0x3ff85701790 (unknown) (unknown)
# @ 0x3ff862e3b78 (unknown) (unknown)
# @ 0x3ff8581ec8e (unknown) __pthread_kill_internal
# @ 0x3ff857d03e0 (unknown) gsignal
# @ 0x3ff857b3480 (unknown) abort
# @ 0x2aa27303a48 (unknown) gsec_assert_ok()
# @ 0x2aa27303b80 (unknown) gsec_test_random_encrypt_decrypt()
# @ 0x2aa2730156e (unknown) main
# @ 0x3ff857b3732 (unknown) __libc_start_call_main
# @ 0x3ff857b380e (unknown) __libc_start_main@GLIBC_2.2
# @ 0x2aa27302730 (unknown) (unknown)
2021-06-10 15:00:02 +00:00
#
2021-08-06 12:50:12 +00:00
# Confirmed in 1.39.0 2021-08-05
2021-03-22 22:34:21 +00:00
alts_crypt
2021-08-06 12:50:12 +00:00
%endif
2021-03-22 22:34:21 +00:00
2021-08-06 12:50:12 +00:00
%ifarch s390x
2021-03-22 22:34:21 +00:00
# Unexplained:
#
# (aborted without output)
2021-06-10 15:00:02 +00:00
#
2021-08-06 12:50:12 +00:00
# Confirmed in 1.39.0 2021-08-05
2021-03-22 22:34:21 +00:00
alts_crypter
2021-08-06 12:50:12 +00:00
%endif
2021-03-22 22:34:21 +00:00
2021-08-11 02:19:32 +00:00
%ifarch s390x
# Unexplained:
#
# [ RUN ] AltsConcurrentConnectivityTest.TestBasicClientServerHandshakes
# E0811 15:42:24.743250725 2232792
# alts_grpc_privacy_integrity_record_protocol.cc:107] Failed to unprotect, More
# bytes written than expected. Frame decryption failed.
# [… 14 similar lines omitted …]
# E0811 15:42:29.735499217 2232786
# alts_grpc_privacy_integrity_record_protocol.cc:107] Failed to unprotect, More
# bytes written than expected. Frame decryption failed.
# /builddir/build/BUILD/grpc-1.39.0/test/core/tsi/alts/handshaker/alts_concurrent_connectivity_test.cc:245:
# Failure
# Expected equality of these values:
# ev.type
# Which is: 1
# GRPC_OP_COMPLETE
# Which is: 2
# connect_loop runner:0x3ffc7ffdc68 got ev.type:1 i:0
# [ FAILED ] AltsConcurrentConnectivityTest.TestBasicClientServerHandshakes (5021 ms)
# [ RUN ] AltsConcurrentConnectivityTest.TestConcurrentClientServerHandshakes
# [… 2983 lines including some additional failures and error messages omitted …]
# [----------] 5 tests from AltsConcurrentConnectivityTest (27346 ms total)
# [----------] Global test environment tear-down
# [==========] 5 tests from 1 test suite ran. (27347 ms total)
# [ PASSED ] 3 tests.
# [ FAILED ] 2 tests, listed below:
# [ FAILED ] AltsConcurrentConnectivityTest.TestBasicClientServerHandshakes
# [ FAILED ] AltsConcurrentConnectivityTest.TestConcurrentClientServerHandshakes
# 2 FAILED TESTS
# E0811 15:43:02.072126233 2232783 test_config.cc:195]
# Timeout in waiting for gRPC shutdown
#
# Confirmed in 1.39.0 2021-08-11
alts_concurrent_connectivity
%endif
2021-08-06 12:50:12 +00:00
%ifarch s390x
2021-03-22 22:34:21 +00:00
# Unexplained:
#
# (aborted without output)
2021-06-10 15:00:02 +00:00
#
2021-08-06 12:50:12 +00:00
# Confirmed in 1.39.0 2021-08-05
2021-03-22 22:34:21 +00:00
alts_frame_protector
2021-08-06 12:50:12 +00:00
%endif
2021-03-22 22:34:21 +00:00
2021-08-06 12:50:12 +00:00
%ifarch s390x
2021-03-22 22:34:21 +00:00
# Unexplained:
#
2021-08-11 02:19:32 +00:00
# E0809 03:12:16.141688879 1707771
# alts_grpc_integrity_only_record_protocol.cc:109] Failed to protect, Setting
2021-03-22 22:34:21 +00:00
# authenticated associated data failed
2021-08-11 02:19:32 +00:00
# E0809 03:12:16.141863502 1707771 alts_grpc_record_protocol_test.cc:282]
2021-03-22 22:34:21 +00:00
# assertion failed: status == TSI_OK
2021-08-11 02:19:32 +00:00
# *** SIGABRT received at time=1628478736 on cpu 2 ***
# PC: @ 0x3ffa571ec8e (unknown) __pthread_kill_internal
# @ 0x3ffa5601524 (unknown) (unknown)
# @ 0x3ffa5601790 (unknown) (unknown)
# @ 0x3ffa61e3b78 (unknown) (unknown)
# @ 0x3ffa571ec8e (unknown) __pthread_kill_internal
# @ 0x3ffa56d03e0 (unknown) gsignal
# @ 0x3ffa56b3480 (unknown) abort
# @ 0x2aa1fa82e3e (unknown) random_seal_unseal()
# @ 0x2aa1fa836f8 (unknown) alts_grpc_record_protocol_tests()
# @ 0x2aa1fa81c68 (unknown) main
# @ 0x3ffa56b3732 (unknown) __libc_start_call_main
# @ 0x3ffa56b380e (unknown) __libc_start_main@GLIBC_2.2
# @ 0x2aa1fa81d60 (unknown) (unknown)
#
# Confirmed in 1.39.0 2021-08-09
2021-03-22 22:34:21 +00:00
alts_grpc_record_protocol
2021-08-06 12:50:12 +00:00
%endif
2021-03-22 22:34:21 +00:00
2021-08-06 12:50:12 +00:00
%ifarch s390x
2021-03-22 22:34:21 +00:00
# Unexplained:
#
2021-08-11 02:19:32 +00:00
# E0807 15:46:27.681935728 3628534
# alts_grpc_integrity_only_record_protocol.cc:109] Failed to protect, Setting
# authenticated associated data failed
# E0807 15:46:27.682097664 3628534 alts_grpc_record_protocol_test.cc:282]
# assertion failed: status == TSI_OK
# *** SIGABRT received at time=1628351187 on cpu 1 ***
# PC: @ 0x3ffbae9ec8e (unknown) __pthread_kill_internal
# @ 0x3ffbad81524 (unknown) (unknown)
# @ 0x3ffbad81790 (unknown) (unknown)
# @ 0x3ffbb963b78 (unknown) (unknown)
# @ 0x3ffbae9ec8e (unknown) __pthread_kill_internal
# @ 0x3ffbae503e0 (unknown) gsignal
# @ 0x3ffbae33480 (unknown) abort
# @ 0x2aa07782e3e (unknown) random_seal_unseal()
# @ 0x2aa077836f8 (unknown) alts_grpc_record_protocol_tests()
# @ 0x2aa07781c68 (unknown) main
# @ 0x3ffbae33732 (unknown) __libc_start_call_main
# @ 0x3ffbae3380e (unknown) __libc_start_main@GLIBC_2.2
# @ 0x2aa07781d60 (unknown) (unknown)
#
# Confirmed in 1.39.0 2021-08-08
2021-03-22 22:34:21 +00:00
alts_handshaker_client
2021-08-06 12:50:12 +00:00
%endif
2021-03-22 22:34:21 +00:00
2021-08-06 12:50:12 +00:00
%ifarch s390x
2021-03-22 22:34:21 +00:00
# Unexplained:
#
# (aborted without output)
2021-06-10 15:00:02 +00:00
#
2021-08-11 02:19:32 +00:00
# Confirmed in 1.39.0 2021-08-09
2021-03-22 22:34:21 +00:00
alts_iovec_record_protocol
2021-08-06 12:50:12 +00:00
%endif
2021-03-22 22:34:21 +00:00
2021-08-06 12:50:12 +00:00
%ifarch s390x
2021-03-22 22:34:21 +00:00
# Unexplained:
#
# [ RUN ] AltsUtilTest.AuthContextWithGoodAltsContextWithoutRpcVersions
2021-08-11 02:19:32 +00:00
# /builddir/build/BUILD/grpc-1.39.0/test/cpp/common/alts_util_test.cc:122: Failure
2021-03-22 22:34:21 +00:00
# Expected equality of these values:
# expected_sl
# Which is: 1
# alts_context->security_level()
# Which is: 0
# [ FAILED ] AltsUtilTest.AuthContextWithGoodAltsContextWithoutRpcVersions (0 ms)
2021-08-11 02:19:32 +00:00
#
# Confirmed in 1.39.0 2021-08-09
2021-03-22 22:34:21 +00:00
alts_util
2021-08-06 12:50:12 +00:00
%endif
2021-03-22 22:34:21 +00:00
2021-08-06 12:50:12 +00:00
%ifarch s390x
2021-03-22 22:34:21 +00:00
# Unexplained:
#
2021-08-11 02:19:32 +00:00
# E0809 16:49:05.522667340 1558872
# alts_grpc_integrity_only_record_protocol.cc:109] Failed to protect, Setting
# authenticated associated data failed
# E0809 16:49:05.523083934 1558872 alts_zero_copy_grpc_protector_test.cc:183]
# assertion failed: tsi_zero_copy_grpc_protector_protect( sender,
# &var->original_sb, &var->protected_sb) == TSI_OK
# *** SIGABRT received at time=1628527745 on cpu 2 ***
# PC: @ 0x3ff8169ec8e (unknown) __pthread_kill_internal
# @ 0x3ff81581524 (unknown) (unknown)
# @ 0x3ff81581790 (unknown) (unknown)
# @ 0x3ff82163b78 (unknown) (unknown)
# @ 0x3ff8169ec8e (unknown) __pthread_kill_internal
# @ 0x3ff816503e0 (unknown) gsignal
# @ 0x3ff81633480 (unknown) abort
# @ 0x2aa3d0028b8 (unknown) seal_unseal_small_buffer()
# @ 0x2aa3d002a68 (unknown) alts_zero_copy_protector_seal_unseal_small_buffer_tests()
# @ 0x2aa3d001b26 (unknown) main
# @ 0x3ff81633732 (unknown) __libc_start_call_main
# @ 0x3ff8163380e (unknown) __libc_start_main@GLIBC_2.2
# @ 0x2aa3d001c10 (unknown) (unknown)
#
# Confirmed in 1.39.0 2021-08-09
2021-03-22 22:34:21 +00:00
alts_zero_copy_grpc_protector
2021-08-06 12:50:12 +00:00
%endif
2021-03-22 22:34:21 +00:00
2021-08-06 12:50:12 +00:00
%ifarch %{ix86} %{arm32}
# Unexplained:
#
2021-08-11 02:19:32 +00:00
# [ RUN ] CertificateProviderStoreTest.Basic
# E0809 18:01:00.777880860 323759 certificate_provider_store.cc:67]
# Certificate provider factory fake2 not found
# [ OK ] CertificateProviderStoreTest.Basic (1 ms)
2021-08-06 12:50:12 +00:00
# [ RUN ] CertificateProviderStoreTest.Multithreaded
# terminate called without an active exception
2021-08-11 02:19:32 +00:00
# *** SIGABRT received at time=1628532060 on cpu 0 ***
# PC: @ 0xf7f9d559 (unknown) __kernel_vsyscall
2021-08-06 12:50:12 +00:00
#
2021-08-11 02:19:32 +00:00
# Confirmed in 1.39.0 2021-08-09
2021-08-06 12:50:12 +00:00
certificate_provider_store
%endif
%ifarch %{ix86}
# Unexplained:
#
# [ RUN ] ChannelTracerTest.TestMultipleEviction
2021-08-11 02:19:32 +00:00
# /builddir/build/BUILD/grpc-1.39.0/test/core/channel/channel_trace_test.cc:65:
# Failure
2021-08-06 12:50:12 +00:00
# Expected equality of these values:
# array.array_value().size()
# Which is: 3
# expected
# Which is: 4
2021-08-11 02:19:32 +00:00
# [ FAILED ] ChannelTracerTest.TestMultipleEviction (1 ms)
2021-08-06 12:50:12 +00:00
#
2021-08-11 02:19:32 +00:00
# Confirmed in 1.39.0 2021-08-09
2021-08-06 12:50:12 +00:00
channel_trace
%endif
2021-08-11 02:19:32 +00:00
%ifarch ppc64le %{arm32} %{arm64} s390x
# Unexplained:
#
# ppc64le, aarch64:
#
# E0811 14:46:04.709808861 2142245 tcp_server_posix.cc:216] Failed accept4: Too many open files
# terminate called after throwing an instance of 'std::runtime_error'
# what(): random_device::random_device(const std::string&): device not available
# *** SIGABRT received at time=1628693164 on cpu 4 ***
# [address_is_readable.cc : 96] RAW: Failed to create pipe, errno=24
# [failure_signal_handler.cc : 331] RAW: Signal 6 raised at PC=0x7fff926a9864 while already in AbslFailureSignalHandler()
# [… 13710 similar messages omitted …]
# *** SIGABRT received at time=1628693166 on cpu 1 ***
# [address_is_readable.cc : 96] RAW: Failed to create pipe, errno=24
# [failure_signal_handler.cc : 331] RAW: Signal 6 raised at PC=0x7fff926a9864 while already in AbslFailureSignalHandler()
# *** SIGABRT received at time=1628693167 on cpu 1 ***
# PC: @ 0x7fff926a9864 (unknown) __pthread_kill_internal
# @ 0x7fff92461a48 (unknown) (unknown)
# @ 0x7fff937ae4e2 48 (unknown)
# @ 0x7fff9264848c 48 gsignal
# @ 0x7fff92621404 336 abort
# @ 0x7fff91d112a4 3200 (unknown)
# @ 0x7fff91d112fc 48 absl::lts_20210324::raw_logging_internal::RawLog()
# @ 0x7fff91a824c4 272 absl::lts_20210324::debugging_internal::AddressIsReadable()
# @ 0x7fff923f1568 176 (unknown)
# @ 0x7fff923f1730 96 (unknown)
# @ 0x7fff923f19e8 32 absl::lts_20210324::GetStackFramesWithContext()
# @ 0x7fff924616e4 480 (unknown)
# @ 0x7fff92461a48 (unknown) (unknown)
# @ 0x7fff937ae4e2 48 (unknown)
# @ 0x7fff9264848c 48 gsignal
# @ 0x7fff92621404 336 abort
# @ 0x7fff91d112a4 3200 (unknown)
# @ 0x7fff91d112fc 48 absl::lts_20210324::raw_logging_internal::RawLog()
# @ 0x7fff91a824c4 272 absl::lts_20210324::debugging_internal::AddressIsReadable()
# @ 0x7fff923f1568 176 (unknown)
# @ 0x7fff923f1730 96 (unknown)
# @ 0x7fff923f19e8 32 absl::lts_20210324::GetStackFramesWithContext()
# @ 0x7fff924616e4 480 (unknown)
# @ 0x7fff92461a48 (unknown) (unknown)
# @ 0x7fff937ae4e2 48 (unknown)
# @ 0x7fff9264848c 48 gsignal
# @ 0x7fff92621404 336 abort
# @ 0x7fff91d112a4 3200 (unknown)
# @ 0x7fff91d112fc 48 absl::lts_20210324::raw_logging_internal::RawLog()
# @ 0x7fff91a824c4 272 absl::lts_20210324::debugging_internal::AddressIsReadable()
# @ 0x7fff923f1568 176 (unknown)
# @ 0x7fff923f1730 96 (unknown)
# @ 0x7fff923f19e8 32 absl::lts_20210324::GetStackFramesWithContext()
# @ ... and at least 1000 more frames
#
# armv7hl, s390x:
#
# E0811 15:35:58.278096553 31424 grpclb.cc:1055] [grpclb 0xfe65c0] lb_calld=0xfe9778: Invalid LB response received: ''. Ignoring.
# E0811 15:35:58.966844494 31575 tcp_server_posix.cc:216] Failed accept4: Too many open files
# terminate called after throwing an instance of 'std::runtime_error'
# what(): random_device::random_device(const std::string&): device not available
# *** SIGABRT received at time=1628696159 on cpu 4 ***
# [symbolize_elf.inc : 965] RAW: /proc/self/task/31421/maps: errno=24
# PC: @ 0xb6418058 (unknown) (unknown)
# @ 0xb62d4274 (unknown) (unknown)
# @ 0xb63d2310 (unknown) (unknown)
# @ 0xb6418058 (unknown) (unknown)
# @ 0xb63d0ddc (unknown) (unknown)
#
# Confirmed in 1.39.0 2021-08-11
client_channel_stress
%endif
%ifarch s390x
# Unexplained hang:
#
# [ RUN ] ClientLbEnd2endTest.RoundRobinWithHealthChecking
# /builddir/build/BUILD/grpc-1.39.0/test/cpp/end2end/client_lb_end2end_test.cc:1452: Failure
# Value of: WaitForChannelReady(channel.get())
# Actual: false
# Expected: true
# [… hundreds of similar messages …]
# From /builddir/build/BUILD/grpc-1.39.0/test/cpp/end2end/client_lb_end2end_test.cc:1462
# Error: Deadline Exceeded
# /builddir/build/BUILD/grpc-1.39.0/test/cpp/end2end/client_lb_end2end_test.cc:342: Failure
# Value of: success
# Actual: false
# Expected: true
# From /builddir/build/BUILD/grpc-1.39.0/test/cpp/end2end/client_lb_end2end_test.cc:1462
# Error: Deadline Exceeded
# timeout: sending signal TERM to command 'redhat-linux-build/client_lb_end2end_test'
# *** SIGTERM received at time=1628744184 on cpu 0 ***
# PC: @ 0x3ff89d165aa (unknown) epoll_wait
# @ 0x3ff89881524 (unknown) (unknown)
# @ 0x3ff89881790 (unknown) (unknown)
# @ 0x3ff8acffb78 (unknown) (unknown)
# @ 0x3ff89d165aa (unknown) epoll_wait
# @ 0x3ff8a573dea (unknown) pollset_work()
# @ 0x3ff8a577630 (unknown) pollset_work()
# @ 0x3ff8a611a8e (unknown) cq_pluck()
# @ 0x3ff8a6102c2 (unknown) grpc_completion_queue_pluck
# @ 0x3ff8a84c08c (unknown) grpc::CoreCodegen::grpc_completion_queue_pluck()
# @ 0x2aa189b3de0 (unknown) grpc::CompletionQueue::Pluck()
# @ 0x2aa189bb4be (unknown) grpc::internal::BlockingUnaryCallImpl<>::BlockingUnaryCallImpl()
# @ 0x2aa189d213a (unknown) grpc::internal::BlockingUnaryCall<>()
# @ 0x2aa189c4e2e (unknown) grpc::testing::EchoTestService::Stub::Echo()
# @ 0x2aa18a01112 (unknown) grpc::testing::(anonymous namespace)::ClientLbEnd2endTest::SendRpc()
# @ 0x2aa18a0139c (unknown) grpc::testing::(anonymous namespace)::ClientLbEnd2endTest::CheckRpcSendOk()
# @ 0x2aa18a07a00 (unknown) grpc::testing::(anonymous namespace)::ClientLbEnd2endTest::WaitForServer()
# @ 0x2aa18a0f97a (unknown) grpc::testing::(anonymous namespace)::ClientLbEnd2endTest_RoundRobinWithHealthChecking_Test::TestBody()
# @ 0x2aa18a706f6 (unknown) testing::internal::HandleExceptionsInMethodIfSupported<>()
# @ 0x2aa18a62aba (unknown) testing::Test::Run()
# @ 0x2aa18a62d54 (unknown) testing::TestInfo::Run()
# @ 0x2aa18a635ce (unknown) testing::TestSuite::Run()
# @ 0x2aa18a64258 (unknown) testing::internal::UnitTestImpl::RunAllTests()
# @ 0x2aa18a70c86 (unknown) testing::internal::HandleExceptionsInMethodIfSupported<>()
# @ 0x2aa18a62e68 (unknown) testing::UnitTest::Run()
# @ 0x2aa189aa086 (unknown) main
# @ 0x3ff89c33732 (unknown) __libc_start_call_main
# @ 0x3ff89c3380e (unknown) __libc_start_main@GLIBC_2.2
# @ 0x2aa189ac6a0 (unknown) (unknown)
client_lb_end2end
%endif
2021-08-06 12:50:12 +00:00
# Unexplained:
#
# [ RUN ] EvaluateArgsTest.EmptyMetadata
# *** SIGSEGV received at time=1628108665 on cpu 143 ***
# PC: @ 0xffffac12f3d0 (unknown) __strlen_asimd
# @ 0xffffac06f810 1142966656 (unknown)
# @ 0xffffaca217ec 64 (unknown)
# @ 0xaaaadf5806dc 624 grpc_core::EvaluateArgsTest_EmptyMetadata_Test::TestBody()
# @ 0xaaaadf5c1b78 96 testing::internal::HandleExceptionsInMethodIfSupported<>()
# @ 0xaaaadf5b48d8 32 testing::Test::Run()
# @ 0xaaaadf5b4ad4 64 testing::TestInfo::Run()
# @ 0xaaaadf5b5424 80 testing::TestSuite::Run()
# @ 0xaaaadf5b5f08 240 testing::internal::UnitTestImpl::RunAllTests()
# @ 0xaaaadf5b4ca0 144 testing::UnitTest::Run()
# @ 0xaaaadf57c2d8 64 main
# @ 0xffffac0ba0c4 272 __libc_start_call_main
# @ 0xffffac0ba198 (unknown) __libc_start_main@GLIBC_2.17
#
# Confirmed in 1.39.0 2021-08-04
evaluate_args
%ifarch x86_64 %{ix86}
# Unexplained:
#
# [ RUN ] ExamineStackTest.AbseilStackProvider
# /builddir/build/BUILD/grpc-1.39.0/test/core/gprpp/examine_stack_test.cc:75: Failure
# Value of: stack_trace->find("GetCurrentStackTrace") != std::string::npos
# Actual: false
# Expected: true
# [ FAILED ] ExamineStackTest.AbseilStackProvider (0 ms)
#
# Confirmed in 1.39.0 2021-08-05
examine_stack
%endif
%ifarch s390x
2021-03-22 22:34:21 +00:00
# Unexplained:
#
2021-08-11 02:19:32 +00:00
# E0809 21:33:27.754988355 3699302 cq_verifier.cc:228]
# no event received, but expected:tag(257) GRPC_OP_COMPLETE success=1
# /builddir/build/BUILD/grpc-1.39.0/test/core/end2end/goaway_server_test.cc:264
2021-03-22 22:34:21 +00:00
# tag(769) GRPC_OP_COMPLETE success=1
2021-08-11 02:19:32 +00:00
# /builddir/build/BUILD/grpc-1.39.0/test/core/end2end/goaway_server_test.cc:265
# *** SIGABRT received at time=1628544807 on cpu 2 ***
# PC: @ 0x3ff9ce1ec8e (unknown) __pthread_kill_internal
# @ 0x3ff9cd01524 (unknown) (unknown)
# @ 0x3ff9cd01790 (unknown) (unknown)
# @ 0x3ff9d9e3b78 (unknown) (unknown)
# @ 0x3ff9ce1ec8e (unknown) __pthread_kill_internal
# @ 0x3ff9cdd03e0 (unknown) gsignal
# @ 0x3ff9cdb3480 (unknown) abort
# @ 0x2aa3fb850a6 (unknown) cq_verify()
# @ 0x2aa3fb8359e (unknown) main
# @ 0x3ff9cdb3732 (unknown) __libc_start_call_main
# @ 0x3ff9cdb380e (unknown) __libc_start_main@GLIBC_2.2
# @ 0x2aa3fb83cd0 (unknown) (unknown)
#
# Confirmed in 1.39.0 2021-08-09
2021-03-22 22:34:21 +00:00
goaway_server
2021-08-06 12:50:12 +00:00
%endif
2021-03-22 22:34:21 +00:00
2021-08-06 12:50:12 +00:00
%ifarch %{ix86} %{arm32}
# Unexplained:
#
# [ RUN ] GrpcTlsCertificateDistributorTest.SetKeyMaterialsInCallback
# terminate called without an active exception
2021-08-11 02:19:32 +00:00
# *** SIGABRT received at time=1628556696 on cpu 3 ***
# PC: @ 0xf7fa9559 (unknown) __kernel_vsyscall
2021-08-06 12:50:12 +00:00
#
2021-08-11 02:19:32 +00:00
# Confirmed in 1.39.0 2021-08-09
2021-08-06 12:50:12 +00:00
grpc_tls_certificate_distributor
%endif
2021-08-11 02:19:32 +00:00
# Unexplained:
#
# [ RUN ] GrpcToolTest.CallCommandWithTimeoutDeadlineSet
# [libprotobuf ERROR google/protobuf/text_format.cc:319] Error parsing text-format grpc.testing.SimpleRequest: 1:7: Message type "grpc.testing.SimpleRequest" has no field named "redhat".
# Failed to convert text format to proto.
# Failed to parse request.
# /builddir/build/BUILD/grpc-1.39.0/test/cpp/util/grpc_tool_test.cc:912: Failure
# Value of: 0 == GrpcToolMainLib(ArraySize(argv), argv, TestCliCredentials(), std::bind(PrintStream, &output_stream, std::placeholders::_1))
# Actual: false
# Expected: true
# /builddir/build/BUILD/grpc-1.39.0/test/cpp/util/grpc_tool_test.cc:917: Failure
# Value of: nullptr != strstr(output_stream.str().c_str(), "message: \"true\"")
# Actual: false
# Expected: true
# [ FAILED ] GrpcToolTest.CallCommandWithTimeoutDeadlineSet (4 ms)
#
# Confirmed in 1.39.0 2021-08-10
grpc_tool
# Bad assumption about which directory the tests are running in:
#
# E0802 01:16:33.084040928 3911182 subprocess_posix.cc:61]
# execv 'redhat-linux-build/../../test/core/http/python_wrapper.sh'
# failed: No such file or directory
# E0802 01:16:39.086691950 3911178 httpcli_test.cc:52]
# assertion failed: response->status == 200
# *** SIGABRT received at time=16278 66999 on cpu 1 ***
# While we have fixed a couple of problems with these tests, including porting
# the test server to Python 3, success still eludes us.
#
# 127.0.0.1 - - [02/Aug/2021 20:34:47] "GET /get HTTP/1.0" 200 -
# E0802 20:34:48.343858742 1765052 httpcli_test.cc:52]
# assertion failed: response->status == 200
# *** SIGABRT received at time=1627936488 on cpu 2 ***
# PC: @ 0x7fe44b4f2783 (unknown) pthread_kill@@GLIBC_2.34
# @ ... and at least 1 more frames
#
# Confirmed in 1.39.0 2021-08-02
httpcli
httpscli
2021-08-06 12:50:12 +00:00
%ifarch %{ix86} %{arm32}
# Unexplained:
#
2021-08-11 02:19:32 +00:00
# /builddir/build/BUILD/grpc-1.39.0/test/cpp/server/load_reporter/get_cpu_stats_test.cc:39: Failure
# Expected: (busy) <= (total), actual: 9034196912422118975 vs 3761728973136652623
2021-08-06 12:50:12 +00:00
# [ FAILED ] GetCpuStatsTest.BusyNoLargerThanTotal (0 ms)
#
2021-08-11 02:19:32 +00:00
# Confirmed in 1.39.0 2021-08-10
2021-08-06 12:50:12 +00:00
lb_get_cpu_stats
%endif
%ifarch s390x
2021-03-22 22:34:21 +00:00
# Unexplained:
#
2021-08-11 02:19:32 +00:00
# *** SIGABRT received at time=1628614005 on cpu 0 ***
# PC: @ 0x3ff81d1ec8e (unknown) __pthread_kill_internal
# @ 0x3ff81c01524 (unknown) (unknown)
# @ 0x3ff81c01790 (unknown) (unknown)
# @ 0x3ff82363b78 (unknown) (unknown)
# @ 0x3ff81d1ec8e (unknown) __pthread_kill_internal
# @ 0x3ff81cd03e0 (unknown) gsignal
# @ 0x3ff81cb3480 (unknown) abort
# @ 0x2aa18880c9e (unknown) verification_test()
# @ 0x2aa18880a34 (unknown) main
# @ 0x3ff81cb3732 (unknown) __libc_start_call_main
# @ 0x3ff81cb380e (unknown) __libc_start_main@GLIBC_2.2
# @ 0x2aa18880ab0 (unknown) (unknown)
#
# Confirmed in 1.39.0 2021-08-10
2021-03-22 22:34:21 +00:00
murmur_hash
2021-08-06 12:50:12 +00:00
%endif
2021-03-22 22:34:21 +00:00
2021-08-06 12:50:12 +00:00
%ifarch x86_64 %{ix86}
2021-03-22 22:34:21 +00:00
# Unexplained:
#
2021-08-06 12:50:12 +00:00
# [ RUN ] StackTracerTest.Basic
# /builddir/build/BUILD/grpc-1.39.0/test/core/util/stack_tracer_test.cc:35: Failure
# Value of: absl::StrContains(stack_trace, "Basic")
# Actual: false
# Expected: true
# [ FAILED ] StackTracerTest.Basic (1 ms)
2021-06-10 15:00:02 +00:00
#
2021-08-06 12:50:12 +00:00
# Confirmed in 1.39.0 2021-08-05
stack_tracer
2021-03-22 22:34:21 +00:00
%endif
2021-06-10 15:00:02 +00:00
%ifarch x86_64 %{ix86} %{arm64}
# Unexplained hang.
#
# This may be flaky and sometimes succeed; this is known to be the case on
# x86_64.
#
# mutex: 256 512 1024 2048 4096 8192 16384 32768 65536 131072 262144 done 1.372237159 s
# mutex try: 256 512 1024 2048 4096 8192 16384 32768 65536 131072 done 1.285748396 s
# cv: 256 512 1024 2048 done 1.134636147 s
# timedcv: 256 512 1024 done 1.925035489 s
# queue: 256timeout: sending signal TERM to command 'redhat-linux-build/sync_test'
# *** SIGTERM received at time=1627413101 on cpu 0 ***
# PC: @ 0xffff8299f8a8 (unknown) syscall
# @ 0xffff82896850 1732032480 (unknown)
# @ 0xffff82d7b7bc 112 (unknown)
# @ 0xffff8237ac44 48 AbslInternalPerThreadSemWait_lts_20210324
# @ 0xffff8237e5c8 144 absl::lts_20210324::CondVar::WaitCommon()
# @ 0xffff82ce82c4 64 gpr_cv_wait
# @ 0xaaaae0ae2118 288 test()
# @ 0xaaaae0ae1560 64 main
# @ 0xffff828e10c4 272 __libc_start_call_main
# @ 0xffff828e1198 (unknown) __libc_start_main@GLIBC_2.17
#
# Confirmed in 1.39.0 2021-08-01
sync
%endif
2021-03-22 22:34:21 +00:00
# Unexplained:
#
2021-08-06 12:50:12 +00:00
# This may be flaky and sometimes succeed; this is known to be the case on
# ppc64le.
2021-03-22 22:34:21 +00:00
#
2021-08-06 12:50:12 +00:00
# E0805 15:49:03.066330569 3863708 oauth2_credentials.cc:158]
# Call to http server ended with error 401
# [{"access_token":"ya29.AHES6ZRN3-HlhAPya30GnW_bHSb_",
# "expires_in":3599, "token_type":"Bearer"}].
# *** SIGSEGV received at time=1628178543 on cpu 3 ***
# PC: @ 0x7ff236e4219c (unknown) __strlen_evex
# @ ... and at least 1 more frames
2021-06-10 15:00:02 +00:00
#
2021-08-06 12:50:12 +00:00
# Confirmed in 1.39.0 2021-08-05
test_core_security_credentials
2021-03-22 22:34:21 +00:00
2021-08-11 02:19:32 +00:00
# Unexplained:
#
# [ RUN ] XdsTest/BasicTest.Vanilla/XdsResolverV3
# E0811 05:13:55.545624715 3911922 xds_resolver.cc:836]
# [xds_resolver 0x5650c8f82c00] received error from XdsClient:
# {"created":"@1628658835.545596932","description":"xds call
# failed","file":"/builddir/build/BUILD/grpc-1.39.0/src/core/ext/xds/xds_client.cc","file_line":1309}
# E0811 05:13:55.546102538 3911922 cds.cc:533]
# [cdslb 0x5650c8f80dd0] xds error obtaining data for cluster cluster_name:
# {"created":"@1628658835.545596932","description":"xds call
# failed","file":"/builddir/build/BUILD/grpc-1.39.0/src/core/ext/xds/xds_client.cc","file_line":1309}
# E0811 05:13:55.546238067 3911922 xds_cluster_resolver.cc:741]
# [xds_cluster_resolver_lb 0x5650c90f0200] discovery mechanism 0 xds watcher
# reported error: {"created":"@1628658835.545596932","description":"xds call
# failed","file":"/builddir/build/BUILD/grpc-1.39.0/src/core/ext/xds/xds_client.cc","file_line":1309}
# [ OK ] XdsTest/BasicTest.Vanilla/XdsResolverV3 (102 ms)
# [ RUN ] XdsTest/BasicTest.Vanilla/XdsResolverV3WithLoadReporting
# E0811 05:13:55.635384861 3911938 xds_resolver.cc:836]
# [xds_resolver 0x5650c8f82c00] received error from XdsClient:
# {"created":"@1628658835.635350317","description":"xds call
# failed","file":"/builddir/build/BUILD/grpc-1.39.0/src/core/ext/xds/xds_client.cc","file_line":1309}
# E0811 05:13:55.635785649 3911938 cds.cc:533]
# [cdslb 0x7f597800aaf0] xds error obtaining data for cluster cluster_name:
# {"created":"@1628658835.635350317","description":"xds call
# failed","file":"/builddir/build/BUILD/grpc-1.39.0/src/core/ext/xds/xds_client.cc","file_line":1309}
# E0811 05:13:55.635941953 3911938 xds_cluster_resolver.cc:741]
# [xds_cluster_resolver_lb 0x7f597c004940] discovery mechanism 0 xds watcher
# reported error: {"created":"@1628658835.635350317","description":"xds call
# failed","file":"/builddir/build/BUILD/grpc-1.39.0/src/core/ext/xds/xds_client.cc","file_line":1309}
# [ OK ] XdsTest/BasicTest.Vanilla/XdsResolverV3WithLoadReporting (89 ms)
# [ RUN ] XdsTest/BasicTest.Vanilla/FakeResolverV3
# *** SIGSEGV received at time=1628658835 on cpu 5 ***
# PC: @ 0x7f5984c2d19c (unknown) __strlen_evex
# @ ... and at least 1 more frames
#
# Confirmed in 1.39.0 2021-08-11
xds_end2end
2021-03-23 21:59:49 +00:00
EOF
2021-06-23 16:35:07 +00:00
} | xargs -r chmod -v a-x
2021-03-23 21:59:49 +00:00
2021-03-22 22:34:21 +00:00
find %{_vpath_builddir} -type f -perm /0111 -name '*_test' | sort |
2021-03-23 21:59:49 +00:00
while read -r testexe
do
echo " = = = = $ ( d a t e - u - - i s o - 8 6 0 1 = n s ) : $ ( b a s e n a m e " ${testexe}" ) = = = = "
2021-03-22 22:34:21 +00:00
%{__python 3} tools/run_tests/start_port_server.py
2021-03-23 21:59:49 +00:00
# We have tried to skip all tests that hang, but since this is a common
# problem, we use timeout so that a test that does hang breaks the build in
# a reasonable amount of time.
timeout -k 11m -v 10m " $ { t e s t e x e } "
done
2021-03-22 22:34:21 +00:00
# Stop the port server
curl " h t t p : / / l o c a l h o s t : $ { P O R T _ S E R V E R _ P O R T } / q u i t q u i t q u i t " || :
2021-02-03 00:33:37 +00:00
%endif
2021-02-02 13:20:44 +00:00
pushd src/python/grpcio_tests
2021-03-21 21:53:01 +00:00
for suite in \
test_lite \
%{?with_python_aio_tests:test_aio} \
2021-03-22 22:34:21 +00:00
%{?with_python_gevent_tests:test_gevent} \
test_py3_only
2021-03-21 21:53:01 +00:00
do
2021-06-10 15:00:02 +00:00
echo " = = = = $ ( d a t e - u - - i s o - 8 6 0 1 = n s ) : P y t h o n $ { s u i t e } = = = = "
2021-03-21 21:53:01 +00:00
# See the implementation of the %%pytest macro, upon which our environment
2021-06-10 15:00:02 +00:00
# setup is based. We add a timeout that is rather long, as it must apply to
# the entire test suite. (Patching in a per-test timeout would be harder.)
2021-03-21 21:53:01 +00:00
env CFLAGS=" $ { C F L A G S : - ${RPM_OPT_FLAGS} } " \
LDFLAGS=" $ { L D F L A G S : - ${RPM_LD_FLAGS} } " \
PATH=" %{buildroot} %{_bindir} : $ P A T H " \
PYTHONPATH=" $ { P Y T H O N P A T H : - %{buildroot} %{python3_sitearch} : %{buildroot} %{python3_sitelib} } " \
PYTHONDONTWRITEBYTECODE=1 \
2021-06-10 15:00:02 +00:00
timeout -k 31m -v 30m \
2021-03-21 21:53:01 +00:00
%{__python 3} %{py_setup} %{?py_setup_args} " $ { s u i t e } "
done
2021-02-02 13:20:44 +00:00
popd
2018-12-07 08:01:19 +00:00
2021-03-15 13:02:16 +00:00
%if %{without system_gtest}
# As a sanity check for our claim that gtest/gmock are not bundled, check
# installed executables for symbols that appear to have come from gtest/gmock.
foundgtest=0
if find %{buildroot} -type f -perm /0111 \
-execdir objdump --syms --dynamic-syms --demangle '{}' '+' 2>/dev/null |
grep -E '[^:]testing::'
then
echo 'Found traces of gtest/gmock' 1>&2
exit 1
fi
%endif
2018-12-07 08:01:19 +00:00
%files
2021-02-02 13:20:44 +00:00
%license LICENSE NOTICE.txt
%{_libdir} /libaddress_sorting.so.%{c_so_version} *
%{_libdir} /libgpr.so.%{c_so_version} *
%{_libdir} /lib%{name} .so.%{c_so_version} *
%{_libdir} /lib%{name} _unsecure.so.%{c_so_version} *
%{_libdir} /libupb.so.%{c_so_version} *
%files data
%license LICENSE NOTICE.txt
%dir %{_datadir} /%{name}
%{_datadir} /%{name} /roots.pem
%files doc
%license LICENSE NOTICE.txt
%{_pkgdocdir}
%files cpp
%{_libdir} /lib%{name} ++.so.%{cpp_so_version} *
2021-03-22 22:34:21 +00:00
%{_libdir} /lib%{name} ++_alts.so.%{cpp_so_version} *
2021-02-02 13:20:44 +00:00
%{_libdir} /lib%{name} ++_error_details.so.%{cpp_so_version} *
%{_libdir} /lib%{name} ++_reflection.so.%{cpp_so_version} *
%{_libdir} /lib%{name} ++_unsecure.so.%{cpp_so_version} *
2021-03-22 22:34:21 +00:00
%{_libdir} /lib%{name} _plugin_support.so.%{cpp_so_version} *
2021-03-15 16:33:34 +00:00
2021-02-02 13:20:44 +00:00
%{_libdir} /lib%{name} pp_channelz.so.%{cpp_so_version} *
2018-12-07 08:01:19 +00:00
2021-03-22 22:34:21 +00:00
%if %{with core_tests}
2018-12-07 08:01:19 +00:00
%files cli
2021-02-02 13:20:44 +00:00
%{_bindir} /%{name} _cli
2021-03-22 22:34:21 +00:00
%{_libdir} /lib%{name} ++_test_config.so.%{cpp_so_version} *
%{_mandir} /man1/%{name} _cli.1*
%{_mandir} /man1/%{name} _cli-*.1*
%endif
2021-02-02 13:20:44 +00:00
2018-12-07 08:01:19 +00:00
%files plugins
2021-03-22 22:34:21 +00:00
# These are for program use and do not offer a CLI for the end user, so they
# should really be in %%{_libexecdir}; however, too many downstream users
# expect them in $PATH to change this for the time being.
2021-02-02 13:20:44 +00:00
%{_bindir} /%{name} _*_plugin
2018-12-07 08:01:19 +00:00
%files devel
2020-01-15 20:19:19 +00:00
%{_libdir} /libaddress_sorting.so
%{_libdir} /libgpr.so
2021-02-02 13:20:44 +00:00
%{_libdir} /lib%{name} .so
%{_libdir} /lib%{name} _unsecure.so
2020-01-15 20:19:19 +00:00
%{_libdir} /libupb.so
2021-02-02 13:20:44 +00:00
%{_includedir} /%{name}
%{_libdir} /pkgconfig/gpr.pc
%{_libdir} /pkgconfig/%{name} .pc
%{_libdir} /pkgconfig/%{name} _unsecure.pc
2021-03-22 22:34:21 +00:00
%{_libdir} /cmake/%{name}
2021-02-02 13:20:44 +00:00
%{_libdir} /lib%{name} ++.so
2021-03-22 22:34:21 +00:00
%{_libdir} /lib%{name} ++_alts.so
2021-02-02 13:20:44 +00:00
%{_libdir} /lib%{name} ++_error_details.so
%{_libdir} /lib%{name} ++_reflection.so
%{_libdir} /lib%{name} ++_unsecure.so
2021-03-22 22:34:21 +00:00
%{_libdir} /lib%{name} _plugin_support.so
2021-02-02 13:20:44 +00:00
%{_includedir} /%{name} ++
%{_libdir} /pkgconfig/%{name} ++.pc
%{_libdir} /pkgconfig/%{name} ++_unsecure.pc
%{_libdir} /lib%{name} pp_channelz.so
%{_includedir} /%{name} pp
2018-12-07 08:01:19 +00:00
2018-12-14 19:51:14 +00:00
%files -n python3-grpcio
2021-02-02 13:20:44 +00:00
%license LICENSE NOTICE.txt
2018-12-14 19:51:14 +00:00
%{python3_sitearch} /grpc
2020-07-13 19:04:22 +00:00
%{python3_sitearch} /grpcio-%{version} -py%{python3_version} .egg-info
2018-12-14 19:51:14 +00:00
2021-02-02 13:20:44 +00:00
%files -n python3-grpcio-tools
%{python3_sitearch} /grpc_tools
%{python3_sitearch} /grpcio_tools-%{version} -py%{python3_version} .egg-info
2021-06-10 15:00:02 +00:00
%if %{without bootstrap}
%files -n python3-grpcio-admin
%{python3_sitelib} /grpc_admin
%{python3_sitelib} /grpcio_admin-%{version} -py%{python3_version} .egg-info
%endif
2021-02-02 13:20:44 +00:00
%files -n python3-grpcio-channelz
%{python3_sitelib} /grpc_channelz
%{python3_sitelib} /grpcio_channelz-%{version} -py%{python3_version} .egg-info
2021-06-10 15:00:02 +00:00
%if %{without bootstrap}
%files -n python3-grpcio-csds
%{python3_sitelib} /grpc_csds
%{python3_sitelib} /grpcio_csds-%{version} -py%{python3_version} .egg-info
%endif
2021-02-02 13:20:44 +00:00
%files -n python3-grpcio-health-checking
%{python3_sitelib} /grpc_health
%{python3_sitelib} /grpcio_health_checking-%{version} -py%{python3_version} .egg-info
%files -n python3-grpcio-reflection
%{python3_sitelib} /grpc_reflection
%{python3_sitelib} /grpcio_reflection-%{version} -py%{python3_version} .egg-info
%files -n python3-grpcio-status
%{python3_sitelib} /grpc_status
%{python3_sitelib} /grpcio_status-%{version} -py%{python3_version} .egg-info
%files -n python3-grpcio-testing
%{python3_sitelib} /grpc_testing
%{python3_sitelib} /grpcio_testing-%{version} -py%{python3_version} .egg-info
2018-12-07 08:01:19 +00:00
%changelog
2021-07-20 20:53:45 +00:00
%autochangelog