#5 Update to 1.39.0
Merged 2 years ago by music. Opened 2 years ago by music.
rpms/ music/grpc 1.38  into  rawhide

file modified
+1
@@ -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

- 

grpc-1.39.0-python-grpcio_tools-use-system-protobuf.patch grpc-1.37.0-python-grpcio_tools-use-system-protobuf.patch
file renamed
+4 -4
@@ -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 @@ 

  -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'

@@ -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)

+  

@@ -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(".");

+    }

@@ -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.");

file modified
+7 -1
@@ -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' 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$')

file modified
+247 -52
@@ -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 @@ 

  # 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 @@ 

  # 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 @@ 

  # 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 @@ 

  # 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 @@ 

  

  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 @@ 

      ○ Internals

    • Python

      ○ grpcio

+     ○ grpcio_admin

+     ○ grpcio_csds

      ○ grpcio_channelz

      ○ grpcio_health_checking

      ○ grpcio_reflection
@@ -424,12 +451,69 @@ 

  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 @@ 

  BuildArch:      noarch

  

  %description -n python3-grpcio-health-checking

+ gRPC Python Health Checking

+ ===========================

+ 

  Reference package for GRPC Python health checking.

  

  
@@ -448,6 +535,9 @@ 

  BuildArch:      noarch

  

  %description -n python3-grpcio-reflection

+ gRPC Python Reflection package

+ ==============================

+ 

  Reference package for reflection in GRPC Python.

  

  
@@ -457,6 +547,9 @@ 

  BuildArch:      noarch

  

  %description -n python3-grpcio-status

+ gRPC Python Status Proto

+ ===========================

+ 

  Reference package for GRPC Python status proto mapping.

  

  
@@ -466,12 +559,16 @@ 

  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 @@ 

  '\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 @@ 

  # 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 @@ 

  # 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 @@ 

      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 @@ 

      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 @@ 

      '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 @@ 

      -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 @@ 

      -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 @@ 

      -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 @@ 

    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 @@ 

  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 @@ 

  

  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 @@ 

  

  # 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 @@ 

  # 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 @@ 

  # *** SIGSEGV received at time=1618368497 ***

  # PC: @     0x7fc56bfc1d3a  (unknown)  __strlen_sse2

  #     @ ... and at least 1 more frames

+ #

+ # CHECKME

  evaluate_args

  # Unexplained:

  #
@@ -951,6 +1064,8 @@ 

  # Value of: stack_trace->find("GetCurrentStackTrace") != std::string::npos

  #   Actual: false

  # Expected: true

+ #

+ # CHECKME

  examine_stack

  # Unexplained:

  #
@@ -960,6 +1075,8 @@ 

  #   Actual: false

  # Expected: true

  # [  FAILED  ] StackTracerTest.Basic (3 ms)

+ #

+ # CHECKME

  stack_tracer

  # Unexplained:

  #
@@ -968,6 +1085,8 @@ 

  #   [{"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 @@ 

  #     Which is: "::"

  #   "::1"

  # [  FAILED  ] AddressSortingTest.TestSorterKnowsIpv6LoopbackIsAvailable (0 ms)

+ #

+ # CHECKME

  address_sorting

  

  # Unexplained:
@@ -1004,16 +1125,22 @@ 

  #     @      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 @@ 

  #     @      0x2aa11481b08  (unknown)  main

  #     @      0x3ff939abdf4  (unknown)  __libc_start_main

  #     @      0x2aa11481bc4  (unknown)  (unknown)

+ #

+ # CHECKME

  alts_grpc_record_protocol

  

  # Unexplained:
@@ -1067,11 +1196,15 @@ 

  #     @      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 @@ 

  #     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 @@ 

  #     @      0x2aa112019d6  (unknown)  main

  #     @      0x3ffae52bdf4  (unknown)  __libc_start_main

  #     @      0x2aa11201a84  (unknown)  (unknown)

+ #

+ # CHECKME

  alts_zero_copy_grpc_protector

  

  # Unexplained:
@@ -1148,6 +1285,8 @@ 

  #     @      0x2aa1e9833ce  (unknown)  main

  #     @      0x3ffa05abdf4  (unknown)  __libc_start_main

  #     @      0x2aa1e983ac4  (unknown)  (unknown)

+ #

+ # CHECKME

  goaway_server

  

  # Unexplained:
