From 9a56ca92ded3c0a59dd1fafe44bc27c6614360ab Mon Sep 17 00:00:00 2001 From: Rosen Penev Date: Sat, 24 Oct 2020 15:52:20 -0700 Subject: [PATCH] domoticz: fix compilation with python 3.9 Added Fedora patch to fix compilation. Added python3 dependency as it seems it's needed now. Replaced custom boost 1.73 patch with upstream one. Removed CFLAG that was supposed to fix this but didn't do anything. Removed nls.mk. telldus-core was fixed to not require iconv. Signed-off-by: Rosen Penev --- utils/domoticz/Makefile | 7 +- utils/domoticz/patches/010-boost-173.patch | 985 +++++++++++++++------ utils/domoticz/patches/020-python39.patch | 27 + 3 files changed, 737 insertions(+), 282 deletions(-) create mode 100644 utils/domoticz/patches/020-python39.patch diff --git a/utils/domoticz/Makefile b/utils/domoticz/Makefile index e7bc6e840..c32da50e0 100644 --- a/utils/domoticz/Makefile +++ b/utils/domoticz/Makefile @@ -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) diff --git a/utils/domoticz/patches/010-boost-173.patch b/utils/domoticz/patches/010-boost-173.patch index 85697c323..b1e0561360 100644 --- a/utils/domoticz/patches/010-boost-173.patch +++ b/utils/domoticz/patches/010-boost-173.patch @@ -1,413 +1,840 @@ +From bbcf7fd0646d74b7f169b3aa4231d9150028ed0d Mon Sep 17 00:00:00 2001 +From: Rob Peters +Date: Sun, 17 May 2020 11:46:37 +0200 +Subject: [PATCH] Avoid deprecated bind placeholders in global namespace + +--- + hardware/ASyncSerial.cpp | 2 +- + hardware/ASyncTCP.cpp | 4 +++- + hardware/Comm5Serial.cpp | 2 ++ + hardware/CurrentCostMeterSerial.cpp | 4 +++- + hardware/DavisLoggerSerial.cpp | 4 +++- + hardware/DenkoviUSBDevices.cpp | 2 ++ + hardware/EnOceanESP2.cpp | 4 +++- + hardware/EnOceanESP3.cpp | 4 +++- + hardware/EvohomeRadio.cpp | 3 +++ + hardware/EvohomeSerial.cpp | 2 ++ + hardware/KMTronic433.cpp | 4 +++- + hardware/KMTronicBase.cpp | 2 +- + hardware/KMTronicSerial.cpp | 4 +++- + hardware/MQTT.cpp | 2 ++ + hardware/Meteostick.cpp | 4 +++- + hardware/MySensorsBase.cpp | 2 +- + hardware/MySensorsSerial.cpp | 4 +++- + hardware/OTGWBase.cpp | 2 +- + hardware/OTGWSerial.cpp | 4 +++- + hardware/OpenWebNetUSB.cpp | 3 ++- + hardware/P1MeterSerial.cpp | 4 +++- + hardware/Pinger.cpp | 2 ++ + hardware/RAVEn.cpp | 2 ++ + hardware/RFLinkSerial.cpp | 2 ++ + hardware/RFXComSerial.cpp | 4 +++- + hardware/RFXComTCP.cpp | 2 -- + hardware/Rego6XXSerial.cpp | 4 +++- + hardware/S0MeterBase.cpp | 2 +- + hardware/S0MeterSerial.cpp | 4 +++- + hardware/TCPProxy/tcpproxy_server.cpp | 2 ++ + hardware/TeleinfoSerial.cpp | 4 +++- + hardware/USBtin.cpp | 4 +++- + hardware/XiaomiGateway.cpp | 2 +- + hardware/Yeelight.h | 1 - + hardware/ZiBlueSerial.cpp | 2 ++ + hardware/plugins/PluginTransports.cpp | 2 ++ + main/WebServer.cpp | 4 +++- + main/mainworker.cpp | 2 ++ + push/FibaroPush.cpp | 2 ++ + push/GooglePubSubPush.cpp | 2 ++ + push/HttpPush.cpp | 2 ++ + push/InfluxPush.cpp | 2 ++ + push/WebsocketPush.cpp | 2 ++ + tcpserver/TCPServer.cpp | 2 +- + webserver/cWebem.cpp | 2 +- + webserver/connection.cpp | 4 +++- + webserver/connection_manager.cpp | 4 +++- + webserver/proxyclient.cpp | 2 ++ + webserver/server.cpp | 4 +++- + 49 files changed, 107 insertions(+), 32 deletions(-) + +diff --git a/hardware/ASyncSerial.cpp b/hardware/ASyncSerial.cpp +index 2c9a5e27e9..36dd402fa7 100644 +--- a/hardware/ASyncSerial.cpp ++++ b/hardware/ASyncSerial.cpp +@@ -34,7 +34,7 @@ + #include + #include + #include +-#include ++#include + #include + #include + #include // for shared_array +diff --git a/hardware/ASyncTCP.cpp b/hardware/ASyncTCP.cpp +index 8990c24300..7f7b1e0f24 100644 +--- a/hardware/ASyncTCP.cpp ++++ b/hardware/ASyncTCP.cpp +@@ -1,10 +1,12 @@ + #include "stdafx.h" + #include "ASyncTCP.h" + #include +-#include ++#include + #include // for error_code + #include "../main/Logger.h" + ++//using namespace boost::placeholders; ++ + struct hostent; + + #ifndef WIN32 +diff --git a/hardware/Comm5Serial.cpp b/hardware/Comm5Serial.cpp +index 9b44496fb5..f1c1f706d2 100644 --- a/hardware/Comm5Serial.cpp +++ b/hardware/Comm5Serial.cpp @@ -5,6 +5,8 @@ #include "../main/Logger.h" #include "../main/RFXtrx.h" -+using namespace std::placeholders; ++using namespace boost::placeholders; + /* This driver allows Domoticz to control any I/O module from the MA-4xxx Family -@@ -92,7 +94,7 @@ bool Comm5Serial::StartHardware() - return false; - } - m_bIsStarted=true; -- setReadCallback(boost::bind(&Comm5Serial::readCallBack, this, _1, _2)); -+ setReadCallback(std::bind(&Comm5Serial::readCallBack, this, _1, _2)); +diff --git a/hardware/CurrentCostMeterSerial.cpp b/hardware/CurrentCostMeterSerial.cpp +index 05bac73d6a..bf9d35cab7 100644 +--- a/hardware/CurrentCostMeterSerial.cpp ++++ b/hardware/CurrentCostMeterSerial.cpp +@@ -10,10 +10,12 @@ + + #include + #include +-#include ++#include - sOnConnected(this); - return true; + #include + ++using namespace boost::placeholders; ++ + // + //Class CurrentCostMeterSerial + // +diff --git a/hardware/DavisLoggerSerial.cpp b/hardware/DavisLoggerSerial.cpp +index 9c44539beb..44c9dbde5c 100644 +--- a/hardware/DavisLoggerSerial.cpp ++++ b/hardware/DavisLoggerSerial.cpp +@@ -8,13 +8,15 @@ + #include + #include + #include +-#include ++#include + + #include "../main/localtime_r.h" + #include "../main/mainworker.h" + + #include + ++using namespace boost::placeholders; ++ + #ifdef _DEBUG + //#define DEBUG_DAVIS + #endif +diff --git a/hardware/DenkoviUSBDevices.cpp b/hardware/DenkoviUSBDevices.cpp +index a7977d82c8..53a27e5583 100644 --- a/hardware/DenkoviUSBDevices.cpp +++ b/hardware/DenkoviUSBDevices.cpp -@@ -16,6 +16,8 @@ enum _edaeUsbState +@@ -5,6 +5,8 @@ + #include "../main/localtime_r.h" + #include "../main/mainworker.h" + ++using namespace boost::placeholders; ++ + #define MAX_POLL_INTERVAL 3600*1000 #define DAE_IO_TYPE_RELAY 2 +diff --git a/hardware/EnOceanESP2.cpp b/hardware/EnOceanESP2.cpp +index f20ff9c0cb..fd08c55f63 100644 +--- a/hardware/EnOceanESP2.cpp ++++ b/hardware/EnOceanESP2.cpp +@@ -8,7 +8,7 @@ + #include + #include + #include +-#include ++#include + #include "hardwaretypes.h" + #include "../main/localtime_r.h" -+using namespace std::placeholders; +@@ -16,6 +16,8 @@ + #include + #include + ++using namespace boost::placeholders; + - CDenkoviUSBDevices::CDenkoviUSBDevices(const int ID, const std::string& comPort, const int model) : - m_szSerialPort(comPort) - { -@@ -78,7 +80,7 @@ bool CDenkoviUSBDevices::StartHardware() - m_thread = std::make_shared(&CDenkoviUSBDevices::Do_Work, this); - - m_bIsStarted = true; -- setReadCallback(boost::bind(&CDenkoviUSBDevices::readCallBack, this, _1, _2)); -+ setReadCallback(std::bind(&CDenkoviUSBDevices::readCallBack, this, _1, _2)); - - sOnConnected(this); - return true; ---- a/hardware/EvohomeRadio.cpp -+++ b/hardware/EvohomeRadio.cpp -@@ -26,6 +26,8 @@ + #define ENOCEAN_RETRY_DELAY 30 + + #define round(a) ( int ) ( a + .5 ) +diff --git a/hardware/EnOceanESP3.cpp b/hardware/EnOceanESP3.cpp +index 6866eeb0d0..2afa0e1e36 100644 +--- a/hardware/EnOceanESP3.cpp ++++ b/hardware/EnOceanESP3.cpp +@@ -8,7 +8,7 @@ + #include + #include + #include +-#include ++#include + #include "hardwaretypes.h" + #include "../main/localtime_r.h" - extern std::string szUserDataFolder; +@@ -16,6 +16,8 @@ + #include + #include -+using namespace std::placeholders; ++using namespace boost::placeholders; + - enum evoCommands - { - cmdSysInfo = 0x10e0, -@@ -86,27 +88,27 @@ CEvohomeRadio::CEvohomeRadio(const int ID, const std::string& UserContID) - s_strid >> std::hex >> m_UControllerID; - } - -- RegisterDecoder(cmdZoneTemp, boost::bind(&CEvohomeRadio::DecodeZoneTemp, this, _1)); -- RegisterDecoder(cmdSetPoint, boost::bind(&CEvohomeRadio::DecodeSetpoint, this, _1)); -- RegisterDecoder(cmdSetpointOverride, boost::bind(&CEvohomeRadio::DecodeSetpointOverride, this, _1)); -- RegisterDecoder(cmdDHWState, boost::bind(&CEvohomeRadio::DecodeDHWState, this, _1)); -- RegisterDecoder(cmdDHWTemp, boost::bind(&CEvohomeRadio::DecodeDHWTemp, this, _1)); -- RegisterDecoder(cmdControllerMode, boost::bind(&CEvohomeRadio::DecodeControllerMode, this, _1)); -- RegisterDecoder(cmdSysInfo, boost::bind(&CEvohomeRadio::DecodeSysInfo, this, _1)); -- RegisterDecoder(cmdZoneName, boost::bind(&CEvohomeRadio::DecodeZoneName, this, _1)); -- RegisterDecoder(cmdZoneHeatDemand, boost::bind(&CEvohomeRadio::DecodeHeatDemand, this, _1)); -- RegisterDecoder(cmdOpenThermBridge, boost::bind(&CEvohomeRadio::DecodeOpenThermBridge, this, _1)); -- RegisterDecoder(cmdOpenThermSetpoint, boost::bind(&CEvohomeRadio::DecodeOpenThermSetpoint, this, _1)); -- RegisterDecoder(cmdZoneInfo, boost::bind(&CEvohomeRadio::DecodeZoneInfo, this, _1)); -- RegisterDecoder(cmdControllerHeatDemand, boost::bind(&CEvohomeRadio::DecodeHeatDemand, this, _1)); -- RegisterDecoder(cmdBinding, boost::bind(&CEvohomeRadio::DecodeBinding, this, _1)); -- RegisterDecoder(cmdActuatorState, boost::bind(&CEvohomeRadio::DecodeActuatorState, this, _1)); -- RegisterDecoder(cmdActuatorCheck, boost::bind(&CEvohomeRadio::DecodeActuatorCheck, this, _1)); -- RegisterDecoder(cmdZoneWindow, boost::bind(&CEvohomeRadio::DecodeZoneWindow, this, _1)); -- RegisterDecoder(cmdExternalSensor, boost::bind(&CEvohomeRadio::DecodeExternalSensor, this, _1)); -- RegisterDecoder(cmdDeviceInfo, boost::bind(&CEvohomeRadio::DecodeDeviceInfo, this, _1)); -- RegisterDecoder(cmdBatteryInfo, boost::bind(&CEvohomeRadio::DecodeBatteryInfo, this, _1)); -- RegisterDecoder(cmdSync, boost::bind(&CEvohomeRadio::DecodeSync, this, _1)); -+ RegisterDecoder(cmdZoneTemp, std::bind(&CEvohomeRadio::DecodeZoneTemp, this, _1)); -+ RegisterDecoder(cmdSetPoint, std::bind(&CEvohomeRadio::DecodeSetpoint, this, _1)); -+ RegisterDecoder(cmdSetpointOverride, std::bind(&CEvohomeRadio::DecodeSetpointOverride, this, _1)); -+ RegisterDecoder(cmdDHWState, std::bind(&CEvohomeRadio::DecodeDHWState, this, _1)); -+ RegisterDecoder(cmdDHWTemp, std::bind(&CEvohomeRadio::DecodeDHWTemp, this, _1)); -+ RegisterDecoder(cmdControllerMode, std::bind(&CEvohomeRadio::DecodeControllerMode, this, _1)); -+ RegisterDecoder(cmdSysInfo, std::bind(&CEvohomeRadio::DecodeSysInfo, this, _1)); -+ RegisterDecoder(cmdZoneName, std::bind(&CEvohomeRadio::DecodeZoneName, this, _1)); -+ RegisterDecoder(cmdZoneHeatDemand, std::bind(&CEvohomeRadio::DecodeHeatDemand, this, _1)); -+ RegisterDecoder(cmdOpenThermBridge, std::bind(&CEvohomeRadio::DecodeOpenThermBridge, this, _1)); -+ RegisterDecoder(cmdOpenThermSetpoint, std::bind(&CEvohomeRadio::DecodeOpenThermSetpoint, this, _1)); -+ RegisterDecoder(cmdZoneInfo, std::bind(&CEvohomeRadio::DecodeZoneInfo, this, _1)); -+ RegisterDecoder(cmdControllerHeatDemand, std::bind(&CEvohomeRadio::DecodeHeatDemand, this, _1)); -+ RegisterDecoder(cmdBinding, std::bind(&CEvohomeRadio::DecodeBinding, this, _1)); -+ RegisterDecoder(cmdActuatorState, std::bind(&CEvohomeRadio::DecodeActuatorState, this, _1)); -+ RegisterDecoder(cmdActuatorCheck, std::bind(&CEvohomeRadio::DecodeActuatorCheck, this, _1)); -+ RegisterDecoder(cmdZoneWindow, std::bind(&CEvohomeRadio::DecodeZoneWindow, this, _1)); -+ RegisterDecoder(cmdExternalSensor, std::bind(&CEvohomeRadio::DecodeExternalSensor, this, _1)); -+ RegisterDecoder(cmdDeviceInfo, std::bind(&CEvohomeRadio::DecodeDeviceInfo, this, _1)); -+ RegisterDecoder(cmdBatteryInfo, std::bind(&CEvohomeRadio::DecodeBatteryInfo, this, _1)); -+ RegisterDecoder(cmdSync, std::bind(&CEvohomeRadio::DecodeSync, this, _1)); - } + #if _DEBUG + #define ENOCEAN_BUTTON_DEBUG + #endif +diff --git a/hardware/EvohomeRadio.cpp b/hardware/EvohomeRadio.cpp +index 4da983538b..6ba97158cd 100644 +--- a/hardware/EvohomeRadio.cpp ++++ b/hardware/EvohomeRadio.cpp +@@ -23,6 +23,9 @@ + #include "../main/WebServer.h" + #include "../webserver/cWebem.h" + #include ++#include ++ ++using namespace boost::placeholders; + extern std::string szUserDataFolder; +diff --git a/hardware/EvohomeSerial.cpp b/hardware/EvohomeSerial.cpp +index 4a54988291..c74cf576cc 100644 --- a/hardware/EvohomeSerial.cpp +++ b/hardware/EvohomeSerial.cpp @@ -7,6 +7,8 @@ #include "../main/localtime_r.h" #include -+using namespace std::placeholders; ++using namespace boost::placeholders; + CEvohomeSerial::CEvohomeSerial(const int ID, const std::string &szSerialPort, const int baudrate, const std::string &UserContID) : CEvohomeRadio(ID, UserContID) { -@@ -64,7 +66,7 @@ bool CEvohomeSerial::OpenSerialDevice() - } - m_nBufPtr=0; - m_bIsStarted=true; -- setReadCallback(boost::bind(&CEvohomeSerial::ReadCallback, this, _1, _2)); -+ setReadCallback(std::bind(&CEvohomeSerial::ReadCallback, this, _1, _2)); - sOnConnected(this); - return true; - } +diff --git a/hardware/KMTronic433.cpp b/hardware/KMTronic433.cpp +index da81b20f9f..f9832a5a74 100644 +--- a/hardware/KMTronic433.cpp ++++ b/hardware/KMTronic433.cpp +@@ -9,11 +9,13 @@ + #include + #include + #include +-#include ++#include + #include + + #include + ++using namespace boost::placeholders; ++ + //#define DEBUG_KMTronic + + #define RETRY_DELAY 30 +diff --git a/hardware/KMTronicBase.cpp b/hardware/KMTronicBase.cpp +index b343108966..d9c45872b5 100644 +--- a/hardware/KMTronicBase.cpp ++++ b/hardware/KMTronicBase.cpp +@@ -10,7 +10,7 @@ + #include + #include + #include +-#include ++#include + + #include + +diff --git a/hardware/KMTronicSerial.cpp b/hardware/KMTronicSerial.cpp +index 4e07f2c37a..6240f941bd 100644 +--- a/hardware/KMTronicSerial.cpp ++++ b/hardware/KMTronicSerial.cpp +@@ -10,12 +10,14 @@ + #include + #include + #include +-#include ++#include + #include + #include + + //#define DEBUG_KMTronic + ++using namespace boost::placeholders; ++ + #define RETRY_DELAY 30 + + KMTronicSerial::KMTronicSerial(const int ID, const std::string& devname) +diff --git a/hardware/MQTT.cpp b/hardware/MQTT.cpp +index 8de3671853..19750bb75b 100644 --- a/hardware/MQTT.cpp +++ b/hardware/MQTT.cpp -@@ -18,6 +18,8 @@ - #define TOPIC_IN "domoticz/in" - #define QOS 1 +@@ -11,6 +11,8 @@ + #define __STDC_FORMAT_MACROS + #include + ++using namespace boost::placeholders; ++ + #define RETRY_DELAY 30 + + #define CLIENTID "Domoticz" +diff --git a/hardware/Meteostick.cpp b/hardware/Meteostick.cpp +index 9793f4b57b..10da69d6e3 100644 +--- a/hardware/Meteostick.cpp ++++ b/hardware/Meteostick.cpp +@@ -9,12 +9,14 @@ + #include + #include + #include +-#include ++#include + #include "../main/localtime_r.h" + #include "../main/mainworker.h" + + #include -+using namespace std::placeholders; ++using namespace boost::placeholders; + - const char* szTLSVersions[3] = + #define RETRY_DELAY 30 + + #define round(a) ( int ) ( a + .5 ) +diff --git a/hardware/MySensorsBase.cpp b/hardware/MySensorsBase.cpp +index af976fba95..42bf58fad5 100644 +--- a/hardware/MySensorsBase.cpp ++++ b/hardware/MySensorsBase.cpp +@@ -13,7 +13,7 @@ + #include + #include + #include +-#include ++#include + #include "../webserver/cWebem.h" + #include + +diff --git a/hardware/MySensorsSerial.cpp b/hardware/MySensorsSerial.cpp +index 44f8692d2b..42f3e05409 100644 +--- a/hardware/MySensorsSerial.cpp ++++ b/hardware/MySensorsSerial.cpp +@@ -8,12 +8,14 @@ + #include "hardwaretypes.h" + + #include +-#include ++#include + #include + #include + #include + #include + ++using namespace boost::placeholders; ++ + //#define DEBUG_MYSENSORS + + #define RETRY_DELAY 30 +diff --git a/hardware/OTGWBase.cpp b/hardware/OTGWBase.cpp +index 322574458b..ded3a31c2c 100644 +--- a/hardware/OTGWBase.cpp ++++ b/hardware/OTGWBase.cpp +@@ -12,7 +12,7 @@ + #include + #include + #include +-#include ++#include + #include + + #include +diff --git a/hardware/OTGWSerial.cpp b/hardware/OTGWSerial.cpp +index 4ade70e063..5a3416548f 100644 +--- a/hardware/OTGWSerial.cpp ++++ b/hardware/OTGWSerial.cpp +@@ -8,12 +8,14 @@ + #include "../main/localtime_r.h" + + #include +-#include ++#include + #include + #include + #include + #include + ++using namespace boost::placeholders; ++ + #define RETRY_DELAY 30 + #define OTGW_READ_INTERVAL 10 + +diff --git a/hardware/OpenWebNetUSB.cpp b/hardware/OpenWebNetUSB.cpp +index bf23049844..352a2220e9 100644 +--- a/hardware/OpenWebNetUSB.cpp ++++ b/hardware/OpenWebNetUSB.cpp +@@ -19,11 +19,12 @@ License: Public domain + + #include + #include +-#include ++#include + #include + #include + #include + ++using namespace boost::placeholders; + + COpenWebNetUSB::COpenWebNetUSB(const int ID, const std::string& devname, unsigned int baud_rate) { - "tlsv1", -@@ -133,8 +135,8 @@ void MQTT::on_connect(int rc) - _log.Log(LOG_STATUS, "MQTT: connected to: %s:%d", m_szIPAddress.c_str(), m_usIPPort); - m_IsConnected = true; - sOnConnected(this); -- m_sDeviceReceivedConnection = m_mainworker.sOnDeviceReceived.connect(boost::bind(&MQTT::SendDeviceInfo, this, _1, _2, _3, _4)); -- m_sSwitchSceneConnection = m_mainworker.sOnSwitchScene.connect(boost::bind(&MQTT::SendSceneInfo, this, _1, _2)); -+ m_sDeviceReceivedConnection = m_mainworker.sOnDeviceReceived.connect(std::bind(&MQTT::SendDeviceInfo, this, _1, _2, _3, _4)); -+ m_sSwitchSceneConnection = m_mainworker.sOnSwitchScene.connect(std::bind(&MQTT::SendSceneInfo, this, _1, _2)); - } - subscribe(NULL, m_TopicIn.c_str()); - } +diff --git a/hardware/P1MeterSerial.cpp b/hardware/P1MeterSerial.cpp +index 566b451fa5..7dc3e0782e 100644 +--- a/hardware/P1MeterSerial.cpp ++++ b/hardware/P1MeterSerial.cpp +@@ -14,10 +14,12 @@ + #include + #include + #include +-#include ++#include + + #include + ++using namespace boost::placeholders; ++ + #ifdef _DEBUG + //#define DEBUG_P1_R + #endif +diff --git a/hardware/Pinger.cpp b/hardware/Pinger.cpp +index d3e2fda942..b6dc78a786 100644 --- a/hardware/Pinger.cpp +++ b/hardware/Pinger.cpp -@@ -25,6 +25,8 @@ - #define GET_IO_SERVICE(s) ((s).get_io_service()) - #endif +@@ -19,6 +19,8 @@ + + #include -+using namespace std::placeholders; ++using namespace boost::placeholders; + - class pinger - : private domoticz::noncopyable - { -@@ -87,7 +89,7 @@ private: - } - else - { -- timer_.async_wait(boost::bind(&pinger::start_send, this)); -+ timer_.async_wait(std::bind(&pinger::start_send, this)); - } - } - } -@@ -100,7 +102,7 @@ private: - - // Wait for a reply. We prepare the buffer to receive up to 64KB. - socket_.async_receive(reply_buffer_.prepare(65536), -- boost::bind(&pinger::handle_receive, this, _2)); -+ std::bind(&pinger::handle_receive, this, _2)); - } - - void handle_receive(std::size_t length) -@@ -384,7 +386,7 @@ void CPinger::DoPingHosts() - if (m_iThreadsRunning < 1000) - { - //m_iThreadsRunning++; -- boost::thread t(boost::bind(&CPinger::Do_Ping_Worker, this, *itt)); -+ boost::thread t(std::bind(&CPinger::Do_Ping_Worker, this, *itt)); - SetThreadName(t.native_handle(), "PingerWorker"); - t.join(); - } + #if BOOST_VERSION >= 107000 + #define GET_IO_SERVICE(s) ((boost::asio::io_context&)(s).get_executor().context()) + #else +diff --git a/hardware/RAVEn.cpp b/hardware/RAVEn.cpp +index d9efc7480a..b6a4399d04 100644 --- a/hardware/RAVEn.cpp +++ b/hardware/RAVEn.cpp -@@ -11,6 +11,8 @@ - //Rainforest RAVEn USB ZigBee Smart Meter Adapter - //https://rainforestautomation.com/rfa-z106-raven/ +@@ -8,6 +8,8 @@ + #include "../tinyxpath/tinyxml.h" + #include "hardwaretypes.h" -+using namespace std::placeholders; ++using namespace boost::placeholders; + - RAVEn::RAVEn(const int ID, const std::string& devname) - : device_(devname), m_wptr(m_buffer), m_currUsage(0), m_totalUsage(0) - { -@@ -46,7 +48,7 @@ bool RAVEn::StartHardware() - _log.Log(LOG_ERROR, "RAVEn: Error opening serial port!!!"); - return false; - } -- setReadCallback(boost::bind(&RAVEn::readCallback, this, _1, _2)); -+ setReadCallback(std::bind(&RAVEn::readCallback, this, _1, _2)); - m_bIsStarted = true; - sOnConnected(this); + //Rainforest RAVEn USB ZigBee Smart Meter Adapter + //https://rainforestautomation.com/rfa-z106-raven/ +diff --git a/hardware/RFLinkSerial.cpp b/hardware/RFLinkSerial.cpp +index c5cae0f739..4ab07ed88e 100644 --- a/hardware/RFLinkSerial.cpp +++ b/hardware/RFLinkSerial.cpp @@ -5,6 +5,8 @@ #include "../main/localtime_r.h" #include -+using namespace std::placeholders; ++using namespace boost::placeholders; + CRFLinkSerial::CRFLinkSerial(const int ID, const std::string& devname) : m_szSerialPort(devname) { -@@ -181,7 +183,7 @@ bool CRFLinkSerial::OpenSerialDevice() - m_rfbufferpos = 0; - m_LastReceivedTime = mytime(NULL); +diff --git a/hardware/RFXComSerial.cpp b/hardware/RFXComSerial.cpp +index dc85f4832d..4c39520510 100644 +--- a/hardware/RFXComSerial.cpp ++++ b/hardware/RFXComSerial.cpp +@@ -12,7 +12,7 @@ + #include + #include + #include +-#include ++#include + + #include + +@@ -23,6 +23,8 @@ + #include + #endif -- setReadCallback(boost::bind(&CRFLinkSerial::readCallback, this, _1, _2)); -+ setReadCallback(std::bind(&CRFLinkSerial::readCallback, this, _1, _2)); - sOnConnected(this); ++using namespace boost::placeholders; ++ + #define RETRY_DELAY 30 + + #define RFX_WRITE_DELAY 300 +diff --git a/hardware/RFXComTCP.cpp b/hardware/RFXComTCP.cpp +index 7c6b3954b8..0e4856fbfb 100644 +--- a/hardware/RFXComTCP.cpp ++++ b/hardware/RFXComTCP.cpp +@@ -1,8 +1,6 @@ + #include "stdafx.h" + #include "RFXComTCP.h" + #include "../main/Logger.h" +-//#include +-//#include + #include "../main/Helper.h" + #include "../main/localtime_r.h" + #include "../main/mainworker.h" +diff --git a/hardware/Rego6XXSerial.cpp b/hardware/Rego6XXSerial.cpp +index b94bd291bc..15d22f869a 100644 +--- a/hardware/Rego6XXSerial.cpp ++++ b/hardware/Rego6XXSerial.cpp +@@ -16,11 +16,13 @@ + #include + #include + #include +-#include ++#include + #include "hardwaretypes.h" + + #include + ++using namespace boost::placeholders; ++ + #define Rego6XX_RETRY_DELAY 30 + #define Rego6XX_COMMAND_DELAY 5 + #define Rego6XX_READ_BUFFER_MASK (Rego6XX_READ_BUFFER_SIZE - 1) +diff --git a/hardware/S0MeterBase.cpp b/hardware/S0MeterBase.cpp +index 9cffa67022..75a06e2cc1 100644 +--- a/hardware/S0MeterBase.cpp ++++ b/hardware/S0MeterBase.cpp +@@ -13,7 +13,7 @@ + #include + #include + #include +-#include ++#include + + #include + +diff --git a/hardware/S0MeterSerial.cpp b/hardware/S0MeterSerial.cpp +index 1dc16b2b3e..f474d1c766 100644 +--- a/hardware/S0MeterSerial.cpp ++++ b/hardware/S0MeterSerial.cpp +@@ -8,11 +8,13 @@ + + #include + #include +-#include ++#include + #include + #include + #include - return true; ++using namespace boost::placeholders; ++ + #ifdef _DEBUG + //#define DEBUG_S0 + #define TOT_DEBUG_LINES 6 +diff --git a/hardware/TCPProxy/tcpproxy_server.cpp b/hardware/TCPProxy/tcpproxy_server.cpp +index 60445d9c28..82ba3559d9 100644 --- a/hardware/TCPProxy/tcpproxy_server.cpp +++ b/hardware/TCPProxy/tcpproxy_server.cpp -@@ -21,6 +21,8 @@ - #define GET_IO_SERVICE(s) ((s).get_io_service()) - #endif +@@ -15,6 +15,8 @@ + #include "stdafx.h" + #include "tcpproxy_server.h" -+using namespace std::placeholders; ++using namespace boost::placeholders; + - namespace tcp_proxy - { - bridge::bridge(boost::asio::io_service& ios) -@@ -186,8 +188,8 @@ namespace tcp_proxy - session_ = std::shared_ptr( - new bridge(io_service_) - ); -- session_->sDownstreamData.connect( boost::bind( &acceptor::OnDownstreamData, this, _1, _2 ) ); -- session_->sUpstreamData.connect( boost::bind( &acceptor::OnUpstreamData, this, _1, _2 ) ); -+ session_->sDownstreamData.connect( std::bind( &acceptor::OnDownstreamData, this, _1, _2 ) ); -+ session_->sUpstreamData.connect( std::bind( &acceptor::OnUpstreamData, this, _1, _2 ) ); - - acceptor_.async_accept(session_->downstream_socket(), - boost::bind(&acceptor::handle_accept, ---- a/hardware/ZiBlueSerial.cpp -+++ b/hardware/ZiBlueSerial.cpp -@@ -8,6 +8,8 @@ + #if BOOST_VERSION >= 107000 + #define GET_IO_SERVICE(s) ((boost::asio::io_context&)(s).get_executor().context()) + #else +diff --git a/hardware/TeleinfoSerial.cpp b/hardware/TeleinfoSerial.cpp +index 85f9a6240f..fa794802e9 100644 +--- a/hardware/TeleinfoSerial.cpp ++++ b/hardware/TeleinfoSerial.cpp +@@ -28,9 +28,11 @@ History : + #include "../main/localtime_r.h" + #include "../main/Logger.h" - #define ZiBlue_RETRY_DELAY 30 +-#include ++#include + #include -+using namespace std::placeholders; ++using namespace boost::placeholders; + - CZiBlueSerial::CZiBlueSerial(const int ID, const std::string& devname) : - m_szSerialPort(devname) + CTeleinfoSerial::CTeleinfoSerial(const int ID, const std::string& devname, const int datatimeout, unsigned int baud_rate, const bool disable_crc, const int ratelimit) { -@@ -136,7 +138,7 @@ bool CZiBlueSerial::OpenSerialDevice() - m_rfbufferpos = 0; - m_LastReceivedTime = mytime(NULL); + m_HwdID = ID; +diff --git a/hardware/USBtin.cpp b/hardware/USBtin.cpp +index c3e3656319..ce6f542df3 100644 +--- a/hardware/USBtin.cpp ++++ b/hardware/USBtin.cpp +@@ -27,7 +27,7 @@ History : + #include "../main/SQLHelper.h" + + #include +-#include ++#include + #include + #include + #include +@@ -35,6 +35,8 @@ History : + #include + #include -- setReadCallback(boost::bind(&CZiBlueSerial::readCallback, this, _1, _2)); -+ setReadCallback(std::bind(&CZiBlueSerial::readCallback, this, _1, _2)); ++using namespace boost::placeholders; ++ + #define USBTIN_BAUD_RATE 115200 + #define USBTIN_PARITY boost::asio::serial_port_base::parity::none + #define USBTIN_CARACTER_SIZE 8 +diff --git a/hardware/XiaomiGateway.cpp b/hardware/XiaomiGateway.cpp +index f4567ec62f..e4998faa6a 100644 +--- a/hardware/XiaomiGateway.cpp ++++ b/hardware/XiaomiGateway.cpp +@@ -12,7 +12,7 @@ + #include "XiaomiHardware.h" + #include + #include +-#include ++#include + + #ifndef WIN32 + #include +diff --git a/hardware/Yeelight.h b/hardware/Yeelight.h +index b063f79743..64fd6f5479 100644 +--- a/hardware/Yeelight.h ++++ b/hardware/Yeelight.h +@@ -2,7 +2,6 @@ + + #include "DomoticzHardware.h" + #include +-#include + + class Yeelight : public CDomoticzHardwareBase + { +diff --git a/hardware/ZiBlueSerial.cpp b/hardware/ZiBlueSerial.cpp +index 9e9db2aff1..8e896897fc 100644 +--- a/hardware/ZiBlueSerial.cpp ++++ b/hardware/ZiBlueSerial.cpp +@@ -6,6 +6,8 @@ - sOnConnected(this); + #include ++using namespace boost::placeholders; ++ + #define ZiBlue_RETRY_DELAY 30 + + CZiBlueSerial::CZiBlueSerial(const int ID, const std::string& devname) : +diff --git a/hardware/plugins/PluginTransports.cpp b/hardware/plugins/PluginTransports.cpp +index c7e065529f..7fc1cb953e 100644 --- a/hardware/plugins/PluginTransports.cpp +++ b/hardware/plugins/PluginTransports.cpp @@ -13,6 +13,8 @@ #include "icmp_header.hpp" #include "ipv4_header.hpp" -+using namespace std::placeholders; ++using namespace boost::placeholders; + namespace Plugins { void CPluginTransport::handleRead(const boost::system::error_code& e, std::size_t bytes_transferred) -@@ -972,7 +974,7 @@ namespace Plugins { - if (m_bConnected) - { - pPlugin->MessagePlugin(new onConnectCallback(pPlugin, m_pConnection, 0, "SerialPort " + m_Port + " opened successfully.")); -- setReadCallback(boost::bind(&CPluginTransportSerial::handleRead, this, _1, _2)); -+ setReadCallback(std::bind(&CPluginTransportSerial::handleRead, this, _1, _2)); - } - else - { +diff --git a/main/WebServer.cpp b/main/WebServer.cpp +index 0a19319669..ed92f06e32 100644 +--- a/main/WebServer.cpp ++++ b/main/WebServer.cpp +@@ -1,7 +1,7 @@ + #include "stdafx.h" + #include "WebServer.h" + #include "WebServerHelper.h" +-#include ++#include + #include + #include + #include "mainworker.h" +@@ -65,6 +65,8 @@ + #define __STDC_FORMAT_MACROS + #include + ++using namespace boost::placeholders; ++ + #define round(a) ( int ) ( a + .5 ) + + extern std::string szStartupFolder; +diff --git a/main/mainworker.cpp b/main/mainworker.cpp +index 505f59f49d..5fb2ee9042 100644 +--- a/main/mainworker.cpp ++++ b/main/mainworker.cpp +@@ -174,6 +174,8 @@ + #include + #endif + ++using namespace boost::placeholders; ++ + #define round(a) ( int ) ( a + .5 ) + + extern std::string szStartupFolder; +diff --git a/push/FibaroPush.cpp b/push/FibaroPush.cpp +index 0bc54e6cfd..350a8fa893 100644 --- a/push/FibaroPush.cpp +++ b/push/FibaroPush.cpp @@ -14,6 +14,8 @@ #define __STDC_FORMAT_MACROS #include -+using namespace std::placeholders; ++using namespace boost::placeholders; + CFibaroPush::CFibaroPush() { - m_bLinkActive = false; -@@ -22,7 +24,7 @@ CFibaroPush::CFibaroPush() - void CFibaroPush::Start() - { - UpdateActive(); -- m_sConnection = m_mainworker.sOnDeviceReceived.connect(boost::bind(&CFibaroPush::OnDeviceReceived, this, _1, _2, _3, _4)); -+ m_sConnection = m_mainworker.sOnDeviceReceived.connect(std::bind(&CFibaroPush::OnDeviceReceived, this, _1, _2, _3, _4)); - } - - void CFibaroPush::Stop() -@@ -400,4 +402,4 @@ namespace http { - root["title"] = "DeleteFibaroLink"; - } - } --} -\ No newline at end of file -+} + m_PushType = PushType::PUSHTYPE_FIBARO; +diff --git a/push/GooglePubSubPush.cpp b/push/GooglePubSubPush.cpp +index 6d0fc82d40..a5b720f219 100644 --- a/push/GooglePubSubPush.cpp +++ b/push/GooglePubSubPush.cpp @@ -21,6 +21,8 @@ extern "C" { #include #endif -+using namespace std::placeholders; ++using namespace boost::placeholders; + extern std::string szUserDataFolder; // this should be filled in by the preprocessor -@@ -38,7 +40,7 @@ CGooglePubSubPush::CGooglePubSubPush() - void CGooglePubSubPush::Start() - { - UpdateActive(); -- m_sConnection = m_mainworker.sOnDeviceReceived.connect(boost::bind(&CGooglePubSubPush::OnDeviceReceived, this, _1, _2, _3, _4)); -+ m_sConnection = m_mainworker.sOnDeviceReceived.connect(std::bind(&CGooglePubSubPush::OnDeviceReceived, this, _1, _2, _3, _4)); - } - - void CGooglePubSubPush::Stop() +diff --git a/push/HttpPush.cpp b/push/HttpPush.cpp +index 8132ca2b43..3d1d51d52e 100644 --- a/push/HttpPush.cpp +++ b/push/HttpPush.cpp @@ -15,6 +15,8 @@ #define __STDC_FORMAT_MACROS #include -+using namespace std::placeholders; ++using namespace boost::placeholders; + CHttpPush::CHttpPush() { - m_bLinkActive = false; -@@ -23,7 +25,7 @@ CHttpPush::CHttpPush() - void CHttpPush::Start() - { - UpdateActive(); -- m_sConnection = m_mainworker.sOnDeviceReceived.connect(boost::bind(&CHttpPush::OnDeviceReceived, this, _1, _2, _3, _4)); -+ m_sConnection = m_mainworker.sOnDeviceReceived.connect(std::bind(&CHttpPush::OnDeviceReceived, this, _1, _2, _3, _4)); - } - - void CHttpPush::Stop() + m_PushType = PushType::PUSHTYPE_HTTP; +diff --git a/push/InfluxPush.cpp b/push/InfluxPush.cpp +index 0a8e99414f..745fdf0496 100644 --- a/push/InfluxPush.cpp +++ b/push/InfluxPush.cpp @@ -15,6 +15,8 @@ #define __STDC_FORMAT_MACROS #include -+using namespace std::placeholders; ++using namespace boost::placeholders; + CInfluxPush::CInfluxPush() : m_InfluxPort(8086), m_bInfluxDebugActive(false) -@@ -33,7 +35,7 @@ bool CInfluxPush::Start() - m_thread = std::make_shared(&CInfluxPush::Do_Work, this); - SetThreadName(m_thread->native_handle(), "InfluxPush"); - -- m_sConnection = m_mainworker.sOnDeviceReceived.connect(boost::bind(&CInfluxPush::OnDeviceReceived, this, _1, _2, _3, _4)); -+ m_sConnection = m_mainworker.sOnDeviceReceived.connect(std::bind(&CInfluxPush::OnDeviceReceived, this, _1, _2, _3, _4)); - - return (m_thread != NULL); - } +diff --git a/push/WebsocketPush.cpp b/push/WebsocketPush.cpp +index 0fb71f96ec..3c2ce7ed54 100644 --- a/push/WebsocketPush.cpp +++ b/push/WebsocketPush.cpp @@ -3,6 +3,8 @@ #include "../webserver/WebsocketHandler.h" #include "../main/mainworker.h" -+using namespace std::placeholders; ++using namespace boost::placeholders; + extern boost::signals2::signal sOnNotificationReceived; -@@ -19,9 +21,9 @@ void CWebSocketPush::Start() - if (isStarted) { - return; - } -- m_sConnection = m_mainworker.sOnDeviceReceived.connect(boost::bind(&CWebSocketPush::OnDeviceReceived, this, _1, _2, _3, _4)); -- m_sNotification = sOnNotificationReceived.connect(boost::bind(&CWebSocketPush::OnNotificationReceived, this, _1, _2, _3, _4, _5, _6)); -- m_sSceneChanged = m_mainworker.sOnSwitchScene.connect(boost::bind(&CWebSocketPush::OnSceneChange, this, _1, _2)); -+ m_sConnection = m_mainworker.sOnDeviceReceived.connect(std::bind(&CWebSocketPush::OnDeviceReceived, this, _1, _2, _3, _4)); -+ m_sNotification = sOnNotificationReceived.connect(std::bind(&CWebSocketPush::OnNotificationReceived, this, _1, _2, _3, _4, _5, _6)); -+ m_sSceneChanged = m_mainworker.sOnSwitchScene.connect(std::bind(&CWebSocketPush::OnSceneChange, this, _1, _2)); - isStarted = true; - } +diff --git a/tcpserver/TCPServer.cpp b/tcpserver/TCPServer.cpp +index d3b0a94847..3b8d0b9b76 100644 +--- a/tcpserver/TCPServer.cpp ++++ b/tcpserver/TCPServer.cpp +@@ -11,7 +11,7 @@ + #include "../main/localtime_r.h" + #include + #include +-#include ++#include + + namespace tcp { + namespace server { +diff --git a/webserver/cWebem.cpp b/webserver/cWebem.cpp +index f015be097f..63c96f789f 100644 +--- a/webserver/cWebem.cpp ++++ b/webserver/cWebem.cpp +@@ -5,7 +5,7 @@ + //Modified, extended etc by Robbert E. Peters/RTSS B.V. + #include "stdafx.h" + #include "cWebem.h" +-#include ++#include + #include "reply.hpp" + #include "request.hpp" + #include "mime_types.hpp" +diff --git a/webserver/connection.cpp b/webserver/connection.cpp +index d3485fe923..afe700e5d7 100644 +--- a/webserver/connection.cpp ++++ b/webserver/connection.cpp +@@ -9,7 +9,7 @@ + // + #include "stdafx.h" + #include "connection.hpp" +-#include ++#include + #include + #include "connection_manager.hpp" + #include "request_handler.hpp" +@@ -17,6 +17,8 @@ + #include "../main/localtime_r.h" + #include "../main/Logger.h" + ++using namespace boost::placeholders; ++ + namespace http { + namespace server { + extern std::string convert_to_http_date(time_t time); +diff --git a/webserver/connection_manager.cpp b/webserver/connection_manager.cpp +index b6c20de53f..bf1d9882d0 100644 +--- a/webserver/connection_manager.cpp ++++ b/webserver/connection_manager.cpp +@@ -10,10 +10,12 @@ + #include "stdafx.h" + #include "connection_manager.hpp" + #include +-#include ++#include + #include + #include "../main/Logger.h" + ++using namespace boost::placeholders; ++ + namespace http { + namespace server { +diff --git a/webserver/proxyclient.cpp b/webserver/proxyclient.cpp +index c2bcd3178f..423ee0fb4b 100644 --- a/webserver/proxyclient.cpp +++ b/webserver/proxyclient.cpp -@@ -19,6 +19,8 @@ - - extern std::string szAppVersion; +@@ -8,6 +8,8 @@ + #include "../tcpserver/TCPServer.h" + #include "sha1.hpp" -+using namespace std::placeholders; ++using namespace boost::placeholders; + - #define PROXY_TIMEOUT 60 - #define PONG "PONG" + // RK: some defines to make mydomoticz also work when openssl not compiled in + #ifdef WWW_ENABLE_SSL + #define PROXY_PORT 443 +diff --git a/webserver/server.cpp b/webserver/server.cpp +index 1eb2137ef2..6025b1cdb5 100644 +--- a/webserver/server.cpp ++++ b/webserver/server.cpp +@@ -3,7 +3,7 @@ + // ~~~~~~~~~~ + // + #include "stdafx.h" +-#include ++#include + #include "server.hpp" + #include + #include "../main/Logger.h" +@@ -11,6 +11,8 @@ + #include "../main/localtime_r.h" + #include "../main/mainworker.h" -@@ -349,7 +351,7 @@ namespace http { - // todo: make a map of websocket connections. There can be more than one. - // open new virtual websocket connection - // todo: different request_url's can have different websocket handlers -- websocket_handlers[pdu->m_requestid] = new CWebsocketHandler(m_pWebEm, boost::bind(&CProxyClient::WS_Write, this, pdu->m_requestid, _1)); -+ websocket_handlers[pdu->m_requestid] = new CWebsocketHandler(m_pWebEm, std::bind(&CProxyClient::WS_Write, this, pdu->m_requestid, _1)); - websocket_handlers[pdu->m_requestid]->Start(); - } ++using namespace boost::placeholders; ++ + extern bool g_bIsWSL; + namespace http { diff --git a/utils/domoticz/patches/020-python39.patch b/utils/domoticz/patches/020-python39.patch new file mode 100644 index 000000000..17e3b84a8 --- /dev/null +++ b/utils/domoticz/patches/020-python39.patch @@ -0,0 +1,27 @@ +--- a/hardware/plugins/DelayedLink.h ++++ b/hardware/plugins/DelayedLink.h +@@ -14,6 +14,16 @@ + #include + #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);