Update to 1.39.0
General: • New version 1.39.0 • Rebase patches as needed C (core) and C++ (cpp): • New C soversion 18 • New C++ soversion 1.39 Python: • New subpackages python3-grpcio-admin and python3-grpcio-csds
This commit is contained in:
parent
603761ed3f
commit
2933935dc1
1
.gitignore
vendored
1
.gitignore
vendored
@ -11,3 +11,4 @@
|
||||
/grpc-1.37.0.tar.gz
|
||||
/grpc-1.37.1.tar.gz
|
||||
/googletest-release-1.11.0.tar.gz
|
||||
/grpc-1.39.0.tar.gz
|
||||
|
@ -1,41 +0,0 @@
|
||||
From 5d56d52e0829e503e403568de66bb6cebfec3202 Mon Sep 17 00:00:00 2001
|
||||
From: Sergey Avseyev <sergey.avseyev@gmail.com>
|
||||
Date: Wed, 28 Nov 2018 18:53:22 +0300
|
||||
Subject: [PATCH 1/4] enforce system crypto policies
|
||||
|
||||
---
|
||||
test/core/handshake/client_ssl.cc | 3 +--
|
||||
test/core/handshake/server_ssl_common.cc | 3 +--
|
||||
2 files changed, 2 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/test/core/handshake/client_ssl.cc b/test/core/handshake/client_ssl.cc
|
||||
index 467df6e229..b31934e51b 100644
|
||||
--- a/test/core/handshake/client_ssl.cc
|
||||
+++ b/test/core/handshake/client_ssl.cc
|
||||
@@ -161,8 +161,7 @@ static void server_thread(void* arg) {
|
||||
// Set the cipher list to match the one expressed in
|
||||
// src/core/tsi/ssl_transport_security.c.
|
||||
const char* cipher_list =
|
||||
- "ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-"
|
||||
- "SHA384:ECDHE-RSA-AES256-GCM-SHA384";
|
||||
+ "PROFILE=SYSTEM";
|
||||
if (!SSL_CTX_set_cipher_list(ctx, cipher_list)) {
|
||||
ERR_print_errors_fp(stderr);
|
||||
gpr_log(GPR_ERROR, "Couldn't set server cipher list.");
|
||||
diff --git a/test/core/handshake/server_ssl_common.cc b/test/core/handshake/server_ssl_common.cc
|
||||
index 41b2829d8b..8b21ea7c73 100644
|
||||
--- a/test/core/handshake/server_ssl_common.cc
|
||||
+++ b/test/core/handshake/server_ssl_common.cc
|
||||
@@ -167,8 +167,7 @@ bool server_ssl_test(const char* alpn_list[], unsigned int alpn_list_len,
|
||||
// Set the cipher list to match the one expressed in
|
||||
// src/core/tsi/ssl_transport_security.c.
|
||||
const char* cipher_list =
|
||||
- "ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-"
|
||||
- "SHA384:ECDHE-RSA-AES256-GCM-SHA384";
|
||||
+ "PROFILE=SYSTEM";
|
||||
if (!SSL_CTX_set_cipher_list(ctx, cipher_list)) {
|
||||
ERR_print_errors_fp(stderr);
|
||||
gpr_log(GPR_ERROR, "Couldn't set server cipher list.");
|
||||
--
|
||||
2.21.0
|
||||
|
@ -1,6 +1,6 @@
|
||||
diff -Naur grpc-1.37.0-original/tools/distrib/python/grpcio_tools/protoc_lib_deps.py grpc-1.37.0/tools/distrib/python/grpcio_tools/protoc_lib_deps.py
|
||||
--- grpc-1.37.0-original/tools/distrib/python/grpcio_tools/protoc_lib_deps.py 2021-04-06 18:48:56.000000000 -0400
|
||||
+++ grpc-1.37.0/tools/distrib/python/grpcio_tools/protoc_lib_deps.py 2021-04-08 15:30:28.142459012 -0400
|
||||
diff -Naur grpc-1.39.0-original/tools/distrib/python/grpcio_tools/protoc_lib_deps.py grpc-1.39.0/tools/distrib/python/grpcio_tools/protoc_lib_deps.py
|
||||
--- grpc-1.39.0-original/tools/distrib/python/grpcio_tools/protoc_lib_deps.py 2021-07-20 18:39:39.000000000 -0400
|
||||
+++ grpc-1.39.0/tools/distrib/python/grpcio_tools/protoc_lib_deps.py 2021-07-23 14:46:07.887714469 -0400
|
||||
@@ -14,10 +14,9 @@
|
||||
# limitations under the License.
|
||||
|
||||
@ -13,6 +13,6 @@ diff -Naur grpc-1.37.0-original/tools/distrib/python/grpcio_tools/protoc_lib_dep
|
||||
-CC_INCLUDE='third_party/protobuf/src'
|
||||
-PROTO_INCLUDE='third_party/protobuf/src'
|
||||
-
|
||||
-PROTOBUF_SUBMODULE_VERSION="d7e943b8d2bc444a8c770644e73d090b486f8b37"
|
||||
-PROTOBUF_SUBMODULE_VERSION="436bd7880e458532901c58f4d9d1ea23fa7edd52"
|
||||
+CC_INCLUDE='/usr/include'
|
||||
+PROTO_INCLUDE='/usr/include'
|
69
grpc-1.39.0-python2-test-scripts.patch
Normal file
69
grpc-1.39.0-python2-test-scripts.patch
Normal file
@ -0,0 +1,69 @@
|
||||
diff -Naur --no-dereference grpc-1.39.0-original/test/core/http/test_server.py grpc-1.39.0/test/core/http/test_server.py
|
||||
--- grpc-1.39.0-original/test/core/http/test_server.py 2021-07-20 18:39:39.000000000 -0400
|
||||
+++ grpc-1.39.0/test/core/http/test_server.py 2021-08-02 15:53:10.756821227 -0400
|
||||
@@ -15,7 +15,7 @@
|
||||
"""Server for httpcli_test"""
|
||||
|
||||
import argparse
|
||||
-import BaseHTTPServer
|
||||
+import http.server
|
||||
import os
|
||||
import ssl
|
||||
import sys
|
||||
@@ -26,7 +26,7 @@
|
||||
_KEY = os.path.abspath(
|
||||
os.path.join(os.path.dirname(sys.argv[0]), '../../..',
|
||||
'src/core/tsi/test_creds/server1.key'))
|
||||
-print _PEM
|
||||
+print(_PEM)
|
||||
open(_PEM).close()
|
||||
|
||||
argp = argparse.ArgumentParser(description='Server for httpcli_test')
|
||||
@@ -34,29 +34,29 @@
|
||||
argp.add_argument('-s', '--ssl', default=False, action='store_true')
|
||||
args = argp.parse_args()
|
||||
|
||||
-print 'server running on port %d' % args.port
|
||||
+print('server running on port %d' % args.port)
|
||||
|
||||
|
||||
-class Handler(BaseHTTPServer.BaseHTTPRequestHandler):
|
||||
+class Handler(http.server.BaseHTTPRequestHandler):
|
||||
|
||||
def good(self):
|
||||
self.send_response(200)
|
||||
self.send_header('Content-Type', 'text/html')
|
||||
self.end_headers()
|
||||
- self.wfile.write('<html><head><title>Hello world!</title></head>')
|
||||
- self.wfile.write('<body><p>This is a test</p></body></html>')
|
||||
+ self.wfile.write(b'<html><head><title>Hello world!</title></head>')
|
||||
+ self.wfile.write(b'<body><p>This is a test</p></body></html>')
|
||||
|
||||
def do_GET(self):
|
||||
if self.path == '/get':
|
||||
self.good()
|
||||
|
||||
def do_POST(self):
|
||||
- content = self.rfile.read(int(self.headers.getheader('content-length')))
|
||||
+ content = self.rfile.read(int(self.headers.get('content-length')))
|
||||
if self.path == '/post' and content == 'hello':
|
||||
self.good()
|
||||
|
||||
|
||||
-httpd = BaseHTTPServer.HTTPServer(('localhost', args.port), Handler)
|
||||
+httpd = http.server.HTTPServer(('localhost', args.port), Handler)
|
||||
if args.ssl:
|
||||
httpd.socket = ssl.wrap_socket(httpd.socket,
|
||||
certfile=_PEM,
|
||||
diff -Naur --no-dereference grpc-1.39.0-original/tools/distrib/python_wrapper.sh grpc-1.39.0/tools/distrib/python_wrapper.sh
|
||||
--- grpc-1.39.0-original/tools/distrib/python_wrapper.sh 2021-07-20 18:39:39.000000000 -0400
|
||||
+++ grpc-1.39.0/tools/distrib/python_wrapper.sh 2021-08-02 13:04:51.034495917 -0400
|
||||
@@ -14,7 +14,7 @@
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
-for p in python2.7 python2.6 python2 python not_found ; do
|
||||
+for p in python3 not_found ; do
|
||||
|
||||
python=$(which $p || echo not_found)
|
||||
|
30
grpc-1.39.0-python_wrapper-path.patch
Normal file
30
grpc-1.39.0-python_wrapper-path.patch
Normal file
@ -0,0 +1,30 @@
|
||||
diff -Naur grpc-1.39.0-original/test/core/http/httpcli_test.cc grpc-1.39.0/test/core/http/httpcli_test.cc
|
||||
--- grpc-1.39.0-original/test/core/http/httpcli_test.cc 2021-07-20 18:39:39.000000000 -0400
|
||||
+++ grpc-1.39.0/test/core/http/httpcli_test.cc 2021-08-02 11:38:43.215629892 -0400
|
||||
@@ -165,9 +165,9 @@
|
||||
lslash = me + (lslash - me) - sizeof("http");
|
||||
}
|
||||
root = static_cast<char*>(
|
||||
- gpr_malloc(static_cast<size_t>(lslash - me + sizeof("/../.."))));
|
||||
+ gpr_malloc(static_cast<size_t>(lslash - me + sizeof("/.."))));
|
||||
memcpy(root, me, static_cast<size_t>(lslash - me));
|
||||
- memcpy(root + (lslash - me), "/../..", sizeof("/../.."));
|
||||
+ memcpy(root + (lslash - me), "/..", sizeof("/.."));
|
||||
} else {
|
||||
root = gpr_strdup(".");
|
||||
}
|
||||
diff -Naur grpc-1.39.0-original/test/core/http/httpscli_test.cc grpc-1.39.0/test/core/http/httpscli_test.cc
|
||||
--- grpc-1.39.0-original/test/core/http/httpscli_test.cc 2021-07-20 18:39:39.000000000 -0400
|
||||
+++ grpc-1.39.0/test/core/http/httpscli_test.cc 2021-08-02 11:38:52.825572125 -0400
|
||||
@@ -166,9 +166,9 @@
|
||||
lslash = me + (lslash - me) - sizeof("http");
|
||||
}
|
||||
root = static_cast<char*>(
|
||||
- gpr_malloc(static_cast<size_t>(lslash - me + sizeof("/../.."))));
|
||||
+ gpr_malloc(static_cast<size_t>(lslash - me + sizeof("/.."))));
|
||||
memcpy(root, me, static_cast<size_t>(lslash - me));
|
||||
- memcpy(root + (lslash - me), "/../..", sizeof("/../.."));
|
||||
+ memcpy(root + (lslash - me), "/..", sizeof("/.."));
|
||||
} else {
|
||||
root = gpr_strdup(".");
|
||||
}
|
40
grpc-1.39.0-system-crypto-policies.patch
Normal file
40
grpc-1.39.0-system-crypto-policies.patch
Normal file
@ -0,0 +1,40 @@
|
||||
diff -Naur grpc-1.39.0-original/src/objective-c/tests/CronetTests/CronetUnitTests.mm grpc-1.39.0/src/objective-c/tests/CronetTests/CronetUnitTests.mm
|
||||
--- grpc-1.39.0-original/src/objective-c/tests/CronetTests/CronetUnitTests.mm 2021-07-20 18:39:39.000000000 -0400
|
||||
+++ grpc-1.39.0/src/objective-c/tests/CronetTests/CronetUnitTests.mm 2021-07-23 14:42:11.649278304 -0400
|
||||
@@ -103,7 +103,7 @@
|
||||
BIO_free(pem);
|
||||
|
||||
// Select cipher suite
|
||||
- SSL_CTX_set_cipher_list(ctx, "ECDHE-RSA-AES128-GCM-SHA256");
|
||||
+ SSL_CTX_set_cipher_list(ctx, "PROFILE=SYSTEM");
|
||||
|
||||
// Select ALPN protocol
|
||||
SSL_CTX_set_alpn_select_cb(ctx, alpn_cb, NULL);
|
||||
diff -Naur grpc-1.39.0-original/test/core/handshake/client_ssl.cc grpc-1.39.0/test/core/handshake/client_ssl.cc
|
||||
--- grpc-1.39.0-original/test/core/handshake/client_ssl.cc 2021-07-20 18:39:39.000000000 -0400
|
||||
+++ grpc-1.39.0/test/core/handshake/client_ssl.cc 2021-07-23 14:41:27.549570232 -0400
|
||||
@@ -220,9 +220,7 @@
|
||||
|
||||
// Set the cipher list to match the one expressed in
|
||||
// src/core/tsi/ssl_transport_security.cc.
|
||||
- const char* cipher_list =
|
||||
- "ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-"
|
||||
- "SHA384:ECDHE-RSA-AES256-GCM-SHA384";
|
||||
+ const char* cipher_list = "PROFILE=SYSTEM";
|
||||
if (!SSL_CTX_set_cipher_list(ctx, cipher_list)) {
|
||||
ERR_print_errors_fp(stderr);
|
||||
gpr_log(GPR_ERROR, "Couldn't set server cipher list.");
|
||||
diff -Naur grpc-1.39.0-original/test/core/handshake/server_ssl_common.cc grpc-1.39.0/test/core/handshake/server_ssl_common.cc
|
||||
--- grpc-1.39.0-original/test/core/handshake/server_ssl_common.cc 2021-07-20 18:39:39.000000000 -0400
|
||||
+++ grpc-1.39.0/test/core/handshake/server_ssl_common.cc 2021-07-23 14:41:14.369657480 -0400
|
||||
@@ -204,9 +204,7 @@
|
||||
|
||||
// Set the cipher list to match the one expressed in
|
||||
// src/core/tsi/ssl_transport_security.c.
|
||||
- const char* cipher_list =
|
||||
- "ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-"
|
||||
- "SHA384:ECDHE-RSA-AES256-GCM-SHA384";
|
||||
+ const char* cipher_list = "PROFILE=SYSTEM";
|
||||
if (!SSL_CTX_set_cipher_list(ctx, cipher_list)) {
|
||||
ERR_print_errors_fp(stderr);
|
||||
gpr_log(GPR_ERROR, "Couldn't set server cipher list.");
|
@ -1,6 +1,7 @@
|
||||
# These are not real spelling errors...
|
||||
addFilter(r' spelling-error .*[ \(]en_US\)? (microservices|auth|gRPC|'
|
||||
r'channelz|proto(buf)?|unary|rpc)|grpcio ')
|
||||
r'channelz|proto(buf)?|unary|rpc|grpcio|csds|localhost|'
|
||||
r'grpc(debug)?|servicers|[Dx]DS|programatically) ')
|
||||
# Maybe some of these are supposed to be CRNL-terminated:
|
||||
addFilter(r' wrong-file-end-of-line-encoding '
|
||||
r'/usr/share/doc/grpc/examples/csharp/')
|
||||
@ -24,3 +25,8 @@ addFilter(r' shared-lib-without-dependency-information '
|
||||
addFilter(r' no-manual-page-for-binary grpc_.*_plugin$')
|
||||
# There is really no version information available.
|
||||
addFilter(r' unversioned-explicit-provides bundled\(upb\)')
|
||||
# We use rpmautospec, which rpmlint may not yet understand
|
||||
addFilter(r' Possible unexpanded macro in: .*%autorelease$')
|
||||
addFilter(r' %changelog entries must start with \*$')
|
||||
# This really does make sense:
|
||||
addFilter(r' summary-not-capitalized .*xDS$')
|
||||
|
299
grpc.spec
299
grpc.spec
@ -2,11 +2,19 @@
|
||||
# errors.
|
||||
%global cpp_std 17
|
||||
|
||||
# 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
|
||||
|
||||
# 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
|
||||
# because it is used only at build time, and is not installed.
|
||||
# because it is used only at build time, and contributes nothing to the
|
||||
# installed files.
|
||||
%global gtest_version 1.11.0
|
||||
%bcond_with system_gtest
|
||||
|
||||
@ -28,16 +36,16 @@
|
||||
%bcond_with python_gevent_tests
|
||||
|
||||
Name: grpc
|
||||
Version: 1.37.1
|
||||
Version: 1.39.0
|
||||
Release: %autorelease
|
||||
Summary: RPC library and framework
|
||||
|
||||
# CMakeLists.txt: gRPC_CORE_SOVERSION
|
||||
%global c_so_version 15
|
||||
%global c_so_version 18
|
||||
# CMakeLists.txt: gRPC_CPP_SOVERSION
|
||||
%global cpp_so_version 1.37
|
||||
%global cpp_so_version 1.39
|
||||
# CMakeLists.txt: gRPC_CSHARP_SOVERSION
|
||||
%global csharp_so_version 2.37
|
||||
%global csharp_so_version 2.39
|
||||
# See https://github.com/abseil/abseil-cpp/issues/950#issuecomment-843169602
|
||||
# regarding unusual SOVERSION style (not a single number).
|
||||
|
||||
@ -157,6 +165,7 @@ BuildRequires: python3dist(cython)
|
||||
# grpcio_tests (src/python/grpcio_tests/setup.py) install_requires:
|
||||
# enum34>=1.0.4; python_version<'3.4'
|
||||
|
||||
# grpcio_csds (src/python/grpcio_csds/setup.py) install_requires:
|
||||
# grpcio_channelz (src/python/grpcio_channelz/setup.py) install_requires:
|
||||
# grpcio_health_checking (src/python/grpcio_health_checking/setup.py)
|
||||
# install_requires:
|
||||
@ -174,9 +183,16 @@ BuildRequires: python3dist(protobuf) >= 3.6.0
|
||||
# grpcio_status (src/python/grpcio_status/setup.py) install_requires:
|
||||
BuildRequires: python3dist(googleapis-common-protos) >= 1.5.5
|
||||
|
||||
%if %{without bootstrap}
|
||||
# grpcio_csds (src/python/grpcio_csds/setup.py) install_requires
|
||||
BuildRequires: python3dist(xds-protos) >= 0.0.7
|
||||
%endif
|
||||
|
||||
# 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.
|
||||
#
|
||||
# Similarly, grpcio_admin depends on grpcio_channelz and grpcio_csds.
|
||||
|
||||
# grpcio_tests (src/python/grpcio_tests/setup.py) install_requires:
|
||||
BuildRequires: python3dist(coverage) >= 4.0
|
||||
@ -213,11 +229,13 @@ BuildRequires: dos2unix
|
||||
# Apply Fedora system crypto policies. Since this is Fedora-specific, the patch
|
||||
# is not suitable for upstream.
|
||||
# https://docs.fedoraproject.org/en-US/packaging-guidelines/CryptoPolicies/#_cc_applications
|
||||
Patch0: %{name}-0001-enforce-system-crypto-policies.patch
|
||||
#
|
||||
# In fact, this may not be needed, since only testing code is patched.
|
||||
Patch0: %{name}-1.39.0-system-crypto-policies.patch
|
||||
# Build python3-grpcio_tools against system protobuf packages instead of
|
||||
# expecting a git submodule. Must also add requisite linker flags using
|
||||
# GRPC_PYTHON_LDFLAGS.
|
||||
Patch1: %{name}-1.37.0-python-grpcio_tools-use-system-protobuf.patch
|
||||
Patch1: %{name}-1.39.0-python-grpcio_tools-use-system-protobuf.patch
|
||||
# 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.
|
||||
@ -239,9 +257,12 @@ Patch5: %{name}-1.36.4-python-grpcio_tests-skip-compression-tests.patch
|
||||
# Remove it. We still have to build the core tests and link a test library
|
||||
# (libgrpc++_test_config.so…)
|
||||
Patch6: %{name}-1.37.0-grpc_cli-do-not-link-gtest-gmock.patch
|
||||
# In Python 3.10, “import importlib” does not implicitly import importlib.abc.
|
||||
# See https://github.com/grpc/grpc/issues/26062.
|
||||
Patch7: %{name}-1.37.0-importlib-abc-python3.10.patch
|
||||
# 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.
|
||||
Patch7: %{name}-1.39.0-python_wrapper-path.patch
|
||||
# Port Python 2 scripts used in core tests to Python 3
|
||||
Patch8: %{name}-1.39.0-python2-test-scripts.patch
|
||||
|
||||
Requires: %{name}-data = %{version}-%{release}
|
||||
|
||||
@ -310,11 +331,15 @@ BuildArch: noarch
|
||||
|
||||
Obsoletes: python-grpcio-doc < 1.26.0-13
|
||||
Provides: python-grpcio-doc = %{version}-%{release}
|
||||
%if %{without bootstrap}
|
||||
Provides: python-grpcio-admin-doc = %{version}-%{release}
|
||||
Provides: python-grpcio-csds-doc = %{version}-%{release}
|
||||
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}
|
||||
%endif
|
||||
|
||||
%description doc
|
||||
Documentation and examples for gRPC, including documentation for the following:
|
||||
@ -330,6 +355,8 @@ Documentation and examples for gRPC, including documentation for the following:
|
||||
○ Internals
|
||||
• Python
|
||||
○ grpcio
|
||||
○ grpcio_admin
|
||||
○ grpcio_csds
|
||||
○ grpcio_channelz
|
||||
○ grpcio_health_checking
|
||||
○ grpcio_reflection
|
||||
@ -424,12 +451,69 @@ Summary: Package for gRPC Python tools
|
||||
Package for gRPC Python tools.
|
||||
|
||||
|
||||
%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 "localhost:50051":
|
||||
|
||||
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 "grpcdebug":
|
||||
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 "grpcdebug":
|
||||
https://github.com/grpc-ecosystem/grpcdebug.
|
||||
|
||||
For any issues or suggestions, please send to
|
||||
https://github.com/grpc/grpc/issues.
|
||||
%endif
|
||||
|
||||
|
||||
%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
|
||||
gRPC Python Channelz package
|
||||
============================
|
||||
|
||||
Channelz is a live debug tool in gRPC Python.
|
||||
|
||||
|
||||
@ -439,6 +523,9 @@ License: ASL 2.0
|
||||
BuildArch: noarch
|
||||
|
||||
%description -n python3-grpcio-health-checking
|
||||
gRPC Python Health Checking
|
||||
===========================
|
||||
|
||||
Reference package for GRPC Python health checking.
|
||||
|
||||
|
||||
@ -448,6 +535,9 @@ License: ASL 2.0
|
||||
BuildArch: noarch
|
||||
|
||||
%description -n python3-grpcio-reflection
|
||||
gRPC Python Reflection package
|
||||
==============================
|
||||
|
||||
Reference package for reflection in GRPC Python.
|
||||
|
||||
|
||||
@ -457,6 +547,9 @@ License: ASL 2.0
|
||||
BuildArch: noarch
|
||||
|
||||
%description -n python3-grpcio-status
|
||||
gRPC Python Status Proto
|
||||
===========================
|
||||
|
||||
Reference package for GRPC Python status proto mapping.
|
||||
|
||||
|
||||
@ -466,12 +559,16 @@ License: ASL 2.0
|
||||
BuildArch: noarch
|
||||
|
||||
%description -n python3-grpcio-testing
|
||||
gRPC Python Testing Package
|
||||
===========================
|
||||
|
||||
Testing utilities for gRPC Python.
|
||||
|
||||
|
||||
%prep
|
||||
%autosetup -p1
|
||||
|
||||
echo '===== Preparing gtest/gmock =====' 2>&1
|
||||
%if %{without system_gtest}
|
||||
# Copy in the needed gtest/gmock implementations.
|
||||
%setup -q -T -D -b 1
|
||||
@ -499,12 +596,14 @@ sed -r -i 's/^([[:blank:]]*)(\$\{_gRPC_GFLAGS_LIBRARIES\})/'\
|
||||
'\1\2\n\1gtest\n\1gmock/' CMakeLists.txt
|
||||
%endif
|
||||
|
||||
echo '===== Removing bundled wyhash =====' 2>&1
|
||||
# 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
|
||||
|
||||
echo '===== Removing bundled xxhash =====' 2>&1
|
||||
# Remove bundled xxhash
|
||||
rm -rvf third_party/xxhash
|
||||
# Since grpc sets XXH_INCLUDE_ALL wherever it uses xxhash, it is using xxhash
|
||||
@ -513,14 +612,17 @@ rm -rvf third_party/xxhash
|
||||
# found instead, and there are no linker flags to add. See also
|
||||
# https://github.com/grpc/grpc/issues/25945.
|
||||
|
||||
echo '===== Fixing permissions =====' 2>&1
|
||||
# Fix some of the weirdest accidentally-executable files
|
||||
find . -type f -name '*.md' -perm /0111 -execdir chmod -v a-x '{}' '+'
|
||||
|
||||
echo '===== Loosening version specifications =====' 2>&1
|
||||
# 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/('Sphinx)~=.*'/\1'/" setup.py
|
||||
|
||||
echo '===== Removing selected unused sources =====' 2>&1
|
||||
# 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.
|
||||
@ -549,6 +651,7 @@ rm -rvf examples/android src/android
|
||||
# to do that.
|
||||
find . -type f -name .gitignore -print -delete
|
||||
|
||||
echo '===== Fixing shebangs =====' 2>&1
|
||||
# Find executables with /usr/bin/env shebangs in the examples, and fix them.
|
||||
find examples -type f -perm /0111 |
|
||||
while read -r fn
|
||||
@ -560,12 +663,14 @@ find examples -type f -perm /0111 |
|
||||
fi
|
||||
done
|
||||
|
||||
echo '===== Fixing line endings =====' 2>&1
|
||||
# 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.
|
||||
|
||||
echo '===== Fixing hard-coded C++ standard =====' 2>&1
|
||||
# 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.
|
||||
@ -576,23 +681,27 @@ sed -r -i 's/(std=c\+\+)11/\1%{cpp_std}/g' \
|
||||
tools/run_tests/artifacts/artifact_targets.py \
|
||||
tools/distrib/python/grpcio_tools/setup.py
|
||||
|
||||
echo '===== Fixing .pc install path =====' 2>&1
|
||||
# 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
|
||||
|
||||
echo '===== Patching to skip certain broken tests =====' 2>&1
|
||||
%if %{without unexplained_failing_python_lite_tests}
|
||||
# Confirmed in 1.39.0 2021-07-29
|
||||
# TODO figure out how to report this upstream in a useful/actionable way
|
||||
sed -r -i "s/^([[:blank:]]*)(def \
|
||||
test_immediately_connectable_channel_connectivity)\\b/\
|
||||
sed -r -i "s/^([[:blank:]]*)(def test_deallocated_server_stops)\\b/\
|
||||
\\1@unittest.skip('May hang unexplainedly')\\n\\1\\2/" \
|
||||
'src/python/grpcio_tests/tests/unit/_channel_connectivity_test.py'
|
||||
'src/python/grpcio_tests/tests/unit/_server_shutdown_test.py'
|
||||
|
||||
%ifarch %{ix86} %{arm32}
|
||||
# Confirmed in 1.39.0 2021-07-29
|
||||
# TODO figure out how to report this upstream in a useful/actionable way
|
||||
sed -r -i "s/^([[:blank:]]*)(def test_concurrent_stream_stream)\\b/\
|
||||
\\1@unittest.skip('May hang unexplainedly')\\n\\1\\2/" \
|
||||
'src/python/grpcio_tests/tests/testing/_client_test.py'
|
||||
|
||||
# Confirmed in 1.39.0 2021-07-29
|
||||
# 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
|
||||
@ -603,39 +712,13 @@ sed -r -i \
|
||||
'src/python/grpcio_tests/tests/unit/_session_cache_test.py'
|
||||
%endif
|
||||
|
||||
%ifarch s390x
|
||||
# Unexplained segmentation fault
|
||||
# TODO figure out how to report this upstream in a useful/actionable way
|
||||
sed -r -i "s/^([[:blank:]]*)(def test_start_xds_server)\\b/\
|
||||
\\1@unittest.skip('Unexplained segmentation fault')\\n\\1\\2/" \
|
||||
'src/python/grpcio_tests/tests/unit/_xds_credentials_test.py'
|
||||
%endif
|
||||
|
||||
%if 0%{?fedora} > 34 || 0%{?rhel} > 8
|
||||
# Python 3.10 failures:
|
||||
|
||||
# AssertionError: 'StatusCode.NOT_FOUND' not found in '<_InactiveRpcError of
|
||||
# RPC that terminated with:\n\tstatus = NOT_FOUND\n\tdetails = "Failed to get
|
||||
# the channel, please ensure your channel_id==10000 is
|
||||
# valid"\n\tdebug_error_string =
|
||||
# "{"created":"@1619130545.513500675","description":"Error received from peer
|
||||
# ipv6:[::1]:35867","file":"src/core/lib/surface/call.cc","file_line":1067,"grpc_message":"Failed
|
||||
# to get the channel, please ensure your channel_id==10000 is
|
||||
# valid","grpc_status":5}"\n>'
|
||||
#
|
||||
# AttributeError: 'NoneType' object has no attribute 'IsInitialized'
|
||||
sed -r -i "s/^([[:blank:]]*)(def test_invalid_query_get_\
|
||||
(channel|server(_sockets)?|socket|subchannel))\\b/\
|
||||
\\1@unittest.skip('Unexplained failure')\\n\\1\\2/" \
|
||||
'src/python/grpcio_tests/tests/channelz/_channelz_servicer_test.py'
|
||||
%endif
|
||||
|
||||
%endif
|
||||
|
||||
|
||||
%build
|
||||
# ~~~~ C (core) and C++ (cpp) ~~~~
|
||||
|
||||
echo '===== Building C (core) and C++ components =====' 2>&1
|
||||
# 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)
|
||||
#
|
||||
@ -672,8 +755,13 @@ sed -r -i "s/^([[:blank:]]*)(def test_invalid_query_get_\
|
||||
-GNinja
|
||||
%cmake_build
|
||||
|
||||
echo '===== Building C (core) and C++ documentation =====' 2>&1
|
||||
# Doxygen (reference: C/core, C++, objc)
|
||||
./tools/doxygen/run_doxygen.sh
|
||||
|
||||
# ~~~~ Python ~~~~
|
||||
|
||||
echo '===== Building Python grpcio package =====' 2>&1
|
||||
# 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
|
||||
@ -711,6 +799,7 @@ export GRPC_PYTHON_LDFLAGS="$(pkg-config --libs protobuf)"
|
||||
-O1 --skip-build --root "${PYROOT}"
|
||||
|
||||
# ~~ grpcio-tools ~~
|
||||
echo '===== Building Python grpcio_tools package =====' 2>&1
|
||||
pushd "tools/distrib/python/grpcio_tools/" >/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
|
||||
@ -734,13 +823,17 @@ find . -type f -name protoc.py -execdir sed -r -i '1{/^#!/d}' '{}' '+'
|
||||
-O1 --skip-build --root "${PYROOT}"
|
||||
popd >/dev/null
|
||||
|
||||
# ~~ pure-python modules grpcio-* ~~
|
||||
for suffix in channelz health_checking reflection status testing tests
|
||||
echo '===== Building pure-Python packages =====' 1>&2
|
||||
for suffix in channelz %{?!with_bootstrap:csds admin} health_checking \
|
||||
reflection status testing tests
|
||||
do
|
||||
echo "----> grpcio_${suffix} <----" 1>&2
|
||||
pushd "src/python/grpcio_${suffix}/" >/dev/null
|
||||
%{__python3} %{py_setup} %{?py_setup_args} preprocess
|
||||
if [ "${suffix}" != 'testing' ]
|
||||
if ! echo "${suffix}" | grep -E "^(admin|csds)$" >/dev/null
|
||||
then
|
||||
%{__python3} %{py_setup} %{?py_setup_args} preprocess
|
||||
fi
|
||||
if ! echo "${suffix}" | grep -E "^(admin|csds|testing)$" >/dev/null
|
||||
then
|
||||
%{__python3} %{py_setup} %{?py_setup_args} build_package_protos
|
||||
fi
|
||||
@ -750,12 +843,12 @@ do
|
||||
popd >/dev/null
|
||||
done
|
||||
|
||||
# ~~ documentation ~~
|
||||
# Doxygen (reference: C/core, C++, objc)
|
||||
./tools/doxygen/run_doxygen.sh
|
||||
echo '===== Building pure-Python documentation =====' 1>&2
|
||||
%if %{without bootstrap}
|
||||
# Sphinx (Python)
|
||||
%{__python3} %{py_setup} %{?py_setup_args} doc
|
||||
rm -vrf doc/build/.buildinfo doc/build/.doctrees
|
||||
%endif
|
||||
|
||||
|
||||
%install
|
||||
@ -808,7 +901,8 @@ pushd "tools/distrib/python/grpcio_tools/" >/dev/null
|
||||
popd >/dev/null
|
||||
|
||||
# ~~ pure-python modules grpcio-* ~~
|
||||
for suffix in channelz health_checking reflection status testing
|
||||
for suffix in channelz %{?!with_bootstrap:csds admin} health_checking \
|
||||
reflection status testing
|
||||
do
|
||||
pushd "src/python/grpcio_${suffix}/" >/dev/null
|
||||
%py3_install
|
||||
@ -842,8 +936,10 @@ rm -rvf "%{buildroot}$(dirname '%{sysbundle}')"
|
||||
|
||||
install -D -t '%{buildroot}%{_pkgdocdir}' -m 0644 -p AUTHORS *.md
|
||||
cp -rp doc/ref examples '%{buildroot}%{_pkgdocdir}'
|
||||
%if %{without bootstrap}
|
||||
install -d '%{buildroot}%{_pkgdocdir}/python'
|
||||
cp -rp doc/build '%{buildroot}%{_pkgdocdir}/python/html'
|
||||
%endif
|
||||
|
||||
|
||||
%check
|
||||
@ -878,11 +974,24 @@ flaky_network
|
||||
|
||||
# Bad assumption about which directory the tests are running in:
|
||||
#
|
||||
# E0413 22:43:56.610039235 19861 subprocess_posix.cc:61]
|
||||
# execv 'x86_64-redhat-linux-gnu/../../test/core/http/python_wrapper.sh'
|
||||
# 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
|
||||
# E0413 22:44:02.613251909 19856 httpscli_test.cc:55]
|
||||
# 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
|
||||
|
||||
@ -907,6 +1016,8 @@ httpscli
|
||||
# This server is not currently running.
|
||||
#
|
||||
# To start it, run tools/run_tests/start_port_server.py
|
||||
#
|
||||
# CHECKME
|
||||
admin_services_end2end
|
||||
alts_concurrent_connectivity
|
||||
async_end2end
|
||||
@ -943,6 +1054,8 @@ xds_end2end
|
||||
# *** SIGSEGV received at time=1618368497 ***
|
||||
# PC: @ 0x7fc56bfc1d3a (unknown) __strlen_sse2
|
||||
# @ ... and at least 1 more frames
|
||||
#
|
||||
# CHECKME
|
||||
evaluate_args
|
||||
# Unexplained:
|
||||
#
|
||||
@ -951,6 +1064,8 @@ evaluate_args
|
||||
# Value of: stack_trace->find("GetCurrentStackTrace") != std::string::npos
|
||||
# Actual: false
|
||||
# Expected: true
|
||||
#
|
||||
# CHECKME
|
||||
examine_stack
|
||||
# Unexplained:
|
||||
#
|
||||
@ -960,6 +1075,8 @@ examine_stack
|
||||
# Actual: false
|
||||
# Expected: true
|
||||
# [ FAILED ] StackTracerTest.Basic (3 ms)
|
||||
#
|
||||
# CHECKME
|
||||
stack_tracer
|
||||
# Unexplained:
|
||||
#
|
||||
@ -968,6 +1085,8 @@ stack_tracer
|
||||
# [{"access_token":"ya29.AHES6ZRN3-HlhAPya30GnW_bHSb_", "expires_in":3599,
|
||||
# "token_type":"Bearer"}].
|
||||
# *** SIGSEGV received at time=1618368426 ***
|
||||
#
|
||||
# CHECKME
|
||||
test_core_security_credentials
|
||||
|
||||
%ifarch s390x
|
||||
@ -985,6 +1104,8 @@ test_core_security_credentials
|
||||
# Which is: "::"
|
||||
# "::1"
|
||||
# [ FAILED ] AddressSortingTest.TestSorterKnowsIpv6LoopbackIsAvailable (0 ms)
|
||||
#
|
||||
# CHECKME
|
||||
address_sorting
|
||||
|
||||
# Unexplained:
|
||||
@ -1004,16 +1125,22 @@ address_sorting
|
||||
# @ 0x2aa3ed8155e (unknown) main
|
||||
# @ 0x3ff8372bdf4 (unknown) __libc_start_main
|
||||
# @ 0x2aa3ed82724 (unknown) (unknown)
|
||||
#
|
||||
# CHECKME
|
||||
alts_crypt
|
||||
|
||||
# Unexplained:
|
||||
#
|
||||
# (aborted without output)
|
||||
#
|
||||
# CHECKME
|
||||
alts_crypter
|
||||
|
||||
# Unexplained:
|
||||
#
|
||||
# (aborted without output)
|
||||
#
|
||||
# CHECKME
|
||||
alts_frame_protector
|
||||
|
||||
# Unexplained:
|
||||
@ -1035,6 +1162,8 @@ alts_frame_protector
|
||||
# @ 0x2aa11481b08 (unknown) main
|
||||
# @ 0x3ff939abdf4 (unknown) __libc_start_main
|
||||
# @ 0x2aa11481bc4 (unknown) (unknown)
|
||||
#
|
||||
# CHECKME
|
||||
alts_grpc_record_protocol
|
||||
|
||||
# Unexplained:
|
||||
@ -1067,11 +1196,15 @@ alts_grpc_record_protocol
|
||||
# @ 0x2aa3760281e (unknown) main
|
||||
# @ 0x3ff98aabdf4 (unknown) __libc_start_main
|
||||
# @ 0x2aa376028b4 (unknown) (unknown)
|
||||
#
|
||||
# CHECKME
|
||||
alts_handshaker_client
|
||||
|
||||
# Unexplained:
|
||||
#
|
||||
# (aborted without output)
|
||||
#
|
||||
# CHECKME
|
||||
alts_iovec_record_protocol
|
||||
|
||||
# Unexplained:
|
||||
@ -1105,6 +1238,8 @@ alts_iovec_record_protocol
|
||||
# fails to parse ALTS context.
|
||||
# E0506 13:27:12.407261763 2895549 alts_util.cc:43]
|
||||
# contains zero or more than one ALTS context.
|
||||
#
|
||||
# CHECKME
|
||||
alts_util
|
||||
|
||||
# Unexplained:
|
||||
@ -1128,6 +1263,8 @@ alts_util
|
||||
# @ 0x2aa112019d6 (unknown) main
|
||||
# @ 0x3ffae52bdf4 (unknown) __libc_start_main
|
||||
# @ 0x2aa11201a84 (unknown) (unknown)
|
||||
#
|
||||
# CHECKME
|
||||
alts_zero_copy_grpc_protector
|
||||
|
||||
# Unexplained:
|
||||
@ -1148,6 +1285,8 @@ alts_zero_copy_grpc_protector
|
||||
# @ 0x2aa1e9833ce (unknown) main
|
||||
# @ 0x3ffa05abdf4 (unknown) __libc_start_main
|
||||
# @ 0x2aa1e983ac4 (unknown) (unknown)
|
||||
#
|
||||
# CHECKME
|
||||
goaway_server
|
||||
|
||||
# Unexplained:
|
||||
@ -1163,6 +1302,8 @@ goaway_server
|
||||
# @ 0x2aa27600a24 (unknown) main
|
||||
# @ 0x3ffa332bdf4 (unknown) __libc_start_main
|
||||
# @ 0x2aa27600aa4 (unknown) (unknown)
|
||||
#
|
||||
# CHECKME
|
||||
murmur_hash
|
||||
|
||||
# Unexplained:
|
||||
@ -1186,9 +1327,38 @@ murmur_hash
|
||||
# @ 0x40000028c8 (unknown) main
|
||||
# @ 0x4001f3edf4 (unknown) __libc_start_main
|
||||
# @ 0x40000029f4 (unknown) (unknown)
|
||||
#
|
||||
# CHECKME
|
||||
tcp_posix
|
||||
%endif
|
||||
|
||||
%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
|
||||
|
||||
%ifarch %{ix86}
|
||||
# Unexplained:
|
||||
#
|
||||
@ -1200,6 +1370,8 @@ tcp_posix
|
||||
# expected
|
||||
# Which is: 4
|
||||
# [ FAILED ] ChannelTracerTest.TestMultipleEviction (2 ms)
|
||||
#
|
||||
# CHECKME
|
||||
channel_trace
|
||||
%endif
|
||||
|
||||
@ -1211,6 +1383,8 @@ channel_trace
|
||||
# *** SIGABRT received at time=1619103150 ***
|
||||
# PC: @ 0xf7fa3559 (unknown) __kernel_vsyscall
|
||||
# @ ... and at least 1 more frames
|
||||
#
|
||||
# CHECKME
|
||||
certificate_provider_store
|
||||
|
||||
# Unexplained:
|
||||
@ -1222,6 +1396,8 @@ certificate_provider_store
|
||||
# @ 0xb67e817c (unknown) (unknown)
|
||||
# @ 0xb682d6b0 (unknown) (unknown)
|
||||
# @ 0xb682c114 (unknown) raise
|
||||
#
|
||||
# CHECKME
|
||||
grpc_tls_certificate_distributor
|
||||
|
||||
# Unexplained:
|
||||
@ -1231,6 +1407,8 @@ grpc_tls_certificate_distributor
|
||||
# Expected: (busy) <= (total), actual: 9025859384538762329 vs
|
||||
# 3751280126112716351
|
||||
# [ FAILED ] GetCpuStatsTest.BusyNoLargerThanTotal (0 ms)
|
||||
#
|
||||
# CHECKME
|
||||
lb_get_cpu_stats
|
||||
%endif
|
||||
|
||||
@ -1259,13 +1437,16 @@ for suite in \
|
||||
%{?with_python_gevent_tests:test_gevent} \
|
||||
test_py3_only
|
||||
do
|
||||
echo "==== $(date -u --iso-8601=ns): Python ${suite} ===="
|
||||
# See the implementation of the %%pytest macro, upon which our environment
|
||||
# setup is based:
|
||||
# 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.)
|
||||
env CFLAGS="${CFLAGS:-${RPM_OPT_FLAGS}}" \
|
||||
LDFLAGS="${LDFLAGS:-${RPM_LD_FLAGS}}" \
|
||||
PATH="%{buildroot}%{_bindir}:$PATH" \
|
||||
PYTHONPATH="${PYTHONPATH:-%{buildroot}%{python3_sitearch}:%{buildroot}%{python3_sitelib}}" \
|
||||
PYTHONDONTWRITEBYTECODE=1 \
|
||||
timeout -k 31m -v 30m \
|
||||
%{__python3} %{py_setup} %{?py_setup_args} "${suite}"
|
||||
done
|
||||
popd
|
||||
@ -1368,11 +1549,25 @@ fi
|
||||
%{python3_sitearch}/grpcio_tools-%{version}-py%{python3_version}.egg-info
|
||||
|
||||
|
||||
%if %{without bootstrap}
|
||||
%files -n python3-grpcio-admin
|
||||
%{python3_sitelib}/grpc_admin
|
||||
%{python3_sitelib}/grpcio_admin-%{version}-py%{python3_version}.egg-info
|
||||
%endif
|
||||
|
||||
|
||||
%files -n python3-grpcio-channelz
|
||||
%{python3_sitelib}/grpc_channelz
|
||||
%{python3_sitelib}/grpcio_channelz-%{version}-py%{python3_version}.egg-info
|
||||
|
||||
|
||||
%if %{without bootstrap}
|
||||
%files -n python3-grpcio-csds
|
||||
%{python3_sitelib}/grpc_csds
|
||||
%{python3_sitelib}/grpcio_csds-%{version}-py%{python3_version}.egg-info
|
||||
%endif
|
||||
|
||||
|
||||
%files -n python3-grpcio-health-checking
|
||||
%{python3_sitelib}/grpc_health
|
||||
%{python3_sitelib}/grpcio_health_checking-%{version}-py%{python3_version}.egg-info
|
||||
|
2
sources
2
sources
@ -1,2 +1,2 @@
|
||||
SHA512 (grpc-1.37.1.tar.gz) = fe02447f558116e9ed2de48142b9bd3b8908d496aea7816406eee2c6ad136714ee14c2104a82a32f56ab486c5050b4665c55bacb24c91ceabcf1b998a5fc86b7
|
||||
SHA512 (grpc-1.39.0.tar.gz) = bf1095d03eb1eb8a803730702edd43a4d4a448f3f1370aff8688f8ea8fc3a8f29bb8399e6356a9a347c775129960632e0e3b883a3b82f4af41022786ff40df00
|
||||
SHA512 (googletest-release-1.11.0.tar.gz) = 6fcc7827e4c4d95e3ae643dd65e6c4fc0e3d04e1778b84f6e06e390410fe3d18026c131d828d949d2f20dde6327d30ecee24dcd3ef919e21c91e010d149f3a28
|
||||
|
Loading…
Reference in New Issue
Block a user