try to make FreeCAD compile with Python 3.9

patch from upstream cannot be applied directly as dos2unix runs
before patch.

PR:		251145
Submitted by:	 Oleg Sidorkin
This commit is contained in:
Christoph Moench-Tegeder 2020-12-13 22:24:13 +00:00
parent 327e491553
commit c13346731c
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=558063
3 changed files with 188 additions and 2 deletions

View File

@ -2,7 +2,7 @@
PORTNAME= FreeCAD
DISTVERSION= 0.18.5
PORTREVISION= 1
PORTREVISION= 2
# use these for bugfixes/snapshots
# DISTVERSION= 0.18-16093 # git rev-list --count
# DISTVERSIONSUFFIX= -g690774c0e

View File

@ -1,4 +1,4 @@
TIMESTAMP = 1606511424
TIMESTAMP = 1607894358
SHA256 (FreeCAD-FreeCAD-0.18.5_GH0.tar.gz) = 592c552237effc7a658730718a7f5a94b3819cd7a2f1476a9858c2752a98540a
SIZE (FreeCAD-FreeCAD-0.18.5_GH0.tar.gz) = 219762319
SHA256 (6eacb17b3e03d20.patch) = 3d2570c143825acd01b8eeb645fc450566e9ac20d6333de9e17cbc10fb5a13e0

View File

