dev-python/cython: Sync with Gentoo

It's from Gentoo commit 8533cab5b68e924799c8ff54a825ad504ad359c6.

Signed-off-by: Mathieu Tortuyaux <mtortuyaux@microsoft.com>
This commit is contained in:
Flatcar Buildbot 2025-07-21 07:11:55 +00:00 committed by Mathieu Tortuyaux
parent 4a78cb976e
commit 98fed0a2b1
No known key found for this signature in database
GPG Key ID: AC5CCFB52545D9B8
6 changed files with 38 additions and 225 deletions

View File

@ -1,3 +1 @@
DIST cython-3.0.12.tar.gz 2757617 BLAKE2B 064549e36e03424065eab081b60e2761d198490cfd4d7836ea236b833ada3962e6ed42ba1710b33418f8a31ac282cdc156ceb544ee21be80ee34b7a3d3f6c7fb SHA512 c4e85596eeea444fae983d32ce8731cc5d0d612d1f96b998db3aa7946e8be151a7ea62c6df163d875111e306c870656b82a8468dd873cacf84c7bd5671a39bc3
DIST cython-3.1.1.tar.gz 3175446 BLAKE2B 4a75df724e313220321b05b7839bd406e5e923eb860337b7819c31152859396e5bda65a0a06ace196839bed729e28e51a1349c178e615ba58cf9bc80dc706b0d SHA512 5c64b5d280b234d93d02e91ab22567342350671c605df30a3ac7b41b64e0605eb0aef7bc721f68d35d6048085eaa392cb0a803df32ca902e51e2009c987d962e
DIST cython-3.1.2.tar.gz 3184825 BLAKE2B 8be6016f3e9a5a7db71fd1cab65424db1a1cd8e9d0118f01432964eb816135021f77542aff2b1f0fd2af8f657f952ebce2f420d7610ae37c6c6956f94e54a636 SHA512 c674027dae58377ea71d8d8b15601e6e0c80435807603251e685608218805fef2e6eac4bbebd3c50c319cd7da660ff9ce1a6daeb673eb40ce70bbfe7f0069600

View File

