commit:     de33ae0d9ef984e676549f3227933d7a40c4b4c2
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Tue Oct 17 14:33:35 2023 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Tue Oct 17 15:11:04 2023 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=de33ae0d

dev-python/pygame: Bump to 2.5.2

Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>

 dev-python/pygame/Manifest                       |   1 +
 dev-python/pygame/files/pygame-2.5.2-error.patch | 121 +++++++++++++++++++++++
 dev-python/pygame/pygame-2.5.2.ebuild            | 101 +++++++++++++++++++
 3 files changed, 223 insertions(+)

diff --git a/dev-python/pygame/Manifest b/dev-python/pygame/Manifest
index 860b2f9c101c..b4bddf487169 100644
--- a/dev-python/pygame/Manifest
+++ b/dev-python/pygame/Manifest
@@ -1 +1,2 @@
 DIST pygame-2.5.1.gh.tar.gz 6854761 BLAKE2B 
e137f73a3bb718213ef92e938ed1b065f5568d7dd2ade6edd973bc55d06425874da0e89e3c102fad39adac25f977ac97025a0c59099702cfabeffd0d3b8f109f
 SHA512 
d7aceb2bc6e40c5dc2d7a19fdc7af18abf021b79dd98b859975f99ec10895e1b09e11fbf17fd6ab925d3aa6c64e5b3dd56c0d857ecacc67303d92fc0efb2630c
+DIST pygame-2.5.2.gh.tar.gz 5970857 BLAKE2B 
523874926a8fd868f5674ed2997a44decb928fcfe246d551249ed7320a0e908ce46d00f459d187726edf74a4c1038cd56821f6466559fb7d24aa75d16769cbfe
 SHA512 
b54e9b80951c8a9e75666621aafc26874c6dbdab27330146f7217346c76be5627a5464a0102a5968eca0dbd7cced4b2143cd2ff1b6227e3e17e5634854b27f19