@ -0,0 +1,186 @@
dos2unix fixed variant of https://github.com/FreeCAD/FreeCAD/commit/ae641dc5278efaf.patch
From ae641dc5278efafa22b168fc196875558b92e436 Mon Sep 17 00:00:00 2001
From: wmayer <wmayer@users.sourceforge.net>
Date: Sun, 7 Jun 2020 12:53:47 +0200
Subject: [PATCH] Python: [skip ci] tp_print slot has been replaced with
tp_vectorcall_offset in Py3.8
---
src/Base/swigpyrun_1.3.25.h | 8 ++++++++
src/Base/swigpyrun_1.3.33.h | 8 ++++++++
src/Base/swigpyrun_1.3.36.h | 9 +++++++++
src/Base/swigpyrun_1.3.38.h | 8 ++++++++
src/Base/swigpyrun_1.3.40.h | 12 ++++++++++--
src/CXX/Python3/cxx_extensions.cxx | 6 ++++++
6 files changed, 49 insertions(+), 2 deletions(-)
diff --git a/src/Base/swigpyrun_1.3.25.h b/src/Base/swigpyrun_1.3.25.h
index 91717210b48..9ebadbc83a2 100644
--- a/src/Base/swigpyrun_1.3.25.h
+++ b/src/Base/swigpyrun_1.3.25.h
@@ -699,7 +699,11 @@ PySwigObject_type(void) {
0, /*tp_itemsize*/
/* methods */
(destructor)PySwigObject_dealloc, /*tp_dealloc*/
+#if PY_VERSION_HEX < 0x03080000
(printfunc)PySwigObject_print, /*tp_print*/
+#else
+ 0, /*tp_vectorcall_offset*/
+#endif
(getattrfunc)0, /*tp_getattr*/
(setattrfunc)0, /*tp_setattr*/
(cmpfunc)PySwigObject_compare, /*tp_compare*/
@@ -859,7 +863,11 @@ PySwigPacked_type(void) {
0, /*tp_itemsize*/
/* methods */
(destructor)PySwigPacked_dealloc, /*tp_dealloc*/
+#if PY_VERSION_HEX < 0x03080000
(printfunc)PySwigPacked_print, /*tp_print*/
+#else
+ 0, /*tp_vectorcall_offset*/
+#endif
(getattrfunc)0, /*tp_getattr*/
(setattrfunc)0, /*tp_setattr*/
(cmpfunc)PySwigPacked_compare, /*tp_compare*/
diff --git a/src/Base/swigpyrun_1.3.33.h b/src/Base/swigpyrun_1.3.33.h
index f83ac1e89c3..afd5a8c504f 100644
--- a/src/Base/swigpyrun_1.3.33.h
+++ b/src/Base/swigpyrun_1.3.33.h
@@ -1620,7 +1620,11 @@ _PySwigObject_type(void) {
sizeof(PySwigObject), /* tp_basicsize */
0, /* tp_itemsize */
(destructor)PySwigObject_dealloc, /* tp_dealloc */
+#if PY_VERSION_HEX < 0x03080000
(printfunc)PySwigObject_print, /* tp_print */
+#else
+ 0, /*tp_vectorcall_offset*/
+#endif
#if PY_VERSION_HEX < 0x02020000
(getattrfunc)PySwigObject_getattr, /* tp_getattr */
#else
@@ -1790,7 +1794,11 @@ _PySwigPacked_type(void) {
sizeof(PySwigPacked), /* tp_basicsize */
0, /* tp_itemsize */
(destructor)PySwigPacked_dealloc, /* tp_dealloc */
+#if PY_VERSION_HEX < 0x03080000
(printfunc)PySwigPacked_print, /* tp_print */
+#else
+ 0, /*tp_vectorcall_offset*/
+#endif
(getattrfunc)0, /* tp_getattr */
(setattrfunc)0, /* tp_setattr */
(cmpfunc)PySwigPacked_compare, /* tp_compare */
diff --git a/src/Base/swigpyrun_1.3.36.h b/src/Base/swigpyrun_1.3.36.h
index 02c58ad8ab9..12ad41e12a8 100644
--- a/src/Base/swigpyrun_1.3.36.h
+++ b/src/Base/swigpyrun_1.3.36.h
@@ -1628,7 +1628,12 @@ _PySwigObject_type(void) {
sizeof(PySwigObject), /* tp_basicsize */
0, /* tp_itemsize */
(destructor)PySwigObject_dealloc, /* tp_dealloc */
+#if PY_VERSION_HEX < 0x03080000
(printfunc)PySwigObject_print, /* tp_print */
+#else
+ 0, /*tp_vectorcall_offset*/
+#endif
+
#if PY_VERSION_HEX < 0x02020000
(getattrfunc)PySwigObject_getattr, /* tp_getattr */
#else
@@ -1798,7 +1803,11 @@ _PySwigPacked_type(void) {
sizeof(PySwigPacked), /* tp_basicsize */
0, /* tp_itemsize */
(destructor)PySwigPacked_dealloc, /* tp_dealloc */
+#if PY_VERSION_HEX < 0x03080000
(printfunc)PySwigPacked_print, /* tp_print */
+#else
+ 0, /*tp_vectorcall_offset*/
+#endif
(getattrfunc)0, /* tp_getattr */
(setattrfunc)0, /* tp_setattr */
(cmpfunc)PySwigPacked_compare, /* tp_compare */
diff --git a/src/Base/swigpyrun_1.3.38.h b/src/Base/swigpyrun_1.3.38.h
index dae058c202f..7cacc157970 100644
--- a/src/Base/swigpyrun_1.3.38.h
+++ b/src/Base/swigpyrun_1.3.38.h
@@ -1741,7 +1741,11 @@ _PySwigObject_type(void) {
sizeof(SwigPyObject), /* tp_basicsize */
0, /* tp_itemsize */
(destructor)SwigPyObject_dealloc, /* tp_dealloc */
+#if PY_VERSION_HEX < 0x03080000
(printfunc)SwigPyObject_print, /* tp_print */
+#else
+ 0, /*tp_vectorcall_offset*/
+#endif
#if PY_VERSION_HEX < 0x02020000
(getattrfunc)SwigPyObject_getattr, /* tp_getattr */
#else
@@ -1919,7 +1923,11 @@ _PySwigPacked_type(void) {
sizeof(SwigPyPacked), /* tp_basicsize */
0, /* tp_itemsize */
(destructor)SwigPyPacked_dealloc, /* tp_dealloc */
+#if PY_VERSION_HEX < 0x03080000
(printfunc)SwigPyPacked_print, /* tp_print */
+#else
+ 0, /*tp_vectorcall_offset*/
+#endif
(getattrfunc)0, /* tp_getattr */
(setattrfunc)0, /* tp_setattr */
(cmpfunc)SwigPyPacked_compare, /* tp_compare */
diff --git a/src/Base/swigpyrun_1.3.40.h b/src/Base/swigpyrun_1.3.40.h
index 136ba809fb7..400db8b4784 100644
--- a/src/Base/swigpyrun_1.3.40.h
+++ b/src/Base/swigpyrun_1.3.40.h
@@ -1766,7 +1766,11 @@ _PySwigObject_type(void) {
sizeof(SwigPyObject), /* tp_basicsize */
0, /* tp_itemsize */
(destructor)SwigPyObject_dealloc, /* tp_dealloc */
+#if PY_VERSION_HEX < 0x03080000
(printfunc)SwigPyObject_print, /* tp_print */
+#else
+ 0, /*tp_vectorcall_offset*/
+#endif
#if PY_VERSION_HEX < 0x02020000
(getattrfunc)SwigPyObject_getattr, /* tp_getattr */
#else
@@ -1947,8 +1951,12 @@ _PySwigPacked_type(void) {
(char *)"SwigPyPacked", /* tp_name */
sizeof(SwigPyPacked), /* tp_basicsize */
0, /* tp_itemsize */
- (destructor)SwigPyPacked_dealloc, /* tp_dealloc */
- (printfunc)SwigPyPacked_print, /* tp_print */
+ (destructor)SwigPyPacked_dealloc, /* tp_dealloc */
+#if PY_VERSION_HEX < 0x03080000
+ (printfunc)SwigPyPacked_print, /* tp_print */
+#else
+ 0, /*tp_vectorcall_offset*/
+#endif
(getattrfunc)0, /* tp_getattr */
(setattrfunc)0, /* tp_setattr */
#if PY_VERSION_HEX>=0x03000000
diff --git a/src/CXX/Python3/cxx_extensions.cxx b/src/CXX/Python3/cxx_extensions.cxx
index fb3da455f5b..9ff94612f07 100644
--- a/src/CXX/Python3/cxx_extensions.cxx
+++ b/src/CXX/Python3/cxx_extensions.cxx
@@ -381,7 +381,11 @@ PythonType::PythonType( size_t basic_size, int itemsize, const char *default_nam
// Methods to implement standard operations
table->tp_dealloc = (destructor)standard_dealloc;
+#if PY_VERSION_HEX < 0x03080000
table->tp_print = 0;
+#else
+ table->tp_vectorcall_offset = 0;
+#endif
table->tp_getattr = 0;
table->tp_setattr = 0;
table->tp_repr = 0;
@@ -524,7 +528,9 @@ PythonType &PythonType::supportClass()
#ifdef PYCXX_PYTHON_2TO3
PythonType &PythonType::supportPrint()
{
+#if PY_VERSION_HEX < 0x03080000
table->tp_print = print_handler;
+#endif
return *this;
}
#endif