Merge pull request #13762 from neheb/domo4

domoticz: fix compilation with python 3.9
This commit is contained in:
Rosen Penev 2020-11-19 17:05:55 -08:00 committed by GitHub
commit 9a6834549b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 737 additions and 282 deletions

View file

@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
PKG_NAME:=domoticz
PKG_VERSION:=2020.2
PKG_RELEASE:=2
PKG_RELEASE:=3
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://github.com/domoticz/domoticz/archive/$(PKG_VERSION)/$(PKG_SOURCE)
@ -25,7 +25,6 @@ PKG_USE_MIPS16:=0
CMAKE_INSTALL:=1
include $(INCLUDE_DIR)/package.mk
include $(INCLUDE_DIR)/nls.mk
include $(INCLUDE_DIR)/cmake.mk
define Package/domoticz
@ -42,6 +41,7 @@ define Package/domoticz
+boost-thread \
+jsoncpp \
+libcurl \
+python3 \
+minizip \
+lua5.3 \
+libmosquitto \
@ -73,8 +73,9 @@ CMAKE_OPTIONS += \
-DUSE_PYTHON=yes \
-DWITH_LIBUSB=no
TARGET_CFLAGS += -flto -DBOOST_BIND_GLOBAL_PLACEHOLDERS
TARGET_CFLAGS += -flto
TARGET_CXXFLAGS += -DWITH_GPIO -flto
TARGET_LDFLAGS += -lpython3.9
define Build/Prepare
$(call Build/Prepare/Default)

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,27 @@
--- a/hardware/plugins/DelayedLink.h
+++ b/hardware/plugins/DelayedLink.h
@@ -14,6 +14,16 @@
#include <frameobject.h>
#include "../../main/Helper.h"
+#ifndef _Py_DEC_REFTOTAL
+ /* _Py_DEC_REFTOTAL macro has been removed from Python 3.9 by:
+ https://github.com/python/cpython/commit/49932fec62c616ec88da52642339d83ae719e924 */
+# ifdef Py_REF_DEBUG
+# define _Py_DEC_REFTOTAL _Py_RefTotal--
+# else
+# define _Py_DEC_REFTOTAL
+# endif
+#endif
+
#if PY_VERSION_HEX >= 0x030800f0
static inline void
py3__Py_DECREF(const char *filename, int lineno, PyObject *op)
@@ -195,6 +205,7 @@ namespace Plugins {
if (!shared_lib_) shared_lib_ = LoadLibrary("python34.dll");
# endif
#else
+ if (!shared_lib_) FindLibrary("python3.9", true);
if (!shared_lib_) FindLibrary("python3.8", true);
if (!shared_lib_) FindLibrary("python3.7", true);
if (!shared_lib_) FindLibrary("python3.6", true);