pkgsrc-Changes archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
CVS commit: pkgsrc/devel/py-game
Module Name: pkgsrc
Committed By: wiz
Date: Tue Oct 13 09:06:48 UTC 2026
Modified Files:
pkgsrc/devel/py-game: Makefile distinfo
Added Files:
pkgsrc/devel/py-game/patches: patch-setup.py
patch-src__c_cython_pygame___sprite.pyx patch-src__c_pgcompat.h
patch-src__c_surface.c patch-src__c_surflock.c
Log Message:
py-game: fix build with Python 3.15
>From upstream bug report.
Bump PKGREVISION.
To generate a diff of this commit:
cvs rdiff -u -r1.61 -r1.62 pkgsrc/devel/py-game/Makefile
cvs rdiff -u -r1.19 -r1.20 pkgsrc/devel/py-game/distinfo
cvs rdiff -u -r0 -r1.1 pkgsrc/devel/py-game/patches/patch-setup.py \
pkgsrc/devel/py-game/patches/patch-src__c_cython_pygame___sprite.pyx \
pkgsrc/devel/py-game/patches/patch-src__c_pgcompat.h \
pkgsrc/devel/py-game/patches/patch-src__c_surface.c \
pkgsrc/devel/py-game/patches/patch-src__c_surflock.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: pkgsrc/devel/py-game/Makefile
diff -u pkgsrc/devel/py-game/Makefile:1.61 pkgsrc/devel/py-game/Makefile:1.62
--- pkgsrc/devel/py-game/Makefile:1.61 Tue Sep 29 06:04:40 2026
+++ pkgsrc/devel/py-game/Makefile Tue Oct 13 09:06:47 2026
@@ -1,8 +1,8 @@
-# $NetBSD: Makefile,v 1.61 2026/09/29 06:04:40 wiz Exp $
+# $NetBSD: Makefile,v 1.62 2026/10/13 09:06:47 wiz Exp $
DISTNAME= pygame-2.6.1
PKGNAME= ${PYPKGPREFIX}-${DISTNAME:S/py//}
-PKGREVISION= 10
+PKGREVISION= 11
CATEGORIES= devel games python
MASTER_SITES= ${MASTER_SITE_PYPI:=P/Pygame/}
Index: pkgsrc/devel/py-game/distinfo
diff -u pkgsrc/devel/py-game/distinfo:1.19 pkgsrc/devel/py-game/distinfo:1.20
--- pkgsrc/devel/py-game/distinfo:1.19 Tue May 26 02:13:09 2026
+++ pkgsrc/devel/py-game/distinfo Tue Oct 13 09:06:47 2026
@@ -1,4 +1,4 @@
-$NetBSD: distinfo,v 1.19 2026/05/26 02:13:09 gutteridge Exp $
+$NetBSD: distinfo,v 1.20 2026/10/13 09:06:47 wiz Exp $
BLAKE2s (pygame-2.6.1.tar.gz) = 5fb7778df59528ffacb144c93c8f072add0a298922993a1394fae898b780e067
SHA512 (pygame-2.6.1.tar.gz) = 67ae07be50822dac5b2ce4b04a04920dc22ac4d43c348e2a95646c7646ca82b822a1fd7b89a295406581969303235831e00aeec4ea29e975a80f8013170eee5d
@@ -6,5 +6,10 @@ Size (pygame-2.6.1.tar.gz) = 14808125 by
SHA1 (patch-buildconfig_Setup.SDL2.in) = 300e7ce4d5442955edc724c3d052c7738780e038
SHA1 (patch-buildconfig_config__darwin.py) = 6ab81ce5cc5c9ce1923f4c4702a0faff9f22e184
SHA1 (patch-buildconfig_config__unix.py) = cdd34d2dcec18f802e346c0a058612821ff23ee0
+SHA1 (patch-setup.py) = e0f863ef97e0e0b387517fb0c0f14754d3b2945f
SHA1 (patch-src__c_base.c) = d94f491a1014cebe74b42f970bbd46826d533339
SHA1 (patch-src__c_color.c) = 3d51f31250cf69d2b1f352683f1f0ba75390061d
+SHA1 (patch-src__c_cython_pygame___sprite.pyx) = 67ff539acbf6b4f03598485cac0478c6151e8088
+SHA1 (patch-src__c_pgcompat.h) = 5f5086972fe42d3a8d5a0e6d3f1d752331db0729
+SHA1 (patch-src__c_surface.c) = 9c860a4225cd2d9caf36650ac42ccd8e689c86a6
+SHA1 (patch-src__c_surflock.c) = 846cc206819a39eba96b958fe81eac4bbe0bcfc9
Added files:
Index: pkgsrc/devel/py-game/patches/patch-setup.py
diff -u /dev/null pkgsrc/devel/py-game/patches/patch-setup.py:1.1
--- /dev/null Tue Oct 13 09:06:48 2026
+++ pkgsrc/devel/py-game/patches/patch-setup.py Tue Oct 13 09:06:47 2026
@@ -0,0 +1,24 @@
+$NetBSD: patch-setup.py,v 1.1 2026/10/13 09:06:47 wiz Exp $
+
+Pass compiler flags properly.
+https://github.com/pygame/pygame/issues/4716
+
+--- setup.py.orig 2024-09-29 12:15:28.001112000 +0000
++++ setup.py
+@@ -123,10 +123,13 @@ if os.environ.get('PYGAME_DETECT_AVX2', '') != '':
+ # filename is found, no need to search any further
+ break
+
+- distutils.ccompiler.spawn(cmd, dry_run=self.dry_run, **kwargs)
++ compile_cmd(self, cmd, **kwargs)
+
+- distutils.ccompiler.CCompiler.__spawn = distutils.ccompiler.CCompiler.spawn
+- distutils.ccompiler.CCompiler.spawn = spawn
++ # setuptools' bundled distutils runs the compiler through Compiler.call();
++ # older distutils used spawn(). Hook whichever one compiles.
++ hook_name = 'call' if hasattr(distutils.ccompiler.CCompiler, 'call') else 'spawn'
++ compile_cmd = getattr(distutils.ccompiler.CCompiler, hook_name)
++ setattr(distutils.ccompiler.CCompiler, hook_name, spawn)
+
+ # A (bit hacky) fix for https://github.com/pygame/pygame/issues/2613
+ # This is due to the fact that distutils uses command line args to
Index: pkgsrc/devel/py-game/patches/patch-src__c_cython_pygame___sprite.pyx
diff -u /dev/null pkgsrc/devel/py-game/patches/patch-src__c_cython_pygame___sprite.pyx:1.1
--- /dev/null Tue Oct 13 09:06:48 2026
+++ pkgsrc/devel/py-game/patches/patch-src__c_cython_pygame___sprite.pyx Tue Oct 13 09:06:47 2026
@@ -0,0 +1,15 @@
+$NetBSD: patch-src__c_cython_pygame___sprite.pyx,v 1.1 2026/10/13 09:06:47 wiz Exp $
+
+Python 3.15 support.
+https://github.com/pygame/pygame/issues/4716
+
+--- src_c/cython/pygame/_sprite.pyx.orig 2024-09-29 12:15:28.005112000 +0000
++++ src_c/cython/pygame/_sprite.pyx
+@@ -145,7 +145,6 @@ cdef class Sprite:
+ cdef dict __dict__
+
+ def __cinit__(self):
+- self.__dict__ = {}
+ self.__g = set() # The groups the sprite is in
+
+ def __init__(self, *groups):
Index: pkgsrc/devel/py-game/patches/patch-src__c_pgcompat.h
diff -u /dev/null pkgsrc/devel/py-game/patches/patch-src__c_pgcompat.h:1.1
--- /dev/null Tue Oct 13 09:06:48 2026
+++ pkgsrc/devel/py-game/patches/patch-src__c_pgcompat.h Tue Oct 13 09:06:47 2026
@@ -0,0 +1,34 @@
+$NetBSD: patch-src__c_pgcompat.h,v 1.1 2026/10/13 09:06:47 wiz Exp $
+
+Python 3.15 support.
+https://github.com/pygame/pygame/issues/4716
+
+--- src_c/pgcompat.h.orig 2024-09-29 12:15:28.012112000 +0000
++++ src_c/pgcompat.h
+@@ -24,4 +24,26 @@
+ #define Slice_GET_INDICES_EX(slice, length, start, stop, step, slicelength) \
+ PySlice_GetIndicesEx(slice, length, start, stop, step, slicelength)
+
++/* PyWeakref_GetObject() was removed in Python 3.15. PyWeakref_GetRef()
++ * (Python 3.13+) replaces it: returns 1 and a new reference if the referent
++ * is alive, 0 and NULL if it is dead, -1 and NULL on error. */
++#if PY_VERSION_HEX < 0x030D0000
++static inline int
++PyWeakref_GetRef(PyObject *ref, PyObject **pobj)
++{
++ PyObject *obj = PyWeakref_GetObject(ref);
++ if (obj == NULL) {
++ *pobj = NULL;
++ return -1;
++ }
++ if (obj == Py_None) {
++ *pobj = NULL;
++ return 0;
++ }
++ Py_INCREF(obj);
++ *pobj = obj;
++ return 1;
++}
++#endif
++
+ #endif /* ~PGCOMPAT_INTERNAL_H */
Index: pkgsrc/devel/py-game/patches/patch-src__c_surface.c
diff -u /dev/null pkgsrc/devel/py-game/patches/patch-src__c_surface.c:1.1
--- /dev/null Tue Oct 13 09:06:48 2026
+++ pkgsrc/devel/py-game/patches/patch-src__c_surface.c Tue Oct 13 09:06:48 2026
@@ -0,0 +1,45 @@
+$NetBSD: patch-src__c_surface.c,v 1.1 2026/10/13 09:06:48 wiz Exp $
+
+Python 3.15 support.
+https://github.com/pygame/pygame/issues/4716
+
+--- src_c/surface.c.orig 2024-09-29 12:15:28.016111900 +0000
++++ src_c/surface.c
+@@ -1020,8 +1020,14 @@ surf_get_locks(PyObject *self, PyObject *_null)
+ return NULL;
+
+ for (i = 0; i < len; i++) {
+- tmp = PyWeakref_GetObject(PyList_GetItem(surf->locklist, i));
+- Py_INCREF(tmp);
++ if (PyWeakref_GetRef(PyList_GetItem(surf->locklist, i), &tmp) < 0) {
++ Py_DECREF(tuple);
++ return NULL;
++ }
++ if (tmp == NULL) { /* dead lock owner: report None, as before */
++ tmp = Py_None;
++ Py_INCREF(tmp);
++ }
+ PyTuple_SetItem(tuple, i, tmp);
+ }
+ return tuple;
+@@ -3443,11 +3449,17 @@ _release_buffer(Py_buffer *view_p)
+ internal = (pg_bufferinternal *)view_p->internal;
+ consumer_ref = internal->consumer_ref;
+ assert(consumer_ref && PyWeakref_CheckRef(consumer_ref));
+- consumer = PyWeakref_GetObject(consumer_ref);
+- if (consumer) {
+- if (!pgSurface_UnlockBy((pgSurfaceObject *)view_p->obj, consumer)) {
++ if (PyWeakref_GetRef(consumer_ref, &consumer) < 0) {
++ PyErr_Clear();
++ }
++ else {
++ /* A dead consumer is passed as None, as PyWeakref_GetObject() did,
++ * so UnlockBy still purges its dead lock entry. */
++ if (!pgSurface_UnlockBy((pgSurfaceObject *)view_p->obj,
++ consumer ? consumer : Py_None)) {
+ PyErr_Clear();
+ }
++ Py_XDECREF(consumer);
+ }
+ Py_DECREF(consumer_ref);
+ PyMem_Free(internal);
Index: pkgsrc/devel/py-game/patches/patch-src__c_surflock.c
diff -u /dev/null pkgsrc/devel/py-game/patches/patch-src__c_surflock.c:1.1
--- /dev/null Tue Oct 13 09:06:48 2026
+++ pkgsrc/devel/py-game/patches/patch-src__c_surflock.c Tue Oct 13 09:06:48 2026
@@ -0,0 +1,42 @@
+$NetBSD: patch-src__c_surflock.c,v 1.1 2026/10/13 09:06:48 wiz Exp $
+
+Python 3.15 support.
+https://github.com/pygame/pygame/issues/4716
+
+--- src_c/surflock.c.orig 2024-09-29 12:15:28.016111900 +0000
++++ src_c/surflock.c
+@@ -121,11 +121,16 @@ pgSurface_UnlockBy(pgSurfaceObject *surfobj, PyObject
+
+ if (surf->locklist != NULL) {
+ PyObject *item, *ref;
++ int alive, match;
+ Py_ssize_t len = PyList_Size(surf->locklist);
+ while (--len >= 0 && !found) {
+ item = PyList_GetItem(surf->locklist, len);
+- ref = PyWeakref_GetObject(item);
+- if (ref == lockobj) {
++ if (PyWeakref_GetRef(item, &ref) < 0) {
++ return 0;
++ }
++ match = (ref == lockobj);
++ Py_XDECREF(ref);
++ if (match) {
+ if (PySequence_DelItem(surf->locklist, len) == -1) {
+ return 0;
+ }
+@@ -139,8 +144,13 @@ pgSurface_UnlockBy(pgSurfaceObject *surfobj, PyObject
+ len = PyList_Size(surf->locklist);
+ while (--len >= 0) {
+ item = PyList_GetItem(surf->locklist, len);
+- ref = PyWeakref_GetObject(item);
+- if (ref == Py_None) {
++ alive = PyWeakref_GetRef(item, &ref);
++ if (alive < 0) {
++ noerror = 0;
++ continue;
++ }
++ Py_XDECREF(ref);
++ if (!alive) {
+ if (PySequence_DelItem(surf->locklist, len) == -1) {
+ noerror = 0;
+ }
Home |
Main Index |
Thread Index |
Old Index