@ -1,83 +0,0 @@
# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
DISTUTILS_EXT=1
DISTUTILS_USE_PEP517=setuptools
PYTHON_TESTED=( python3_{10..12} )
PYTHON_COMPAT=( "${PYTHON_TESTED[@]}" pypy3 pypy3_11 python3_13 )
PYTHON_REQ_USE="threads(+)"
inherit distutils-r1 multiprocessing pypi toolchain-funcs
DESCRIPTION="A Python to C compiler"
HOMEPAGE="
https://cython.org/
https://github.com/cython/cython/
https://pypi.org/project/Cython/
"
LICENSE="Apache-2.0"
SLOT="0"
KEYWORDS="~alpha amd64 arm arm64 hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris"
IUSE="test"
RESTRICT="!test? ( test )"
BDEPEND="
${RDEPEND}
test? (
$(python_gen_cond_dep '
<dev-python/numpy-2[${PYTHON_USEDEP}]
' "${PYTHON_TESTED[@]}")
)
"
PATCHES=(
"${FILESDIR}/${PN}-0.29.22-spawn-multiprocessing.patch"
"${FILESDIR}/${PN}-0.29.23-test_exceptions-py310.patch"
"${FILESDIR}/${PN}-0.29.23-pythran-parallel-install.patch"
)
distutils_enable_sphinx docs \
dev-python/jinja2 \
dev-python/sphinx-issues \
dev-python/sphinx-tabs
python_prepare_all() {
# Needs dev-python/pip and doesn't like 'externally-managed' (bug #927995)
rm tests/run/coverage_cmd_src_pkg_layout.srctree || die
distutils-r1_python_prepare_all
}
python_compile() {
# Python gets confused when it is in sys.path before build.
local -x PYTHONPATH=
distutils-r1_python_compile
}
python_test() {
if ! has "${EPYTHON/./_}" "${PYTHON_TESTED[@]}"; then
einfo "Skipping tests on ${EPYTHON} (xfail)"
return
fi
# Needed to avoid confusing cache tests
unset CYTHON_FORCE_REGEN
tc-export CC
"${PYTHON}" runtests.py \
-vv \
-j "$(makeopts_jobs)" \
--work-dir "${BUILD_DIR}"/tests \
--no-examples \
--no-code-style \
|| die "Tests fail with ${EPYTHON}"
}
python_install_all() {
local DOCS=( CHANGES.rst README.rst ToDo.txt USAGE.txt )
distutils-r1_python_install_all
}

View File

@ -1,125 +0,0 @@
# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
DISTUTILS_EXT=1
DISTUTILS_USE_PEP517=setuptools
PYTHON_FULLY_TESTED=( python3_{11..14} )
PYTHON_TESTED=( "${PYTHON_FULLY_TESTED[@]}" pypy3_11 )
PYTHON_COMPAT=( "${PYTHON_TESTED[@]}" python3_{13,14}t )
PYTHON_REQ_USE="threads(+)"
inherit distutils-r1 multiprocessing pypi toolchain-funcs
DESCRIPTION="A Python to C compiler"
HOMEPAGE="
https://cython.org/
https://github.com/cython/cython/
https://pypi.org/project/Cython/
"
LICENSE="Apache-2.0"
SLOT="0"
KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris"
IUSE="test test-full"
RESTRICT="!test? ( test )"
BDEPEND="
${RDEPEND}
test? (
test-full? (
$(python_gen_cond_dep '
dev-python/numpy[${PYTHON_USEDEP}]
' "${PYTHON_FULLY_TESTED[@]}")
)
)
"
PATCHES=(
"${FILESDIR}/${PN}-0.29.22-spawn-multiprocessing.patch"
"${FILESDIR}/${PN}-0.29.23-pythran-parallel-install.patch"
)
distutils_enable_sphinx docs \
dev-python/jinja2 \
dev-python/sphinx-issues \
dev-python/sphinx-tabs
python_compile() {
# Python gets confused when it is in sys.path before build.
local -x PYTHONPATH=
if use elibc_musl ; then
# Workaround for bug #925318
local -x LDFLAGS="${LDFLAGS} -Wl,-z,stack-size=2097152"
fi
distutils-r1_python_compile
}
python_test() {
# PYTHON_TESTED controls whether we expect the testsuite to
# pass at all, while PYTHON_FULLY_TESTED allows skipping before
# numpy is ported (and possibly other deps in future).
if ! has "${EPYTHON/./_}" "${PYTHON_TESTED[@]}"; then
einfo "Skipping tests on ${EPYTHON} (xfail)"
return
fi
# Needed to avoid confusing cache tests
unset CYTHON_FORCE_REGEN
tc-export CC
local testargs=(
-vv
-j "$(makeopts_jobs)"
--work-dir "${BUILD_DIR}"/tests
--no-examples
--no-code-style
# Fails to find embedded.c
--exclude 'embedded'
# coverage_installed_pkg needs dev-python/pip and doesn't like
# 'externally-managed' (bug #927995), but we don't really
# want automagic test dependencies at all, so just skip
# unimportant-for-us coverage tests entirely.
--exclude 'run.coverage*'
--exclude 'Cython.Coverage'
# Automagic on dev-python/python-tests, could add this in future
--exclude 'run.test_exceptions'
# TODO: Unpackaged dev-python/interpreters-pep-734 (interpreters_backport)
# This only shows up as a failure with >=3.13.
--exclude 'subinterpreters_threading_stress_test'
)
if [[ ${EPYTHON} == pypy3* ]] ; then
testargs+=(
# Recursion issue
--exclude 'run.if_else_expr'
--exclude 'run.test_patma*'
# Slight output difference (missing '<')
--exclude 'run.cpp_exception_ptr_just_handler'
)
fi
# Keep test-full for numpy as it's large and doesn't pass tests itself
# on niche arches.
if ! use test-full || ! has "${EPYTHON/./_}" "${PYTHON_FULLY_TESTED[@]}"; then
testargs+=(
--exclude 'run.numpy*'
--exclude 'run.ufunc'
--exclude 'numpy*'
)
fi
"${PYTHON}" runtests.py "${testargs[@]}" || die "Tests fail with ${EPYTHON}"
}
python_install_all() {
local DOCS=( CHANGES.rst README.rst ToDo.txt USAGE.txt )
distutils-r1_python_install_all
}

View File

@ -21,7 +21,7 @@ HOMEPAGE="
LICENSE="Apache-2.0"
SLOT="0"
KEYWORDS="~alpha amd64 ~arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris"
KEYWORDS="~alpha amd64 arm arm64 hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris"
IUSE="test test-full"
RESTRICT="!test? ( test )"
@ -39,6 +39,8 @@ BDEPEND="
PATCHES=(
"${FILESDIR}/${PN}-0.29.22-spawn-multiprocessing.patch"
"${FILESDIR}/${PN}-0.29.23-pythran-parallel-install.patch"
# https://github.com/cython/cython/pull/6957
"${FILESDIR}/${P}-odr.patch"
)
distutils_enable_sphinx docs \

View File

@ -1,14 +0,0 @@
--- a/tests/run/test_exceptions.pyx
+++ b/tests/run/test_exceptions.pyx
@@ -188,7 +188,10 @@
# should not apply to subclasses, see issue #31161
s = '''if True:\nprint "No indent"'''
- ckmsg(s, "expected an indented block", IndentationError)
+ if sys.version_info >= (3, 10):
+ ckmsg(s, "expected an indented block after 'if' statement on line 1", IndentationError)
+ else:
+ ckmsg(s, "expected an indented block", IndentationError)
s = '''if True:\n print()\n\texec "mixed tabs and spaces"'''
ckmsg(s, "inconsistent use of tabs and spaces in indentation", TabError)

View File

@ -0,0 +1,35 @@
From 269dea7ac6f10566c3b1ea3850f6a45538e998ee Mon Sep 17 00:00:00 2001
From: Ray Speth <yarmond@gmail.com>
Date: Tue, 10 Jun 2025 03:09:03 -0400
Subject: [PATCH] Mark utility function static to avoid ODR violations (#6957)
PR #6882 introduces a new method `__pyx_CommonTypesMetaclass_get_module`
in `CommonStructures.c`. Unlike other functions in this file, it is not
marked `static`, which causes one-definition-rule violations when trying
to compile multiple `.pyx` files into a single extension module.
For context, this module structure is used in
[Cantera](https://github.com/Cantera/cantera). We build the combined
module
[here](https://github.com/Cantera/cantera/blob/b308592776130d82eaac4949283fc87c031cdc97/interfaces/cython/SConscript#L46-L81),
and then use a custom "finder" to load the submodules as defined
[here](https://github.com/Cantera/cantera/blob/main/interfaces/cython/cantera/_cantera.pyx).
Marking this function `static` restores the previous capability.
---
Cython/Utility/CommonStructures.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Cython/Utility/CommonStructures.c b/Cython/Utility/CommonStructures.c
index 94f7cc89066..3f1ce6d8408 100644
--- a/Cython/Utility/CommonStructures.c
+++ b/Cython/Utility/CommonStructures.c
@@ -161,7 +161,7 @@ static int __pyx_CommonTypesMetaclass_init(PyObject *module); /* proto */
//@requires: FetchCommonType
//@substitute: naming
-PyObject* __pyx_CommonTypesMetaclass_get_module(CYTHON_UNUSED PyObject *self, CYTHON_UNUSED void* context) {
+static PyObject* __pyx_CommonTypesMetaclass_get_module(CYTHON_UNUSED PyObject *self, CYTHON_UNUSED void* context) {
return PyUnicode_FromString(__PYX_ABI_MODULE_NAME);
}