[packages/grpc] adjusted upstream fix for cython >= 3; rel 6

atler atler at pld-linux.org
Wed Mar 19 20:53:58 CET 2025


commit 3b6b72aff54a5eb3b76383f6b3abd66479a2da9c
Author: Jan Palus <atler at pld-linux.org>
Date:   Wed Mar 19 20:42:14 2025 +0100

    adjusted upstream fix for cython >= 3; rel 6

 cython3.patch | 181 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 grpc.spec     |   6 +-
 2 files changed, 185 insertions(+), 2 deletions(-)
---
diff --git a/grpc.spec b/grpc.spec
index b49f4e1..282146b 100644
--- a/grpc.spec
+++ b/grpc.spec
@@ -11,7 +11,7 @@ Summary(pl.UTF-8):	Biblioteka i szkielet RPC
 Name:		grpc
 # 1.51+ requires protobuf 4.x
 Version:	1.50.2
-Release:	5
+Release:	6
 License:	Apache v2.0
 Group:		Libraries
 #Source0Download: https://github.com/grpc/grpc/releases
@@ -23,6 +23,7 @@ Patch0:		%{name}-format.patch
 Patch1:		%{name}-sphinx.patch
 Patch2:		%{name}-x32.patch
 Patch5:		%{name}-system-openssl.patch
+Patch6:		cython3.patch
 URL:		https://grpc.io/
 BuildRequires:	abseil-cpp-devel >= 20220623
 BuildRequires:	c-ares-devel >= 1.13.0
@@ -39,7 +40,7 @@ BuildRequires:	rpmbuild(macros) >= 1.714
 BuildRequires:	zlib-devel
 %if %{with python3}
 BuildRequires:	python3 >= 1:3.7
-BuildRequires:	python3-Cython >= 0.29.8
+BuildRequires:	python3-Cython >= 3
 BuildRequires:	python3-modules >= 1:3.7
 BuildRequires:	python3-setuptools
 %endif
@@ -127,6 +128,7 @@ Dokumentacja API biblioteki Pythona gRPC.
 %patch -P 1 -p1
 %patch -P 2 -p1
 %patch -P 5 -p1
+%patch -P 6 -p1
 
 %{__rm} doc/.gitignore
 