diff --git a/dev-python/pygame/files/pygame-2.5.2-error.patch 
b/dev-python/pygame/files/pygame-2.5.2-error.patch
new file mode 100644
index 000000000000..9f2800e29e70
--- /dev/null
+++ b/dev-python/pygame/files/pygame-2.5.2-error.patch
@@ -0,0 +1,121 @@
+From bbed8d293483fa7bd7322f5976641dfe86bf6367 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Ren=C3=A9=20Dudfield?= <[email protected]>
+Date: Sat, 7 Oct 2023 12:05:45 +0200
+Subject: [PATCH 1/2] base: Clean up some error messaging
+
+---
+ src_c/base.c | 5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/src_c/base.c b/src_c/base.c
+index 1f12a63451..d32c17bdc5 100644
+--- a/src_c/base.c
++++ b/src_c/base.c
+@@ -309,11 +309,13 @@ pg_mod_autoquit(const char *modname)
+ 
+     funcobj = PyObject_GetAttrString(module, "_internal_mod_quit");
+ 
++    if (PyErr_Occurred())
++        PyErr_Clear();
++
+     /* If we could not load _internal_mod_quit, load quit function */
+     if (!funcobj)
+         funcobj = PyObject_GetAttrString(module, "quit");
+ 
+-    /* Silence errors */
+     if (PyErr_Occurred())
+         PyErr_Clear();
+ 
+@@ -322,7 +324,6 @@ pg_mod_autoquit(const char *modname)
+         Py_XDECREF(temp);
+     }
+ 
+-    /* Silence errors */
+     if (PyErr_Occurred())
+         PyErr_Clear();
+ 
+
+From d8fae59ff0f3a02fe159cc302c891177af97a41f Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Ren=C3=A9=20Dudfield?= <[email protected]>
+Date: Sat, 7 Oct 2023 12:05:58 +0200
+Subject: [PATCH 2/2] pixelcopy: Clean up some error messaging
+
+---
+ src_c/pixelcopy.c | 27 +++++++++++++++++++++++++++
+ 1 file changed, 27 insertions(+)
+
+diff --git a/src_c/pixelcopy.c b/src_c/pixelcopy.c
+index 923072dde8..1d1eaf3267 100644
+--- a/src_c/pixelcopy.c
++++ b/src_c/pixelcopy.c
+@@ -767,6 +767,9 @@ surface_to_array(PyObject *self, PyObject *args, PyObject 
*kwds)
+     Uint8 opaque = 255;
+     Uint8 clear = 0;
+     SDL_Surface *surf;
++    PyObject *type = NULL;
++    PyObject *value = NULL;
++    PyObject *traceback = NULL;
+     char *keywords[] = {"array", "surface", "kind", "opaque", "clear", 0};
+ 
+     if (!PyArg_ParseTupleAndKeywords(
+@@ -794,8 +797,16 @@ surface_to_array(PyObject *self, PyObject *args, PyObject 
*kwds)
+     if (view_p->ndim == 2) {
+         if (view_kind == VIEWKIND_RGB) {
+             if (_copy_mapped(view_p, surf)) {
++                if (PyErr_Occurred()) {
++                    PyErr_Fetch(&type, &value, &traceback);
++                    PyErr_Clear();
++                }
++
+                 pgBuffer_Release(&pg_view);
+                 pgSurface_Unlock(surfobj);
++                if (type) {
++                    PyErr_Restore(type, value, traceback);
++                }
+                 return 0;
+             }
+         }
+@@ -876,6 +887,8 @@ map_array(PyObject *self, PyObject *args)
+     _pc_pixel_t pixel = {0};
+     int pix_bytesize;
+     Py_ssize_t i;
++    PyObject *type = NULL;
++    PyObject *value, *traceback;
+ 
+     if (!PyArg_ParseTuple(args, "OOO!", &tar_array, &src_array,
+                           &pgSurface_Type, &format_surf)) {
+@@ -889,6 +902,11 @@ map_array(PyObject *self, PyObject *args)
+     /* Determine array shapes and check validity
+      */
+     if (pgObject_GetBuffer(tar_array, &tar_pg_view, PyBUF_RECORDS)) {
++        if (PyErr_Occurred()) {
++            PyErr_Fetch(&type, &value, &traceback);
++            PyErr_Clear();
++        }
++
+         goto fail;
+     }
+     is_tar_alloc = 1;
+@@ -912,6 +930,10 @@ map_array(PyObject *self, PyObject *args)
+         goto fail;
+     }
+     if (pgObject_GetBuffer(src_array, &src_pg_view, PyBUF_RECORDS_RO)) {
++        if (PyErr_Occurred()) {
++            PyErr_Fetch(&type, &value, &traceback);
++            PyErr_Clear();
++        }
+         goto fail;
+     }
+     is_src_alloc = 1;
+@@ -1134,6 +1156,11 @@ map_array(PyObject *self, PyObject *args)
+         pgBuffer_Release(&tar_pg_view);
+     }
+     pgSurface_Unlock(format_surf);
++
++    if (type != NULL) {
++        PyErr_Restore(type, value, traceback);
++    }
++
+     return 0;
+ }
+ 

diff --git a/dev-python/pygame/pygame-2.5.2.ebuild 
b/dev-python/pygame/pygame-2.5.2.ebuild
new file mode 100644
index 000000000000..6d89ed769186
--- /dev/null
+++ b/dev-python/pygame/pygame-2.5.2.ebuild
@@ -0,0 +1,101 @@
+# 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="Python bindings for SDL multimedia library"
+HOMEPAGE="
+       https://www.pygame.org/
+       https://github.com/pygame/pygame/
+       https://pypi.org/project/pygame/
+"
+SRC_URI="
+       https://github.com/pygame/pygame/archive/${PV}.tar.gz
+               -> ${P}.gh.tar.gz
+"
+
+LICENSE="LGPL-2.1"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~ppc ~ppc64 ~riscv ~sparc ~x86"
+IUSE="examples opengl test X"
+RESTRICT="!test? ( test )"
+
+RDEPEND="
+       dev-python/numpy[${PYTHON_USEDEP}]
+       media-libs/freetype
+       media-libs/libjpeg-turbo:=
+       media-libs/libpng:=
+       media-libs/portmidi
+       media-libs/sdl2-image
+       media-libs/sdl2-mixer
+       media-libs/sdl2-ttf
+       X? ( media-libs/libsdl2[opengl?,threads,video,X] )
+       !X? ( media-libs/libsdl2[threads] )
+"
+DEPEND="
+       ${RDEPEND}
+       test? (
+               media-libs/sdl2-image[gif,jpeg,png,tiff,webp]
+               media-libs/sdl2-mixer[mp3,vorbis,wav]
+       )
+"
+# fontconfig used for fc-list
+RDEPEND+="
+       media-libs/fontconfig
+"
+# util-linux provides script
+BDEPEND="
+       dev-python/cython[${PYTHON_USEDEP}]
+       test? (
+               media-libs/fontconfig
+               sys-apps/util-linux
+       )
+"
+
+src_prepare() {
+       local PATCHES=(
+               # https://github.com/pygame/pygame/pull/4035
+               "${FILESDIR}/${P}-error.patch"
+       )
+
+       # some numpy-related crash (not a regression)
+       # https://github.com/pygame/pygame/issues/4049
+       sed -e 's:import numpy:raise ImportError(""):' \
+               -i test/pixelcopy_test.py || die
+
+       distutils-r1_src_prepare
+}
+
+python_configure() {
+       PORTMIDI_INC_PORTTIME=1 LOCALBASE="${EPREFIX}/usr" \
+               "${EPYTHON}" "${S}"/buildconfig/config.py || die
+}
+
+python_configure_all() {
+       find src_c/cython -name '*.pyx' -exec touch {} + || die
+       "${EPYTHON}" setup.py cython_only || die
+}
+
+python_test() {
+       local -x SDL_VIDEODRIVER=dummy
+       local -x SDL_AUDIODRIVER=disk
+       script -eqc "${EPYTHON} -m pygame.tests -v" || die
+}
+
+python_install() {
+       distutils-r1_python_install
+
+       # https://bugs.gentoo.org/497720
+       rm -fr "${D}$(python_get_sitedir)"/pygame/{docs,examples} || die
+}
+
+python_install_all() {
+       distutils-r1_python_install_all
+       use examples && dodoc -r examples
+}

Reply via email to