Files
gentoo/dev-python/dbus-python/files/dbus-python-1.4.0-py315.patch
Sam James 27e872e6c0 dev-python/dbus-python: enable py3.15
Contains a revert of a small feature which seems to be incomplete
according to the upstream discussion. Do as Fedora did.

Signed-off-by: Sam James <sam@gentoo.org>
2026-07-05 21:58:11 +01:00

133 lines
4.5 KiB
Diff

https://gitlab.freedesktop.org/dbus/dbus-python/-/work_items/59
https://src.fedoraproject.org/rpms/dbus-python/blob/rawhide/f/Revert-using-Py_TPFLAGS_MANAGED_WEAKREF.patch
From 32191526f73fa4ac6f760848c354b1353920755e Mon Sep 17 00:00:00 2001
From: Karolina Surma <ksurma@redhat.com>
Date: Wed, 14 Jan 2026 21:45:55 +0100
Subject: [PATCH] Revert using Py_TPFLAGS_MANAGED_WEAKREF
Added in https://gitlab.freedesktop.org/dbus/dbus-python/-/merge_requests/35
The feature is incomplete and doesn't work.
---
dbus_bindings/conn-internal.h | 2 --
dbus_bindings/conn.c | 11 -----------
dbus_bindings/server.c | 13 -------------
3 files changed, 26 deletions(-)
diff --git a/dbus_bindings/conn-internal.h b/dbus_bindings/conn-internal.h
index ae47816..d333d27 100644
--- a/dbus_bindings/conn-internal.h
+++ b/dbus_bindings/conn-internal.h
@@ -42,10 +42,8 @@ typedef struct {
*/
PyObject *object_paths;
-#if !DBUSPY_PY_VERSION_AT_LEAST(3, 12, 0, 0)
/* Weak-references list to make Connections weakly referenceable */
PyObject *weaklist;
-#endif
dbus_bool_t has_mainloop;
} Connection;
diff --git a/dbus_bindings/conn.c b/dbus_bindings/conn.c
index 54efc49..5dd4b5e 100644
--- a/dbus_bindings/conn.c
+++ b/dbus_bindings/conn.c
@@ -238,9 +238,7 @@ DBusPyConnection_NewConsumingDBusConnection(PyTypeObject *cls,
self->has_mainloop = (mainloop != Py_None);
self->conn = NULL;
self->filters = PyList_New(0);
-#if !DBUSPY_PY_VERSION_AT_LEAST(3, 12, 0, 0)
self->weaklist = NULL;
-#endif
if (!self->filters) goto err;
self->object_paths = PyDict_New();
if (!self->object_paths) goto err;
@@ -394,9 +392,7 @@ static void Connection_tp_dealloc(Connection *self)
/* avoid clobbering any pending exception */
PyErr_Fetch(&et, &ev, &etb);
-#if !DBUSPY_PY_VERSION_AT_LEAST(3, 12, 0, 0)
if (self->weaklist)
-#endif
{
PyObject_ClearWeakRefs((PyObject *)self);
}
@@ -460,19 +456,12 @@ PyTypeObject DBusPyConnection_Type = {
0, /*tp_getattro*/
0, /*tp_setattro*/
0, /*tp_as_buffer*/
-#if DBUSPY_PY_VERSION_AT_LEAST(3, 12, 0, 0)
- Py_TPFLAGS_MANAGED_WEAKREF |
-#endif
Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
Connection_tp_doc, /*tp_doc*/
0, /*tp_traverse*/
0, /*tp_clear*/
0, /*tp_richcompare*/
-#if DBUSPY_PY_VERSION_AT_LEAST(3, 12, 0, 0)
- 0, /*tp_weaklistoffset*/
-#else
offsetof(Connection, weaklist), /*tp_weaklistoffset*/
-#endif
0, /*tp_iter*/
0, /*tp_iternext*/
DBusPyConnection_tp_methods, /*tp_methods*/
diff --git a/dbus_bindings/server.c b/dbus_bindings/server.c
index d250a1d..9382fe6 100644
--- a/dbus_bindings/server.c
+++ b/dbus_bindings/server.c
@@ -38,10 +38,8 @@ typedef struct {
/* The Connection subtype for which this Server is a factory */
PyObject *conn_class;
-#if !DBUSPY_PY_VERSION_AT_LEAST(3, 12, 0, 0)
/* Weak-references list to make server weakly referenceable */
PyObject *weaklist;
-#endif
PyObject *mainloop;
} Server;
@@ -425,9 +423,7 @@ Server_tp_new(PyTypeObject *cls, PyObject *args, PyObject *kwargs)
return NULL;
}
-#if !DBUSPY_PY_VERSION_AT_LEAST(3, 12, 0, 0)
((Server *)self)->weaklist = NULL;
-#endif
TRACE(self);
return self;
@@ -442,9 +438,7 @@ static void Server_tp_dealloc(Server *self)
/* avoid clobbering any pending exception */
PyErr_Fetch(&et, &ev, &etb);
-#if !DBUSPY_PY_VERSION_AT_LEAST(3, 12, 0, 0)
if (self->weaklist)
-#endif
{
PyObject_ClearWeakRefs((PyObject *)self);
}
@@ -577,19 +571,12 @@ PyTypeObject DBusPyServer_Type = {
0, /*tp_getattro*/
0, /*tp_setattro*/
0, /*tp_as_buffer*/
-#if DBUSPY_PY_VERSION_AT_LEAST(3, 12, 0, 0)
- Py_TPFLAGS_MANAGED_WEAKREF |
-#endif
Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
Server_tp_doc, /*tp_doc*/
0, /*tp_traverse*/
0, /*tp_clear*/
0, /*tp_richcompare*/
-#if DBUSPY_PY_VERSION_AT_LEAST(3, 12, 0, 0)
- 0, /*tp_weaklistoffset*/
-#else
offsetof(Server, weaklist), /*tp_weaklistoffset*/
-#endif
0, /*tp_iter*/
0, /*tp_iternext*/
DBusPyServer_tp_methods,/*tp_methods*/
--
2.52.0