diff options
author | Michał Górny <mgorny@gentoo.org> | 2021-07-28 09:27:18 +0200 |
---|---|---|
committer | Michał Górny <mgorny@gentoo.org> | 2021-07-28 11:19:04 +0200 |
commit | 2ff590874366fb7e656a88293e19fa4bacd2e489 (patch) | |
tree | 456146ab7eff12482204b9fc6efe092a1064e8f2 /dev-python | |
parent | dev-python/pytest-xprocess: Bump to 0.18.1 (diff) | |
download | gentoo-2ff590874366fb7e656a88293e19fa4bacd2e489.tar.gz gentoo-2ff590874366fb7e656a88293e19fa4bacd2e489.tar.bz2 gentoo-2ff590874366fb7e656a88293e19fa4bacd2e489.zip |
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>
Diffstat (limited to 'dev-python')
-rw-r--r-- | dev-python/uvloop/files/uvloop-0.15.3-uint64-thread-id.patch | 43 | ||||
-rw-r--r-- | dev-python/uvloop/uvloop-0.15.3-r1.ebuild | 63 |
2 files changed, 106 insertions, 0 deletions
diff --git a/dev-python/uvloop/files/uvloop-0.15.3-uint64-thread-id.patch b/dev-python/uvloop/files/uvloop-0.15.3-uint64-thread-id.patch new file mode 100644 index 000000000000..a74fedd308e9 --- /dev/null +++ b/dev-python/uvloop/files/uvloop-0.15.3-uint64-thread-id.patch @@ -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 + diff --git a/dev-python/uvloop/uvloop-0.15.3-r1.ebuild b/dev-python/uvloop/uvloop-0.15.3-r1.ebuild new file mode 100644 index 000000000000..41047739fb7c --- /dev/null +++ b/dev-python/uvloop/uvloop-0.15.3-r1.ebuild @@ -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 +} |