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);