diff --git a/cython3.patch b/cython3.patch
new file mode 100644
index 0000000..a15cea5
--- /dev/null
+++ b/cython3.patch
@@ -0,0 +1,181 @@
+From 4bea12353c2f0f5a52746821f1e3f961592c7ca0 Mon Sep 17 00:00:00 2001
+From: Atri Bhattacharya <A.Bhattacharya at uliege.be>
+Date: Tue, 2 Apr 2024 10:05:04 -0700
+Subject: [PATCH] [python] Cython 3 compatibility: declare functions noexcept.
+ (#35995)
+
+In Cython 3, cdef functions that really will not raise exceptions must be declared as `noexcept`. Fixed by this commit.
+
+Update requirements to `cython >= 3.0` in requirements*.txt and setup.py.
+
+Fixes issue #33918.
+
+<!--
+
+If you know who should review your pull request, please assign it to that
+person, otherwise the pull request would get assigned randomly.
+
+If your pull request is for a specific language, please add the appropriate
+lang label.
+
+-->
+
+Closes #35995
+
+COPYBARA_INTEGRATE_REVIEW=https://github.com/grpc/grpc/pull/35995 from badshah400:master b3277bac1585ddee88a170b0a95c260d909cce9c
+PiperOrigin-RevId: 621214091
+---
+ requirements.bazel.txt                                      | 2 +-
+ requirements.txt                                            | 2 +-
+ setup.py                                                    | 2 +-
+ .../grpcio/grpc/_cython/_cygrpc/aio/callback_common.pxd.pxi | 2 +-
+ .../grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi | 2 +-
+ src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi  | 2 +-
+ src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pxd.pxi   | 6 +++---
+ src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi   | 6 +++---
+ src/python/grpcio/grpc/_cython/_cygrpc/vtable.pyx.pxi       | 6 +++---
+ 9 files changed, 15 insertions(+), 15 deletions(-)
+
+diff --git a/requirements.txt b/requirements.txt
+index 05390850559f1..56169434b1b78 100644
+--- a/requirements.txt
++++ b/requirements.txt
+@@ -1,6 +1,6 @@
+ # GRPC Python setup requirements
+ coverage>=4.0
+-cython>=0.29.8
++cython>=3.0.0
+ protobuf>=4.21.3,<5.0dev
+ six>=1.10
+ wheel>=0.29
+diff --git a/setup.py b/setup.py
+index 93138a2d11aba..19544ce89d832 100644
+--- a/setup.py
++++ b/setup.py
+@@ -545,7 +545,7 @@ def cython_extensions_and_necessity():
+     elif need_cython:
+         sys.stderr.write(
+             'We could not find Cython. Setup may take 10-20 minutes.\n')
+-        SETUP_REQUIRES += ('cython>=0.23',)
++        SETUP_REQUIRES += ('cython>=3.0.0',)
+ 
+ COMMAND_CLASS = {
+     'doc': commands.SphinxDocumentation,
+diff --git a/src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pxd.pxi b/src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pxd.pxi
+index e54e5107547c1..26edbdb917b10 100644
+--- a/src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pxd.pxi
++++ b/src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pxd.pxi
+@@ -48,7 +48,7 @@ cdef class CallbackWrapper:
+     @staticmethod
+     cdef void functor_run(
+             grpc_completion_queue_functor* functor,
+-            int succeed)
++            int succeed) noexcept
+ 
+     cdef grpc_completion_queue_functor *c_functor(self)
+ 
+diff --git a/src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi b/src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi
+index 14a0098fc2041..2b0df0e5ce7f7 100644
+--- a/src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi
++++ b/src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi
+@@ -50,7 +50,7 @@ cdef class CallbackWrapper:
+     @staticmethod
+     cdef void functor_run(
+             grpc_completion_queue_functor* functor,
+-            int success):
++            int success) noexcept:
+         cdef CallbackContext *context = <CallbackContext *>functor
+         cdef object waiter = <object>context.waiter
+         if not waiter.cancelled():
+diff --git a/src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi b/src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi
+index 74a3f16d72dbb..600c0f304e067 100644
+--- a/src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi
++++ b/src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi
+@@ -316,7 +316,7 @@ def server_credentials_ssl_dynamic_cert_config(initial_cert_config,
+   return credentials
+ 
+ cdef grpc_ssl_certificate_config_reload_status _server_cert_config_fetcher_wrapper(
+-        void* user_data, grpc_ssl_server_certificate_config **config) with gil:
++        void* user_data, grpc_ssl_server_certificate_config **config) noexcept with gil:
+   # This is a credentials.ServerCertificateConfig
+   cdef ServerCertificateConfig cert_config = None
+   if not user_data:
+diff --git a/src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi b/src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi
+index 565f483b2ae00..d901cfddf4321 100644
+--- a/src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi
++++ b/src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi
+@@ -35,7 +35,7 @@ _GRPC_ENABLE_FORK_SUPPORT = (
+ 
+ _fork_handler_failed = False
+ 
+-cdef void __prefork() nogil:
++cdef void __prefork() noexcept nogil:
+     with gil:
+         global _fork_handler_failed
+         _fork_handler_failed = False
+@@ -49,14 +49,14 @@ cdef void __prefork() nogil:
+             _fork_handler_failed = True
+ 
+ 
+-cdef void __postfork_parent() nogil:
++cdef void __postfork_parent() noexcept nogil:
+     with gil:
+         with _fork_state.fork_in_progress_condition:
+             _fork_state.fork_in_progress = False
+             _fork_state.fork_in_progress_condition.notify_all()
+ 
+ 
+-cdef void __postfork_child() nogil:
++cdef void __postfork_child() noexcept nogil:
+     with gil:
+         try:
+             if _fork_handler_failed:
+diff --git a/src/python/grpcio/grpc/_cython/_cygrpc/vtable.pyx.pxi b/src/python/grpcio/grpc/_cython/_cygrpc/vtable.pyx.pxi
+index da4b81bd97e65..f59410073b736 100644
+--- a/src/python/grpcio/grpc/_cython/_cygrpc/vtable.pyx.pxi
++++ b/src/python/grpcio/grpc/_cython/_cygrpc/vtable.pyx.pxi
+@@ -13,16 +13,16 @@
+ # limitations under the License.
+ 
+ # TODO(https://github.com/grpc/grpc/issues/15662): Reform this.
+-cdef void* _copy_pointer(void* pointer):
++cdef void* _copy_pointer(void* pointer) noexcept:
+   return pointer
+ 
+ 
+ # TODO(https://github.com/grpc/grpc/issues/15662): Reform this.
+-cdef void _destroy_pointer(void* pointer):
++cdef void _destroy_pointer(void* pointer) noexcept:
+   pass
+ 
+ 
+-cdef int _compare_pointer(void* first_pointer, void* second_pointer):
++cdef int _compare_pointer(void* first_pointer, void* second_pointer) noexcept:
+   if first_pointer < second_pointer:
+     return -1
+   elif first_pointer > second_pointer:
+--- grpc-1.50.2/src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pxd.pxi.orig	2025-03-19 19:23:03.248118406 +0100
++++ grpc-1.50.2/src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pxd.pxi	2025-03-19 19:27:46.116368426 +0100
+@@ -15,15 +15,15 @@
+ 
+ cdef extern from "pthread.h" nogil:
+     int pthread_atfork(
+-        void (*prepare)() nogil,
+-        void (*parent)() nogil,
+-        void (*child)() nogil)
++        void (*prepare)() noexcept nogil,
++        void (*parent)() noexcept nogil,
++        void (*child)() noexcept nogil)
+ 
+ 
+-cdef void __prefork() nogil
++cdef void __prefork() noexcept nogil
+ 
+ 
+-cdef void __postfork_parent() nogil
++cdef void __postfork_parent() noexcept nogil
+ 
+ 
+-cdef void __postfork_child() nogil
+\ No newline at end of file
++cdef void __postfork_child() noexcept nogil
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/packages/grpc.git/commitdiff/3b6b72aff54a5eb3b76383f6b3abd66479a2da9c



More information about the pld-cvs-commit mailing list