Hotfix Python 3.8

Fixes https://bugzilla.redhat.com/show_bug.cgi?id=1717654
This commit is contained in:
Miro Hrončok 2019-06-11 17:22:42 +02:00
parent 7505b46ea4
commit 01a4993071
2 changed files with 213 additions and 0 deletions

View File

@ -0,0 +1,210 @@
From 8060b9b329cc68c69254a4efa992807c1bae5ea8 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Miro=20Hron=C4=8Dok?= <miro@hroncok.cz>
Date: Tue, 11 Jun 2019 17:17:26 +0200
Subject: [PATCH] Remove .tp_print access from Python 3
See https://bugzilla.redhat.com/show_bug.cgi?id=1717654
---
dbus_bindings/abstract.c | 7 ++++++-
dbus_bindings/bytes.c | 4 ++++
dbus_bindings/containers.c | 6 ++++++
dbus_bindings/float.c | 4 ++++
dbus_bindings/int.c | 14 ++++++++++++++
dbus_bindings/signature.c | 2 ++
dbus_bindings/string.c | 4 ++++
7 files changed, 40 insertions(+), 1 deletion(-)
diff --git a/dbus_bindings/abstract.c b/dbus_bindings/abstract.c
index 7bdf368..7a6f92f 100644
--- a/dbus_bindings/abstract.c
+++ b/dbus_bindings/abstract.c
@@ -790,7 +790,6 @@ dbus_py_init_abstract(void)
#ifdef PY3
DBusPyBytesBase_Type.tp_base = &PyBytes_Type;
if (PyType_Ready(&DBusPyBytesBase_Type) < 0) return 0;
- DBusPyBytesBase_Type.tp_print = NULL;
#else
DBusPyIntBase_Type.tp_base = &PyInt_Type;
if (PyType_Ready(&DBusPyIntBase_Type) < 0) return 0;
@@ -801,15 +800,21 @@ dbus_py_init_abstract(void)
DBusPyFloatBase_Type.tp_base = &PyFloat_Type;
if (PyType_Ready(&DBusPyFloatBase_Type) < 0) return 0;
+#ifndef PY3
DBusPyFloatBase_Type.tp_print = NULL;
+#endif
DBusPyLongBase_Type.tp_base = &PyLong_Type;
if (PyType_Ready(&DBusPyLongBase_Type) < 0) return 0;
+#ifndef PY3
DBusPyLongBase_Type.tp_print = NULL;
+#endif
DBusPyStrBase_Type.tp_base = &NATIVESTR_TYPE;
if (PyType_Ready(&DBusPyStrBase_Type) < 0) return 0;
+#ifndef PY3
DBusPyStrBase_Type.tp_print = NULL;
+#endif
return 1;
}
diff --git a/dbus_bindings/bytes.c b/dbus_bindings/bytes.c
index 873a2fa..7ccb607 100644
--- a/dbus_bindings/bytes.c
+++ b/dbus_bindings/bytes.c
@@ -278,11 +278,15 @@ dbus_py_init_byte_types(void)
{
DBusPyByte_Type.tp_base = &DBUS_PY_BYTE_BASE;
if (PyType_Ready(&DBusPyByte_Type) < 0) return 0;
+#ifndef PY3
DBusPyByte_Type.tp_print = NULL;
+#endif
DBusPyByteArray_Type.tp_base = &DBUS_PY_BYTEARRAY_BASE;
if (PyType_Ready(&DBusPyByteArray_Type) < 0) return 0;
+#ifndef PY3
DBusPyByteArray_Type.tp_print = NULL;
+#endif
return 1;
}
diff --git a/dbus_bindings/containers.c b/dbus_bindings/containers.c
index 26f983b..b1268eb 100644
--- a/dbus_bindings/containers.c
+++ b/dbus_bindings/containers.c
@@ -775,15 +775,21 @@ dbus_py_init_container_types(void)
DBusPyArray_Type.tp_base = &PyList_Type;
if (PyType_Ready(&DBusPyArray_Type) < 0) return 0;
+#ifndef PY3
DBusPyArray_Type.tp_print = NULL;
+#endif
DBusPyDict_Type.tp_base = &PyDict_Type;
if (PyType_Ready(&DBusPyDict_Type) < 0) return 0;
+#ifndef PY3
DBusPyDict_Type.tp_print = NULL;
+#endif
DBusPyStruct_Type.tp_base = &PyTuple_Type;
if (PyType_Ready(&DBusPyStruct_Type) < 0) return 0;
+#ifndef PY3
DBusPyStruct_Type.tp_print = NULL;
+#endif
return 1;
}
diff --git a/dbus_bindings/float.c b/dbus_bindings/float.c
index 9d05c19..c31f224 100644
--- a/dbus_bindings/float.c
+++ b/dbus_bindings/float.c
@@ -128,12 +128,16 @@ dbus_py_init_float_types(void)
{
DBusPyDouble_Type.tp_base = &DBusPyFloatBase_Type;
if (PyType_Ready(&DBusPyDouble_Type) < 0) return 0;
+#ifndef PY3
DBusPyDouble_Type.tp_print = NULL;
+#endif
#ifdef WITH_DBUS_FLOAT32
DBusPyFloat_Type.tp_base = &DBusPyFloatBase_Type;
if (PyType_Ready(&DBusPyFloat_Type) < 0) return 0;
+#ifndef PY3
DBusPyFloat_Type.tp_print = NULL;
+#endif
#endif
return 1;
diff --git a/dbus_bindings/int.c b/dbus_bindings/int.c
index 109d4c7..1b36cd3 100644
--- a/dbus_bindings/int.c
+++ b/dbus_bindings/int.c
@@ -721,33 +721,47 @@ dbus_py_init_int_types(void)
if (PyType_Ready(&DBusPyInt16_Type) < 0) return 0;
/* disable the tp_print copied from PyInt_Type, so tp_repr gets called as
desired */
+#ifndef PY3
DBusPyInt16_Type.tp_print = NULL;
+#endif
DBusPyUInt16_Type.tp_base = &INTBASE;
if (PyType_Ready(&DBusPyUInt16_Type) < 0) return 0;
+#ifndef PY3
DBusPyUInt16_Type.tp_print = NULL;
+#endif
DBusPyInt32_Type.tp_base = &INTBASE;
if (PyType_Ready(&DBusPyInt32_Type) < 0) return 0;
+#ifndef PY3
DBusPyInt32_Type.tp_print = NULL;
+#endif
DBusPyUInt32_Type.tp_base = &DBusPyLongBase_Type;
if (PyType_Ready(&DBusPyUInt32_Type) < 0) return 0;
+#ifndef PY3
DBusPyUInt32_Type.tp_print = NULL;
+#endif
#if defined(DBUS_HAVE_INT64) && defined(HAVE_LONG_LONG)
DBusPyInt64_Type.tp_base = &DBusPyLongBase_Type;
if (PyType_Ready(&DBusPyInt64_Type) < 0) return 0;
+#ifndef PY3
DBusPyInt64_Type.tp_print = NULL;
+#endif
DBusPyUInt64_Type.tp_base = &DBusPyLongBase_Type;
if (PyType_Ready(&DBusPyUInt64_Type) < 0) return 0;
+#ifndef PY3
DBusPyUInt64_Type.tp_print = NULL;
+#endif
#endif
DBusPyBoolean_Type.tp_base = &INTBASE;
if (PyType_Ready(&DBusPyBoolean_Type) < 0) return 0;
+#ifndef PY3
DBusPyBoolean_Type.tp_print = NULL;
+#endif
return 1;
}
diff --git a/dbus_bindings/signature.c b/dbus_bindings/signature.c
index c1a32e7..ca2c1d8 100644
--- a/dbus_bindings/signature.c
+++ b/dbus_bindings/signature.c
@@ -233,7 +233,9 @@ dbus_py_init_signature(void)
DBusPySignature_Type.tp_base = &DBusPyStrBase_Type;
if (PyType_Ready(&DBusPySignature_Type) < 0) return 0;
+#ifndef PY3
DBusPySignature_Type.tp_print = NULL;
+#endif
return 1;
}
diff --git a/dbus_bindings/string.c b/dbus_bindings/string.c
index ce8f03d..28f7f48 100644
--- a/dbus_bindings/string.c
+++ b/dbus_bindings/string.c
@@ -337,7 +337,9 @@ dbus_py_init_string_types(void)
}
DBusPyString_Type.tp_base = &PyUnicode_Type;
if (PyType_Ready(&DBusPyString_Type) < 0) return 0;
+#ifndef PY3
DBusPyString_Type.tp_print = NULL;
+#endif
#ifndef PY3
DBusPyUTF8String_Type.tp_base = &DBusPyStrBase_Type;
@@ -347,7 +349,9 @@ dbus_py_init_string_types(void)
DBusPyObjectPath_Type.tp_base = &DBusPyStrBase_Type;
if (PyType_Ready(&DBusPyObjectPath_Type) < 0) return 0;
+#ifndef PY3
DBusPyObjectPath_Type.tp_print = NULL;
+#endif
return 1;
}
--
2.21.0

View File

@ -14,6 +14,9 @@ Source1: http://dbus.freedesktop.org/releases/dbus-python/%{name}-%{version}.tar
# borrow centos7 patch to use sitearch properly
Patch0: 0001-Move-python-modules-to-architecture-specific-directo.patch
# https://bugzilla.redhat.com/show_bug.cgi?id=1717654
Patch2: 0002-Remove-.tp_print-access-from-Python-3.patch
BuildRequires: dbus-devel
BuildRequires: dbus-glib-devel
BuildRequires: python2-docutils