forked from pool/scribus
7cae6045e8
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
186 lines
6.3 KiB
Diff
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
|
|
};
|