@@ -1163,6 +1302,8 @@ 

  #     @      0x2aa27600a24  (unknown)  main

  #     @      0x3ffa332bdf4  (unknown)  __libc_start_main

  #     @      0x2aa27600aa4  (unknown)  (unknown)

+ #

+ # CHECKME

  murmur_hash

  

  # Unexplained:
@@ -1186,9 +1327,38 @@ 

  #     @       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 @@ 

  #   expected

  #     Which is: 4

  # [  FAILED  ] ChannelTracerTest.TestMultipleEviction (2 ms)

+ #

+ # CHECKME

  channel_trace

  %endif

  
@@ -1211,6 +1383,8 @@ 

  # *** 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 @@ 

  #     @ 0xb67e817c  (unknown)  (unknown)

  #     @ 0xb682d6b0  (unknown)  (unknown)

  #     @ 0xb682c114  (unknown)  raise

+ #

+ # CHECKME

  grpc_tls_certificate_distributor

  

  # Unexplained:
@@ -1231,6 +1407,8 @@ 

  # Expected: (busy) <= (total), actual: 9025859384538762329 vs

  #     3751280126112716351

  # [  FAILED  ] GetCpuStatsTest.BusyNoLargerThanTotal (0 ms)

+ #

+ # CHECKME

  lb_get_cpu_stats

  %endif

  
@@ -1259,13 +1437,16 @@ 

      %{?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 @@ 

  %{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

file modified
+1 -1
@@ -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

Branch for the 1.39.0 update. (Originally 1.38.0.)

rebased onto fc79c46464abc65bcf7f58458ef60ed19dfaa1d4

2 years ago

Build failed. More information on how to proceed and troubleshoot errors available at https://fedoraproject.org/wiki/Zuul-based-ci

rebased onto 31118d4fbc5adc816dfc2a9cfa8b93a46e0a1ec4

2 years ago

Build failed. More information on how to proceed and troubleshoot errors available at https://fedoraproject.org/wiki/Zuul-based-ci

rebased onto f6b12a3acdecd9587ac798316dab5b8ac51d1cfa

2 years ago

Build failed. More information on how to proceed and troubleshoot errors available at https://fedoraproject.org/wiki/Zuul-based-ci

rebased onto e8e3698e3fd1f6c830034a20530f97a66669d36c

2 years ago

rebased onto d045a16627563a3f8a7b35bb74d9c372629842e9

2 years ago

Build failed. More information on how to proceed and troubleshoot errors available at https://fedoraproject.org/wiki/Zuul-based-ci

rebased onto 5732782d999efbad9aea2444f8d9f4c1bdd14da3

2 years ago

Build failed. More information on how to proceed and troubleshoot errors available at https://fedoraproject.org/wiki/Zuul-based-ci

rebased onto ffb71a5a1fff0681e41b9bf3f8b1e682c919a461

2 years ago

rebased onto 8aa585c45522d96e2a463970b6dc6d82fa5948a7

2 years ago

Build failed. More information on how to proceed and troubleshoot errors available at https://fedoraproject.org/wiki/Zuul-based-ci

rebased onto fe568dcb74b36bc67621fde149f8d661af5a5aed

2 years ago

Build failed. More information on how to proceed and troubleshoot errors available at https://fedoraproject.org/wiki/Zuul-based-ci

rebased onto 9fdefffcc7a33f86fc59df3b1f93888bb09c71f3

2 years ago

Build failed. More information on how to proceed and troubleshoot errors available at https://fedoraproject.org/wiki/Zuul-based-ci

rebased onto a7d2c659f25ad2a4185b95a5cefdeef8405cce3a

2 years ago

Build failed. More information on how to proceed and troubleshoot errors available at https://fedoraproject.org/wiki/Zuul-based-ci

rebased onto 1a42c65918a2bf1b8b209404366b6577061f982e

2 years ago

Build failed. More information on how to proceed and troubleshoot errors available at https://fedoraproject.org/wiki/Zuul-based-ci

rebased onto 8c88bec1891b0bf26eeee91bc4bddd8a3fa1449d

2 years ago

Build succeeded.

rebased onto fd25f39a5badbb9e317e43a654ce8dca3443d662

2 years ago

Build succeeded.

rebased onto 2933935

2 years ago

Build succeeded.

Pull-Request has been merged by music

2 years ago

Now preparing to build in side tag f35-build-side-44196.

Build succeeded.