mirror of
https://github.com/gentoo-mirror/gentoo.git
synced 2026-07-31 23:08:09 -07:00
dev-python/uvloop: Attempt fixing 64-bit thread id problems
The upstream hack for 32-bit platforms seems to cause OverflowErrors on 64-bit platforms with large Python thread identifiers (e.g. sparc). Let's attempt reverting the patch and see how uvloop fares without it on Gentoo-supported platforms. Bug: https://bugs.gentoo.org/796803 Signed-off-by: Michał Górny <mgorny@gentoo.org>
This commit is contained in:
43
dev-python/uvloop/files/uvloop-0.15.3-uint64-thread-id.patch
Normal file
43
dev-python/uvloop/files/uvloop-0.15.3-uint64-thread-id.patch
Normal file
@@ -0,0 +1,43 @@
|
||||
From 732df28f0739d84c687d3e6d81995dafa18ac775 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Micha=C5=82=20G=C3=B3rny?= <mgorny@gentoo.org>
|
||||
Date: Wed, 28 Jul 2021 09:21:00 +0200
|
||||
Subject: [PATCH] Revert 32-bit thread ID hack
|
||||
|
||||
Apparently the hack used to fix 32-bit platforms actually breaks 64-bit
|
||||
platforms using large thread IDs (e.g. sparc).
|
||||
|
||||
Reverts: b5b4abb16ba558cf957cf40120dfd4937c53aea5
|
||||
---
|
||||
uvloop/includes/stdlib.pxi | 2 +-
|
||||
uvloop/loop.pyx | 2 +-
|
||||
2 files changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/uvloop/includes/stdlib.pxi b/uvloop/includes/stdlib.pxi
|
||||
index adf9806..21d69e6 100644
|
||||
--- a/uvloop/includes/stdlib.pxi
|
||||
+++ b/uvloop/includes/stdlib.pxi
|
||||
@@ -135,7 +135,7 @@ cdef int ssl_SSL_ERROR_WANT_READ = ssl.SSL_ERROR_WANT_READ
|
||||
cdef int ssl_SSL_ERROR_WANT_WRITE = ssl.SSL_ERROR_WANT_WRITE
|
||||
cdef int ssl_SSL_ERROR_SYSCALL = ssl.SSL_ERROR_SYSCALL
|
||||
|
||||
-cdef uint64_t MAIN_THREAD_ID = <uint64_t><int64_t>threading.main_thread().ident
|
||||
+cdef uint64_t MAIN_THREAD_ID = <uint64_t>threading.main_thread().ident
|
||||
cdef threading_Thread = threading.Thread
|
||||
|
||||
cdef int subprocess_PIPE = subprocess.PIPE
|
||||
diff --git a/uvloop/loop.pyx b/uvloop/loop.pyx
|
||||
index d9b5aaa..96c9cde 100644
|
||||
--- a/uvloop/loop.pyx
|
||||
+++ b/uvloop/loop.pyx
|
||||
@@ -707,7 +707,7 @@ cdef class Loop:
|
||||
return
|
||||
|
||||
cdef uint64_t thread_id
|
||||
- thread_id = <uint64_t><int64_t>PyThread_get_thread_ident()
|
||||
+ thread_id = <uint64_t>PyThread_get_thread_ident()
|
||||
|
||||
if thread_id != self._thread_id:
|
||||
raise RuntimeError(
|
||||
--
|
||||
2.32.0
|
||||
|
||||
63
dev-python/uvloop/uvloop-0.15.3-r1.ebuild
Normal file
63
dev-python/uvloop/uvloop-0.15.3-r1.ebuild
Normal file
@@ -0,0 +1,63 @@
|
||||
# Copyright 1999-2021 Gentoo Authors
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
EAPI=8
|
||||
|
||||
PYTHON_COMPAT=( python3_{8..9} )
|
||||
inherit distutils-r1
|
||||
|
||||
DESCRIPTION="Ultra-fast implementation of asyncio event loop on top of libuv"
|
||||
HOMEPAGE="https://github.com/magicstack/uvloop"
|
||||
SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${P}.tar.gz"
|
||||
|
||||
KEYWORDS="~amd64"
|
||||
LICENSE="MIT"
|
||||
SLOT="0"
|
||||
IUSE="doc examples"
|
||||
|
||||
RDEPEND=">=dev-libs/libuv-1.11.0:="
|
||||
DEPEND="${RDEPEND}"
|
||||
BDEPEND="
|
||||
dev-python/cython[${PYTHON_USEDEP}]
|
||||
doc? (
|
||||
>=dev-python/alabaster-0.6.2[${PYTHON_USEDEP}]
|
||||
dev-python/sphinx[${PYTHON_USEDEP}]
|
||||
)
|
||||
test? (
|
||||
dev-python/aiohttp[${PYTHON_USEDEP}]
|
||||
dev-python/pyopenssl[${PYTHON_USEDEP}]
|
||||
dev-python/psutil[${PYTHON_USEDEP}]
|
||||
)
|
||||
"
|
||||
|
||||
distutils_enable_tests setup.py
|
||||
|
||||
PATCHES=(
|
||||
"${FILESDIR}"/${P}-uint64-thread-id.patch
|
||||
)
|
||||
|
||||
python_prepare_all() {
|
||||
cat <<EOF >> setup.cfg || die
|
||||
[build_ext]
|
||||
use-system-libuv=1
|
||||
EOF
|
||||
|
||||
# flake8 only
|
||||
rm tests/test_sourcecode.py || die
|
||||
# TODO: broken by cythonize
|
||||
rm tests/test_cython.py || die
|
||||
# force cythonization
|
||||
rm uvloop/loop.c || die
|
||||
|
||||
distutils-r1_python_prepare_all
|
||||
}
|
||||
|
||||
python_compile_all() {
|
||||
use doc && esetup.py build_ext --inplace build_sphinx
|
||||
}
|
||||
|
||||
python_install_all() {
|
||||
use examples && dodoc -r examples
|
||||
use doc && local HTML_DOCS=( "${BUILD_DIR}/sphinx/html/." )
|
||||
distutils-r1_python_install_all
|
||||
}
|
||||
Reference in New Issue
Block a user