commit:     402d7b32428f7dc7fb4d83a4ee9f4d8ff7f5b560
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Thu Jul 27 02:38:57 2023 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Thu Jul 27 02:47:20 2023 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=402d7b32

dev-python/pyyaml: backport cython-3 patch

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

 dev-python/pyyaml/files/pyyaml-6.0.1-cython3.patch | 36 +++++++++++++++
 dev-python/pyyaml/pyyaml-6.0.1-r1.ebuild           | 54 ++++++++++++++++++++++
 2 files changed, 90 insertions(+)

diff --git a/dev-python/pyyaml/files/pyyaml-6.0.1-cython3.patch 
b/dev-python/pyyaml/files/pyyaml-6.0.1-cython3.patch
new file mode 100644
index 000000000000..346339916f17
--- /dev/null
+++ b/dev-python/pyyaml/files/pyyaml-6.0.1-cython3.patch
@@ -0,0 +1,36 @@
+https://bugs.gentoo.org/898680
+https://github.com/yaml/pyyaml/pull/731
+
+From 17dc5b6cd96dcfe64fd71789c771ca9b96d260e5 Mon Sep 17 00:00:00 2001
+From: "Andrew J. Hesford" <[email protected]>
+Date: Fri, 21 Jul 2023 09:50:00 -0400
+Subject: [PATCH] Fix builds with Cython 3
+
+This is a *de minimis* fix for building with Cython 3. Recent Cython<3
+releases provided `Cython.Distutils.build_ext` as an alias to
+`Cython.Distutils.old_build_ext.old_build_ext`; Cython 3 drops this
+alias and instead uses a wholly new `Cython.Distutils.build_ext` that
+does not provide the `cython_sources` function used in `setup.py`.
+
+Explicitly importing `old_build_ext` preserves the existing behavior for
+recent Cython<3 and uses the correct behavior for Cython 3. Should the
+import fail (*e.g.*, because the version of Cython available predates
+the availability of `old_build_ext`), the import falls back to just
+`Cython.Distutils.build_ext`.
+
+Signed-off-by: Andrew J. Hesford <[email protected]>
+--- a/setup.py
++++ b/setup.py
+@@ -82,7 +82,11 @@
+     with_cython = True
+ try:
+     from Cython.Distutils.extension import Extension as _Extension
+-    from Cython.Distutils import build_ext as _build_ext
++    try:
++        from Cython.Distutils.old_build_ext import old_build_ext as _build_ext
++    except ImportError:
++        from Cython.Distutils import build_ext as _build_ext
++
+     with_cython = True
+ except ImportError:
+     if with_cython:

diff --git a/dev-python/pyyaml/pyyaml-6.0.1-r1.ebuild 
b/dev-python/pyyaml/pyyaml-6.0.1-r1.ebuild
new file mode 100644
index 000000000000..f1368e3c763c
--- /dev/null
+++ b/dev-python/pyyaml/pyyaml-6.0.1-r1.ebuild
@@ -0,0 +1,54 @@
+# 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_{10..12} pypy3 )
+
+inherit distutils-r1
+
+DESCRIPTION="YAML parser and emitter for Python"
+HOMEPAGE="
+       https://pyyaml.org/wiki/PyYAML
+       https://pypi.org/project/PyYAML/
+       https://github.com/yaml/pyyaml/
+"
+SRC_URI="
+       https://github.com/yaml/pyyaml/archive/${PV}.tar.gz
+               -> ${P}.gh.tar.gz
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~m68k ~mips ~ppc ~ppc64 
~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos 
~x64-solaris"
+IUSE="examples"
+
+DEPEND="
+       dev-libs/libyaml:=
+"
+RDEPEND="
+       ${DEPEND}
+"
+BDEPEND="
+       dev-python/cython[${PYTHON_USEDEP}]
+"
+
+PATCHES=(
+       "${FILESDIR}"/${PN}-6.0.1-cython3.patch
+)
+
+distutils_enable_tests setup.py
+
+src_configure() {
+       export PYYAML_FORCE_CYTHON=1
+}
+
+python_install_all() {
+       distutils-r1_python_install_all
+       if use examples; then
+               dodoc -r examples
+               docompress -x /usr/share/doc/${PF}
+       fi
+}

Reply via email to