commit:     ef7d9650ac3274555fc5e3d2c0766042587bfce0
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Wed Aug 10 13:05:32 2022 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Wed Aug 10 13:05:32 2022 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=ef7d9650

dev-python/scandir: fix extension install for Python 3.9, Python 3.10

Still can't do Python 3.11.

Signed-off-by: Sam James <sam <AT> gentoo.org>

 .../scandir/files/scandir-1.10.0-python3.9.patch   | 62 ++++++++++++++++++++++
 dev-python/scandir/scandir-1.10.0-r3.ebuild        | 27 ++++++++++
 2 files changed, 89 insertions(+)

diff --git a/dev-python/scandir/files/scandir-1.10.0-python3.9.patch 
b/dev-python/scandir/files/scandir-1.10.0-python3.9.patch
new file mode 100644
index 000000000000..c8683c1c6b9b
--- /dev/null
+++ b/dev-python/scandir/files/scandir-1.10.0-python3.9.patch
@@ -0,0 +1,62 @@
+https://github.com/benhoyt/scandir/commit/3396aa4155ffde8600a0e9ca50d5872569169b5d
+
+From 3396aa4155ffde8600a0e9ca50d5872569169b5d Mon Sep 17 00:00:00 2001
+From: Ben Hoyt <[email protected]>
+Date: Mon, 24 Jan 2022 08:44:07 +1300
+Subject: [PATCH] Add Python 3.10 to tests (#137)
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Fix PyStructSequence_UnnamedField build issues on Python 3.9/3.10
+
+_scandir.c:663:7: error: conflicting type qualifiers for 
‘PyStructSequence_UnnamedField’
+  663 | char *PyStructSequence_UnnamedField = "unnamed field";
+      |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+In file included from /usr/local/include/python3.10/Python.h:127,
+                 from _scandir.c:14:
+/usr/local/include/python3.10/structseq.h:22:27: note: previous declaration of 
‘PyStructSequence_UnnamedField’ was here
+   22 | extern const char * const PyStructSequence_UnnamedField;
+      |                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Fixes https://github.com/benhoyt/scandir/pull/137
+---
+ _scandir.c                  | 10 +++++-----
+ scandir.py                  |  2 +-
+ 3 files changed, 7 insertions(+), 7 deletions(-)
+
+diff --git a/_scandir.c b/_scandir.c
+index 6cc28c8..433483f 100644
+--- a/_scandir.c
++++ b/_scandir.c
+@@ -660,7 +660,7 @@ _pystat_fromstructstat(STRUCT_STAT *st)
+     return v;
+ }
+ 
+-char *PyStructSequence_UnnamedField = "unnamed field";
++static char *scandir_unnamed_field = "unnamed field";
+ 
+ PyDoc_STRVAR(stat_result__doc__,
+ "stat_result: Result from stat, fstat, or lstat.\n\n\
+@@ -681,7 +681,7 @@ static PyStructSequence_Field stat_result_fields[] = {
+     {"st_uid",     "user ID of owner"},
+     {"st_gid",     "group ID of owner"},
+     {"st_size",    "total size, in bytes"},
+-    /* The NULL is replaced with PyStructSequence_UnnamedField later. */
++    /* The NULL is replaced with scandir_unnamed_field later. */
+     {NULL,         "integer time of last access"},
+     {NULL,         "integer time of last modification"},
+     {NULL,         "integer time of last change"},
+@@ -1817,9 +1817,9 @@ init_scandir(void)
+     if (!billion)
+         INIT_ERROR;
+ 
+-    stat_result_desc.fields[7].name = PyStructSequence_UnnamedField;
+-    stat_result_desc.fields[8].name = PyStructSequence_UnnamedField;
+-    stat_result_desc.fields[9].name = PyStructSequence_UnnamedField;
++    stat_result_desc.fields[7].name = scandir_unnamed_field;
++    stat_result_desc.fields[8].name = scandir_unnamed_field;
++    stat_result_desc.fields[9].name = scandir_unnamed_field;
+     PyStructSequence_InitType(&StatResultType, &stat_result_desc);
+     structseq_new = StatResultType.tp_new;
+     StatResultType.tp_new = statresult_new;

diff --git a/dev-python/scandir/scandir-1.10.0-r3.ebuild 
b/dev-python/scandir/scandir-1.10.0-r3.ebuild
new file mode 100644
index 000000000000..ac31277480d8
--- /dev/null
+++ b/dev-python/scandir/scandir-1.10.0-r3.ebuild
@@ -0,0 +1,27 @@
+# Copyright 1999-2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+# Do NOT add Python 3.11 without verifying the C extension is actually built
+# and installed for it!
+PYTHON_COMPAT=( python3_{8..10} )
+
+inherit distutils-r1
+
+DESCRIPTION="A better directory iterator and faster os.walk()"
+HOMEPAGE="https://github.com/benhoyt/scandir";
+SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${P}.tar.gz"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sparc 
~x86 ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris"
+
+PATCHES=(
+       "${FILESDIR}"/${P}-python3.9.patch
+)
+
+python_test() {
+       "${EPYTHON}" test/run_tests.py -v || die "tests failed under ${EPYTHON}"
+}

Reply via email to