domoticz: Fix compilation with newer Python
authorRosen Penev <rosenp@gmail.com>
Tue, 19 Nov 2019 00:23:53 +0000 (16:23 -0800)
committerRosen Penev <rosenp@gmail.com>
Tue, 19 Nov 2019 00:25:40 +0000 (16:25 -0800)
Backported upstream patch.

Fixes #10543

Signed-off-by: Rosen Penev <rosenp@gmail.com>
utils/domoticz/patches/010-python.patch [new file with mode: 0644]

diff --git a/utils/domoticz/patches/010-python.patch b/utils/domoticz/patches/010-python.patch
new file mode 100644 (file)
index 0000000..c46c923
--- /dev/null
@@ -0,0 +1,64 @@
+From e9bd383ceb63db7cfe8a284014f0cdf8c2bfe4f0 Mon Sep 17 00:00:00 2001
+From: Fabrice Fontaine <fontaine.fabrice@gmail.com>
+Date: Fri, 1 Nov 2019 10:54:11 +0100
+Subject: [PATCH] DelayedLink.h: fix build with python 3.8
+
+Fix build with python 3.8 by copy/pasting the vim workaround from
+https://github.com/vim/vim/commit/13a1f3fb0c9d08bba6109fe2131c9524e6ba7e15
+
+Fix 3703
+
+Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
+---
+ hardware/plugins/DelayedLink.h | 38 ++++++++++++++++++++++++++++++++++
+ 1 file changed, 38 insertions(+)
+
+diff --git a/hardware/plugins/DelayedLink.h b/hardware/plugins/DelayedLink.h
+index 4bf1973281..c90a7d8e69 100644
+--- a/hardware/plugins/DelayedLink.h
++++ b/hardware/plugins/DelayedLink.h
+@@ -14,6 +14,44 @@
+ #include <frameobject.h>
+ #include "../../main/Helper.h"
++#if PY_VERSION_HEX >= 0x030800f0
++static inline void
++py3__Py_DECREF(const char *filename, int lineno, PyObject *op)
++{
++      (void)filename; /* may be unused, shut up -Wunused-parameter */
++      (void)lineno; /* may be unused, shut up -Wunused-parameter */
++      _Py_DEC_REFTOTAL;
++      if (--op->ob_refcnt != 0)
++      {
++#ifdef Py_REF_DEBUG
++      if (op->ob_refcnt < 0)
++      {
++              _Py_NegativeRefcount(filename, lineno, op);
++      }
++#endif
++      }
++      else
++      {
++              _Py_Dealloc(op);
++      }
++}
++
++#undef Py_DECREF
++#define Py_DECREF(op) py3__Py_DECREF(__FILE__, __LINE__, _PyObject_CAST(op))
++
++static inline void
++py3__Py_XDECREF(PyObject *op)
++{
++      if (op != NULL)
++      {
++              Py_DECREF(op);
++      }
++}
++
++#undef Py_XDECREF
++#define Py_XDECREF(op) py3__Py_XDECREF(_PyObject_CAST(op))
++#endif
++
+ namespace Plugins {
+ #ifdef WIN32