commit:     d6f68f48a5d578608b07ec63017a0a23c80c9017
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Mon Nov  6 14:39:35 2023 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Mon Nov  6 14:39:50 2023 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=d6f68f48

dev-python/grpcio: fix cython-3 compat

Closes: https://bugs.gentoo.org/911370
Closes: https://bugs.gentoo.org/905740
Signed-off-by: Sam James <sam <AT> gentoo.org>

 dev-python/grpcio/files/1.51.0-cython3.patch | 150 +++++++++++++++++++++++++++
 dev-python/grpcio/grpcio-1.51.0-r1.ebuild    |  50 +++++++++
 2 files changed, 200 insertions(+)

diff --git a/dev-python/grpcio/files/1.51.0-cython3.patch 
b/dev-python/grpcio/files/1.51.0-cython3.patch
new file mode 100644
index 000000000000..97e70e150455
--- /dev/null
+++ b/dev-python/grpcio/files/1.51.0-cython3.patch
@@ -0,0 +1,150 @@
+https://bugs.gentoo.org/911370
+https://github.com/grpc/grpc/issues/33918#issuecomment-1703386656
+https://github.com/grpc/grpc/issues/33918#issuecomment-1788823585
+https://github.com/grpc/grpc/pull/34242
+https://src.fedoraproject.org/rpms/grpc/blob/8bf11b8c20d2c54dcf7b88777d7590237b6b0555/f/0001-Specify-noexcept-for-cdef-functions.patch
+
+From 45d31dba83999638808891ee7bf93638106bdb71 Mon Sep 17 00:00:00 2001
+From: Atri Bhattacharya <badshah...@gmail.com>
+Date: Thu, 7 Sep 2023 07:06:56 +0200
+Subject: [PATCH] Specify noexcept for cdef functions.
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+To build against cython 3.0, cdef functions that do not raise exceptions
+need to be explicitly declared as noexcept. Fixes issue #33918.
+
+Co-Authored-By: Miro HronĨok <m...@hroncok.cz>
+---
+ .../grpc/_cython/_cygrpc/aio/callback_common.pxd.pxi |  2 +-
+ .../grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi |  2 +-
+ .../grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi  |  2 +-
+ .../grpcio/grpc/_cython/_cygrpc/fork_posix.pxd.pxi   | 12 ++++++------
+ .../grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi   |  6 +++---
+ .../grpcio/grpc/_cython/_cygrpc/vtable.pyx.pxi       |  6 +++---
+ 6 files changed, 15 insertions(+), 15 deletions(-)
+
+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 e54e510..26edbdb 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 f2d94a9..5dda90a 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 23de3a0..52071f5 100644
+--- a/src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi
++++ b/src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi
+@@ -314,7 +314,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.pxd.pxi 
b/src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pxd.pxi
+index a925bdd..5e97a6d 100644
+--- a/src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pxd.pxi
++++ b/src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pxd.pxi
+@@ -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) noexcept
+ 
+ 
+-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
+\ No newline at end of file
+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 53657e8..d4d1cff 100644
+--- a/src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi
++++ b/src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi
+@@ -34,7 +34,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
+@@ -48,14 +48,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 da4b81b..f594100 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:
+-- 
+2.41.0

diff --git a/dev-python/grpcio/grpcio-1.51.0-r1.ebuild 
b/dev-python/grpcio/grpcio-1.51.0-r1.ebuild
new file mode 100644
index 000000000000..3fd7cdbe2a7f
--- /dev/null
+++ b/dev-python/grpcio/grpcio-1.51.0-r1.ebuild
@@ -0,0 +1,50 @@
+# Copyright 1999-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_EXT=1
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{9..11} )
+
+inherit distutils-r1 multiprocessing prefix pypi
+
+DESCRIPTION="High-performance RPC framework (python libraries)"
+HOMEPAGE="https://grpc.io";
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="amd64 ~arm ~arm64 ~ppc64 ~riscv x86"
+
+RDEPEND="
+       >=dev-libs/openssl-1.1.1:0=[-bindist(-)]
+       >=dev-libs/re2-0.2021.11.01:=
+       <dev-python/protobuf-python-5[${PYTHON_USEDEP}]
+       >=dev-python/protobuf-python-4.21.3[${PYTHON_USEDEP}]
+       net-dns/c-ares:=
+       sys-libs/zlib:=
+"
+DEPEND="${RDEPEND}"
+BDEPEND="dev-python/cython[${PYTHON_USEDEP}]"
+
+PATCHES=(
+       "${FILESDIR}/1.51.0-respect-cc.patch"
+       "${FILESDIR}/1.51.0-cython3.patch"
+)
+
+python_prepare_all() {
+       distutils-r1_python_prepare_all
+       hprefixify setup.py
+}
+
+python_configure_all() {
+       # os.environ.get('GRPC_BUILD_WITH_BORING_SSL_ASM', True)
+       export GRPC_BUILD_WITH_BORING_SSL_ASM=
+       export GRPC_PYTHON_DISABLE_LIBC_COMPATIBILITY=1
+       export GRPC_PYTHON_BUILD_SYSTEM_CARES=1
+       export GRPC_PYTHON_BUILD_SYSTEM_OPENSSL=1
+       export GRPC_PYTHON_BUILD_WITH_SYSTEM_RE2=1
+       export GRPC_PYTHON_BUILD_SYSTEM_ZLIB=1
+       export GRPC_PYTHON_BUILD_WITH_CYTHON=1
+       export GRPC_PYTHON_BUILD_EXT_COMPILER_JOBS="$(makeopts_jobs)"
+}

Reply via email to