SHA256
1
0
forked from pool/scribus
scribus/Fails-to-build-with-python-3.8.patch
Christophe Giboudeaux 7cae6045e8 Accepting request 765017 from home:wolfi323:branches:KDE:Extra
Port to python3 and fix build with newer poppler versions

Tested with poppler 0.84.0 and the versions in TW and Leap, builds fine now with python 3.8.1 too.

OBS-URL: https://build.opensuse.org/request/show/765017
OBS-URL: https://build.opensuse.org/package/show/KDE:Extra/scribus?expand=0&rev=50
2020-01-16 15:35:33 +00:00

186 lines
6.3 KiB
Diff

From df0ba0a365fd36bf4a4abac3b45e65a65a46c82c Mon Sep 17 00:00:00 2001
From: Jean Ghali <jghali@libertysurf.fr>
Date: Sun, 3 Nov 2019 01:15:12 +0000
Subject: [PATCH] #15901: Fails to build with python 3.8
git-svn-id: svn://scribus.net/trunk/Scribus@23314 11d20701-8431-0410-a711-e3c959e3b870
---
.../plugins/scriptplugin/objimageexport.cpp | 52 ++++++++++++++++---
scribus/plugins/scriptplugin/objpdffile.cpp | 13 ++++-
scribus/plugins/scriptplugin/objprinter.cpp | 13 ++++-
3 files changed, 70 insertions(+), 8 deletions(-)
diff --git a/scribus/plugins/scriptplugin/objimageexport.cpp b/scribus/plugins/scriptplugin/objimageexport.cpp
index cfc3c3fa06..7d2fb2f0a8 100644
--- a/scribus/plugins/scriptplugin/objimageexport.cpp
+++ b/scribus/plugins/scriptplugin/objimageexport.cpp
@@ -220,29 +220,62 @@ PyTypeObject ImageExport_Type = {
const_cast<char*>("scribus.ImageExport"), // char *tp_name; /* For printing, in format "<module>.<name>" */
sizeof(ImageExport), // int tp_basicsize, /* For allocation */
0, // int tp_itemsize; /* For allocation */
+
+ /* Methods to implement standard operations */
+
(destructor) ImageExport_dealloc, // destructor tp_dealloc;
- nullptr, // printfunc tp_print;
+#if PY_VERSION_HEX >= 0x03080000
+ 0, // Py_ssize_t tp_vectorcall_offset
+#else
+ nullptr, // printfunc tp_print;
+#endif
nullptr, // getattrfunc tp_getattr;
nullptr, // setattrfunc tp_setattr;
- nullptr, // cmpfunc tp_compare;
+ nullptr, // cmpfunc tp_as_async;
nullptr, // reprfunc tp_repr;
+
+ /* Method suites for standard classes */
+
nullptr, // PyNumberMethods *tp_as_number;
nullptr, // PySequenceMethods *tp_as_sequence;
nullptr, // PyMappingMethods *tp_as_mapping;
+
+ /* More standard operations (here for binary compatibility) */
+
nullptr, // hashfunc tp_hash;
nullptr, // ternaryfunc tp_call;
nullptr, // reprfunc tp_str;
nullptr, // getattrofunc tp_getattro;
nullptr, // setattrofunc tp_setattro;
+
+ /* Functions to access object as input/output buffer */
nullptr, // PyBufferProcs *tp_as_buffer;
+
+ /* Flags to define presence of optional/expanded features */
Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, // long tp_flags;
+
imgexp__doc__, // char *tp_doc; /* Documentation string */
+
+ /* Assigned meaning in release 2.0 */
+ /* call function for all accessible objects */
nullptr, // traverseproc tp_traverse;
+
+ /* delete references to contained objects */
nullptr, // inquiry tp_clear;
+
+ /* Assigned meaning in release 2.1 */
+ /* rich comparisons */
nullptr, // richcmpfunc tp_richcompare;
+
+ /* weak reference enabler */
0, // long tp_weaklistoffset;
+
+ /* Added in release 2.2 */
+ /* Iterators */
nullptr, // getiterfunc tp_iter;
nullptr, // iternextfunc tp_iternext;
+
+ /* Attribute descriptor and subclassing stuff */
ImageExport_methods, // struct PyMethodDef *tp_methods;
ImageExport_members, // struct PyMemberDef *tp_members;
ImageExport_getseters, // struct PyGetSetDef *tp_getset;
@@ -264,12 +297,19 @@ PyTypeObject ImageExport_Type = {
nullptr, // destructor tp_del;
0, // unsigned int tp_version_tag;
0, // destructor tp_finalize;
+#if PY_VERSION_HEX >= 0x03080000
+ nullptr, // tp_vectorcall
+#endif
+#if PY_VERSION_HEX >= 0x03080000 && PY_VERSION_HEX < 0x03090000
+ nullptr, //deprecated tp_print
+#endif
#ifdef COUNT_ALLOCS
/* these must be last and never explicitly initialized */
- // int tp_allocs;
- // int tp_frees;
- // int tp_maxalloc;
- // struct _typeobject *tp_next;
+ // int tp_allocs;
+ // int tp_frees;
+ // int tp_maxalloc;
+ // struct _typeobject *tp_prev;
+ // struct _typeobject *tp_next;
#endif
};
diff --git a/scribus/plugins/scriptplugin/objpdffile.cpp b/scribus/plugins/scriptplugin/objpdffile.cpp
index 2ae8c93452..5ec423b20c 100644
--- a/scribus/plugins/scriptplugin/objpdffile.cpp
+++ b/scribus/plugins/scriptplugin/objpdffile.cpp
@@ -1555,10 +1555,14 @@ PyTypeObject PDFfile_Type = {
/* Methods to implement standard operations */
(destructor) PDFfile_dealloc, // destructor tp_dealloc;
+#if PY_VERSION_HEX >= 0x03080000
+ 0, // Py_ssize_t tp_vectorcall_offset
+#else
nullptr, // printfunc tp_print;
+#endif
nullptr, // getattrfunc tp_getattr;
nullptr, // setattrfunc tp_setattr;
- nullptr, // cmpfunc tp_compare;
+ nullptr, // cmpfunc tp_as_async;
nullptr, // reprfunc tp_repr;
/* Method suites for standard classes */
@@ -1624,12 +1628,19 @@ PyTypeObject PDFfile_Type = {
nullptr, // destructor tp_del;
0, // unsigned int tp_version_tag;
0, // destructor tp_finalize;
+#if PY_VERSION_HEX >= 0x03080000
+ nullptr, // tp_vectorcall
+#endif
+#if PY_VERSION_HEX >= 0x03080000 && PY_VERSION_HEX < 0x03090000
+ nullptr, //deprecated tp_print
+#endif
#ifdef COUNT_ALLOCS
/* these must be last and never explicitly initialized */
// int tp_allocs;
// int tp_frees;
// int tp_maxalloc;
+ // struct _typeobject *tp_prev;
// struct _typeobject *tp_next;
#endif
};
diff --git a/scribus/plugins/scriptplugin/objprinter.cpp b/scribus/plugins/scriptplugin/objprinter.cpp
index 3219f77534..e59e71d024 100644
--- a/scribus/plugins/scriptplugin/objprinter.cpp
+++ b/scribus/plugins/scriptplugin/objprinter.cpp
@@ -517,10 +517,14 @@ PyTypeObject Printer_Type = {
/* Methods to implement standard operations */
(destructor) Printer_dealloc, // destructor tp_dealloc;
+#if PY_VERSION_HEX >= 0x03080000
+ 0, // Py_ssize_t tp_vectorcall_offset
+#else
nullptr, // printfunc tp_print;
+#endif
nullptr, // getattrfunc tp_getattr;
nullptr, // setattrfunc tp_setattr;
- nullptr, // cmpfunc tp_compare;
+ nullptr, // cmpfunc tp_as_async;
nullptr, // reprfunc tp_repr;
/* Method suites for standard classes */
@@ -586,12 +590,19 @@ PyTypeObject Printer_Type = {
nullptr, // destructor tp_del;
0, // unsigned int tp_version_tag;
0, // destructor tp_finalize;
+#if PY_VERSION_HEX >= 0x03080000
+ nullptr, // tp_vectorcall
+#endif
+#if PY_VERSION_HEX >= 0x03080000 && PY_VERSION_HEX < 0x03090000
+ nullptr, //deprecated tp_print
+#endif
#ifdef COUNT_ALLOCS
/* these must be last and never explicitly initialized */
// int tp_allocs;
// int tp_frees;
// int tp_maxalloc;
+ // struct _typeobject *tp_prev;
// struct _typeobject *tp_next;
#endif
};