Merge pull request #12407 from dwmw2/domo
Update Domoticz to 2020.2, and its dependencies
This commit is contained in:
commit
1b86bc11ed
6 changed files with 295 additions and 9 deletions
44
libs/cereal/Makefile
Normal file
44
libs/cereal/Makefile
Normal file
|
@ -0,0 +1,44 @@
|
||||||
|
#
|
||||||
|
# Copyright © 2020 David Woodhouse <dwmw2@infradead.org>
|
||||||
|
#
|
||||||
|
# This is free software, licensed under the GNU General Public License v2.
|
||||||
|
# See /LICENSE for more information.
|
||||||
|
|
||||||
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
|
PKG_NAME:=cereal
|
||||||
|
PKG_VERSION:=1.3.0
|
||||||
|
PKG_RELEASE:=1
|
||||||
|
|
||||||
|
PKG_SOURCE:=v$(PKG_VERSION).tar.gz
|
||||||
|
PKG_SOURCE_URL:=https://github.com/USCiLab/cereal/archive/
|
||||||
|
PKG_HASH:=329ea3e3130b026c03a4acc50e168e7daff4e6e661bc6a7dfec0d77b570851d5
|
||||||
|
|
||||||
|
PKG_MAINTAINER:=David Woodhouse <dwmw2@infradead.org>
|
||||||
|
PKG_LICENSE:=BSD-3-Clause
|
||||||
|
PKG_LICENSE_FILES:=LICENSE
|
||||||
|
|
||||||
|
CMAKE_INSTALL:=1
|
||||||
|
PKG_BUILD_PARALLEL:=1
|
||||||
|
|
||||||
|
CMAKE_OPTIONS += -DCMAKE_CXX_FLAGS=-latomic -DWITH_WERROR=OFF -DSKIP_PORTABILITY_TEST=ON -DSKIP_PERFORMANCE_COMPARISON=ON
|
||||||
|
|
||||||
|
include $(INCLUDE_DIR)/package.mk
|
||||||
|
include $(INCLUDE_DIR)/cmake.mk
|
||||||
|
|
||||||
|
|
||||||
|
define Package/cereal
|
||||||
|
BUILDONLY:=1
|
||||||
|
SECTION:=devel
|
||||||
|
CATEGORY:=Development
|
||||||
|
SUBMENU:=Libraries
|
||||||
|
TITLE:=Cereal is a library of C++ header files for serialization
|
||||||
|
URL:=https://github.com/USCilab/cereal
|
||||||
|
endef
|
||||||
|
|
||||||
|
|
||||||
|
define Package/cereal/description
|
||||||
|
Cereal is a library of C++ headers for serialization
|
||||||
|
endef
|
||||||
|
|
||||||
|
$(eval $(call BuildPackage,cereal))
|
61
libs/minizip/Makefile
Normal file
61
libs/minizip/Makefile
Normal file
|
@ -0,0 +1,61 @@
|
||||||
|
#
|
||||||
|
# Copyright © 2020 David Woodhouse <dwmw2@infradead.org>
|
||||||
|
#
|
||||||
|
# This is free software, licensed under the GNU General Public License v2.
|
||||||
|
# See /LICENSE for more information.
|
||||||
|
|
||||||
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
|
PKG_NAME:=minizip
|
||||||
|
PKG_VERSION:=2.9.3
|
||||||
|
PKG_RELEASE:=1
|
||||||
|
|
||||||
|
PKG_SOURCE:=$(PKG_VERSION).tar.gz
|
||||||
|
PKG_SOURCE_URL:=https://github.com/nmoinvaz/minizip/archive/
|
||||||
|
PKG_HASH:=f64b2d228a03673a8ec36a53402e2108437226fd9170d49b7f0c0bca94708b93
|
||||||
|
|
||||||
|
PKG_MAINTAINER:=David Woodhouse <dwmw2@infradead.org>
|
||||||
|
PKG_LICENSE:=Zlib
|
||||||
|
PKG_LICENSE_FILES:=LICENSE
|
||||||
|
|
||||||
|
PKG_BUILD_PARALLEL:=1
|
||||||
|
|
||||||
|
CMAKE_OPTIONS:=-DINSTALL_INC_DIR=/usr/include/minizip -DMZ_BZIP2=OFF -DBUILD_SHARED_LIBS=ON
|
||||||
|
|
||||||
|
include $(INCLUDE_DIR)/package.mk
|
||||||
|
include $(INCLUDE_DIR)/cmake.mk
|
||||||
|
|
||||||
|
define Package/minizip
|
||||||
|
TITLE:=Fork of the popular zip manipulation library found in the zlib distribution
|
||||||
|
SECTION:=libs
|
||||||
|
CATEGORY:=Libraries
|
||||||
|
DEPENDS:=+zlib
|
||||||
|
URL:=https://github.com/nmoinvaz/minizip
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Package/minizip-dev
|
||||||
|
SECTION:=devel
|
||||||
|
CATEGORY:=Development
|
||||||
|
SUBMENU:=Libraries
|
||||||
|
DEPENDS:=minizip
|
||||||
|
TITLE:=Development files for the minizip library
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Package/minizip/description
|
||||||
|
minizip is a zip manipulation library written in C that is supported on Windows, macOS, and Linux
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Package/minizip/install
|
||||||
|
$(INSTALL_DIR) $(1)/usr/lib
|
||||||
|
$(CP) $(PKG_INSTALL_DIR)/usr/lib/libminizip.so.* $(1)/usr/lib/
|
||||||
|
endef
|
||||||
|
|
||||||
|
TARGET_CXXFLAGS += -flto
|
||||||
|
|
||||||
|
define Build/InstallDev
|
||||||
|
$(call Build/InstallDev/cmake,$(1))
|
||||||
|
$(SED) 's,/usr/include,$$$${prefix}/include,g' $(1)/usr/lib/pkgconfig/minizip.pc
|
||||||
|
$(SED) 's,/usr/lib,$$$${exec_prefix}/lib,g' $(1)/usr/lib/pkgconfig/minizip.pc
|
||||||
|
endef
|
||||||
|
|
||||||
|
$(eval $(call BuildPackage,minizip))
|
|
@ -8,17 +8,17 @@
|
||||||
include $(TOPDIR)/rules.mk
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_NAME:=domoticz
|
PKG_NAME:=domoticz
|
||||||
PKG_VERSION:=2020.1
|
PKG_VERSION:=2020.2
|
||||||
PKG_RELEASE:=2
|
PKG_RELEASE:=1
|
||||||
|
|
||||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
||||||
PKG_SOURCE_URL:=https://github.com/domoticz/domoticz/archive/$(PKG_VERSION)/$(PKG_SOURCE)
|
PKG_SOURCE_URL:=https://github.com/domoticz/domoticz/archive/$(PKG_VERSION)/$(PKG_SOURCE)
|
||||||
PKG_HASH:=d0c17b2082dad8a8caeed888b7d4c191975e74a2808b5d078305f5327b82442d
|
PKG_HASH:=a02f589daad4eebff1f5e93815c1acd1864cf068f8f5c3185bcdd20207ae395e
|
||||||
|
|
||||||
PKG_LICENSE:=GPL-3.0
|
PKG_LICENSE:=GPL-3.0
|
||||||
PKG_LICENSE_FILES:=License.txt
|
PKG_LICENSE_FILES:=License.txt
|
||||||
|
|
||||||
PKG_BUILD_DEPENDS:=python3
|
PKG_BUILD_DEPENDS:=python3 minizip cereal
|
||||||
PKG_BUILD_PARALLEL:=1
|
PKG_BUILD_PARALLEL:=1
|
||||||
PKG_USE_MIPS16:=0
|
PKG_USE_MIPS16:=0
|
||||||
|
|
||||||
|
@ -32,15 +32,18 @@ define Package/domoticz
|
||||||
CATEGORY:=Utilities
|
CATEGORY:=Utilities
|
||||||
TITLE:=Open Source Home Automation System
|
TITLE:=Open Source Home Automation System
|
||||||
URL:=http://domoticz.com/
|
URL:=http://domoticz.com/
|
||||||
MAINTAINER:=
|
MAINTAINER:=David Woodhouse <dwmw2@infradead.org>
|
||||||
USERID:=domoticz=6144:domoticz=6144
|
USERID:=domoticz=6144:domoticz=6144
|
||||||
DEPENDS:= \
|
DEPENDS:= \
|
||||||
+boost \
|
+boost \
|
||||||
+boost-date_time \
|
+boost-date_time \
|
||||||
+boost-system \
|
+boost-system \
|
||||||
+boost-thread \
|
+boost-thread \
|
||||||
|
+jsoncpp \
|
||||||
+libcurl \
|
+libcurl \
|
||||||
+libmosquittopp \
|
+minizip \
|
||||||
|
+lua5.3 \
|
||||||
|
+libmosquitto \
|
||||||
+libopenssl \
|
+libopenssl \
|
||||||
+libopenzwave \
|
+libopenzwave \
|
||||||
+libsqlite3 \
|
+libsqlite3 \
|
||||||
|
@ -59,6 +62,9 @@ CMAKE_OPTIONS += \
|
||||||
-DCMAKE_BUILD_TYPE=Release \
|
-DCMAKE_BUILD_TYPE=Release \
|
||||||
-DUSE_BUILTIN_MQTT=no \
|
-DUSE_BUILTIN_MQTT=no \
|
||||||
-DUSE_BUILTIN_SQLITE=no \
|
-DUSE_BUILTIN_SQLITE=no \
|
||||||
|
-DUSE_BUILTIN_JSONCPP=no \
|
||||||
|
-DUSE_BUILTIN_MINIZIP=no \
|
||||||
|
-DUSE_LUA_STATIC=no \
|
||||||
-DUSE_STATIC_BOOST=no \
|
-DUSE_STATIC_BOOST=no \
|
||||||
-DUSE_STATIC_LIBSTDCXX=no \
|
-DUSE_STATIC_LIBSTDCXX=no \
|
||||||
-DUSE_STATIC_OPENZWAVE=no \
|
-DUSE_STATIC_OPENZWAVE=no \
|
||||||
|
|
129
utils/domoticz/patches/011-openzwave-include.patch
Normal file
129
utils/domoticz/patches/011-openzwave-include.patch
Normal file
|
@ -0,0 +1,129 @@
|
||||||
|
From 632695fe3ee704c1c1c539d79172ac0f9f9ce77b Mon Sep 17 00:00:00 2001
|
||||||
|
From: David Woodhouse <dwmw2@infradead.org>
|
||||||
|
Date: Thu, 4 Jun 2020 12:41:27 +0100
|
||||||
|
Subject: [PATCH] Fix up OpenZWave include path handling
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=UTF-8
|
||||||
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
|
The path specified by the pkg-config file will be, for example,
|
||||||
|
/usr/include/openzwave.
|
||||||
|
|
||||||
|
That directory needs to be on the compiler's include path, because
|
||||||
|
OpenZWave's own include files assume they can include each other
|
||||||
|
simply as (e.g.) "ValueIDIndexes.h"; not "openzwave/ValueIDIndexes.h"
|
||||||
|
|
||||||
|
Our own files do include <openzwave/Foo.h> though, which means that
|
||||||
|
the *parent* directory needs to be on the compilers's include path
|
||||||
|
too. We generally get lucky because /usr/include is automatically
|
||||||
|
included, so we find /usr/include/openzwave/Foo.h anyway.
|
||||||
|
|
||||||
|
Fix our C files to rely on the correct include path discovered from
|
||||||
|
pkg-config, and to include OpenZWave headers by name without the
|
||||||
|
erroneous openzwave/ prefix.
|
||||||
|
|
||||||
|
That means we can fix the ../open-zwave-read-only static build to use
|
||||||
|
the header files directly from there just like it does the static
|
||||||
|
library .a file, without requiring the 'sudo make install' step — and
|
||||||
|
without suffering a mismatch of static openzwave build vs. headers of
|
||||||
|
a different version that were installed on the system, which could
|
||||||
|
previously happen.
|
||||||
|
|
||||||
|
Tested with both static and dynamic builds of OpenZWave.
|
||||||
|
---
|
||||||
|
CMakeLists.txt | 11 ++++-------
|
||||||
|
hardware/OpenZWave.cpp | 8 ++++----
|
||||||
|
hardware/openzwave/control_panel/ozwcp.cpp | 10 +++++-----
|
||||||
|
hardware/openzwave/control_panel/ozwcp.h | 4 ++--
|
||||||
|
4 files changed, 15 insertions(+), 18 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
||||||
|
index fa5b3099d..1f4b6fb57 100644
|
||||||
|
--- a/CMakeLists.txt
|
||||||
|
+++ b/CMakeLists.txt
|
||||||
|
@@ -694,6 +694,7 @@ endif(WITH_LIBUSB)
|
||||||
|
#
|
||||||
|
if(USE_STATIC_OPENZWAVE)
|
||||||
|
find_library(OpenZWave NAMES libopenzwave.a HINTS "../open-zwave-read-only" "../open-zwave-read-only/cpp/build")
|
||||||
|
+ find_path(OPENZWAVE_INCLUDE_DIRS NAMES OZWException.h HINTS "../open-zwave-read-only/cpp/src")
|
||||||
|
set(OPENZWAVE_LIB ${OpenZWave})
|
||||||
|
else()
|
||||||
|
pkg_check_modules(OPENZWAVE libopenzwave)
|
||||||
|
@@ -707,16 +708,12 @@ IF(OpenZWave)
|
||||||
|
message(STATUS "OpenZWave library found at: ${OpenZWave}")
|
||||||
|
target_link_libraries(domoticz ${OpenZWave})
|
||||||
|
|
||||||
|
- find_path(OPENZWAVE_INCLUDE_DIRS NAMES openzwave/Manager.h)
|
||||||
|
+ find_path(OPENZWAVE_INCLUDE_DIRS NAMES OZWException.h)
|
||||||
|
if (OPENZWAVE_INCLUDE_DIRS)
|
||||||
|
- IF(CMAKE_SYSTEM_NAME STREQUAL "FreeBSD")
|
||||||
|
- include_directories(${OPENZWAVE_INCLUDE_DIRS})
|
||||||
|
- ELSE()
|
||||||
|
- include_directories(${OPENZWAVE_INCLUDE_DIRS}/openzwave)
|
||||||
|
- ENDIF()
|
||||||
|
+ include_directories(${OPENZWAVE_INCLUDE_DIRS})
|
||||||
|
message(STATUS "OpenZWave includes found at: ${OPENZWAVE_INCLUDE_DIRS}")
|
||||||
|
else()
|
||||||
|
- message(FATAL_ERROR "OpenZWave includes not found. Did you not issue 'sudo make install' after building OpenZWave?")
|
||||||
|
+ message(FATAL_ERROR "OpenZWave includes not found.")
|
||||||
|
endif (OPENZWAVE_INCLUDE_DIRS)
|
||||||
|
add_definitions(-DWITH_OPENZWAVE)
|
||||||
|
ELSE()
|
||||||
|
diff --git a/hardware/OpenZWave.cpp b/hardware/OpenZWave.cpp
|
||||||
|
index 272e3d0a7..a226a8924 100644
|
||||||
|
--- a/hardware/OpenZWave.cpp
|
||||||
|
+++ b/hardware/OpenZWave.cpp
|
||||||
|
@@ -22,10 +22,10 @@
|
||||||
|
#include "../main/localtime_r.h"
|
||||||
|
|
||||||
|
//OpenZWave includes
|
||||||
|
-#include <openzwave/Options.h>
|
||||||
|
-#include <openzwave/Manager.h>
|
||||||
|
-#include <openzwave/platform/Log.h>
|
||||||
|
-#include <openzwave/ValueIDIndexesDefines.h>
|
||||||
|
+#include <Options.h>
|
||||||
|
+#include <Manager.h>
|
||||||
|
+#include <platform/Log.h>
|
||||||
|
+#include <ValueIDIndexesDefines.h>
|
||||||
|
|
||||||
|
#include "ZWaveCommands.h"
|
||||||
|
|
||||||
|
diff --git a/hardware/openzwave/control_panel/ozwcp.cpp b/hardware/openzwave/control_panel/ozwcp.cpp
|
||||||
|
index 0b21a9cf3..5e401b2f1 100644
|
||||||
|
--- a/hardware/openzwave/control_panel/ozwcp.cpp
|
||||||
|
+++ b/hardware/openzwave/control_panel/ozwcp.cpp
|
||||||
|
@@ -39,11 +39,11 @@
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <time.h>
|
||||||
|
#include <string.h>
|
||||||
|
-#include <openzwave/Options.h>
|
||||||
|
-#include <openzwave/Manager.h>
|
||||||
|
-#include <openzwave/Node.h>
|
||||||
|
-#include <openzwave/Group.h>
|
||||||
|
-#include <openzwave/Notification.h>
|
||||||
|
+#include <Options.h>
|
||||||
|
+#include <Manager.h>
|
||||||
|
+#include <Node.h>
|
||||||
|
+#include <Group.h>
|
||||||
|
+#include <Notification.h>
|
||||||
|
#include "../../../main/Logger.h"
|
||||||
|
|
||||||
|
#include <sys/stat.h>
|
||||||
|
diff --git a/hardware/openzwave/control_panel/ozwcp.h b/hardware/openzwave/control_panel/ozwcp.h
|
||||||
|
index ebfef1791..96d14b3bf 100644
|
||||||
|
--- a/hardware/openzwave/control_panel/ozwcp.h
|
||||||
|
+++ b/hardware/openzwave/control_panel/ozwcp.h
|
||||||
|
@@ -38,8 +38,8 @@
|
||||||
|
|
||||||
|
#include <list>
|
||||||
|
#include <algorithm>
|
||||||
|
-#include <openzwave/Driver.h>
|
||||||
|
-#include <openzwave/Notification.h>
|
||||||
|
+#include <Driver.h>
|
||||||
|
+#include <Notification.h>
|
||||||
|
|
||||||
|
#define MAX_NODES 255
|
||||||
|
|
||||||
|
--
|
||||||
|
2.26.2
|
||||||
|
|
46
utils/domoticz/patches/012-minizip-overflow.patch
Normal file
46
utils/domoticz/patches/012-minizip-overflow.patch
Normal file
|
@ -0,0 +1,46 @@
|
||||||
|
From 3c23a7863c0b01273d4c36423769443ea7e4a7bb Mon Sep 17 00:00:00 2001
|
||||||
|
From: David Woodhouse <dwmw2@infradead.org>
|
||||||
|
Date: Fri, 5 Jun 2020 15:02:41 +0100
|
||||||
|
Subject: [PATCH 1/2] unzip: reduce file name size to 65535 to work with
|
||||||
|
external minizip
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=UTF-8
|
||||||
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
|
The external minizip project has changed the unzGetCurrentFileInfo()
|
||||||
|
function to take a uint16_t as the filename size, instead of a uLong
|
||||||
|
as in the original version in zlib.
|
||||||
|
|
||||||
|
(Reported as https://github.com/nmoinvaz/minizip/issues/490 but it
|
||||||
|
was 3½ years ago and might be too late to fix it now, although changing
|
||||||
|
it back to a *larger* type is a lot safer than reducing the size, and
|
||||||
|
perhaps they should.)
|
||||||
|
|
||||||
|
This means that our 65536-byte buffer gets truncated to zero, as the
|
||||||
|
compiler tells us when we build agaisnt the external minizip:
|
||||||
|
|
||||||
|
domoticz/main/unzip_stream.h:140:50: warning: conversion from ‘long unsigned int’ to ‘uint16_t’ {aka ‘short unsigned int’} changes value from ‘65536’ to ‘0’ [-Woverflow]
|
||||||
|
140 | unzGetCurrentFileInfo(handler_, &info, path, sizeof(path), NULL, 0, NULL, 0);
|
||||||
|
| ^~~~~~~~~~~~
|
||||||
|
|
||||||
|
Reduce the buffer size to 65535 bytes instead.
|
||||||
|
---
|
||||||
|
main/unzip_stream.h | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/main/unzip_stream.h b/main/unzip_stream.h
|
||||||
|
index 136fcefd9..813f2489a 100644
|
||||||
|
--- a/main/unzip_stream.h
|
||||||
|
+++ b/main/unzip_stream.h
|
||||||
|
@@ -135,7 +135,7 @@ namespace clx {
|
||||||
|
basic_unzip_stream& open(handler_type h) {
|
||||||
|
handler_ = h;
|
||||||
|
if (handler_) {
|
||||||
|
- char path[65536];
|
||||||
|
+ char path[65535];
|
||||||
|
unz_file_info info;
|
||||||
|
unzGetCurrentFileInfo(handler_, &info, path, sizeof(path), NULL, 0, NULL, 0);
|
||||||
|
path_ = path;
|
||||||
|
--
|
||||||
|
2.26.2
|
||||||
|
|
|
@ -9,19 +9,19 @@
|
||||||
include $(TOPDIR)/rules.mk
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_NAME:=openzwave
|
PKG_NAME:=openzwave
|
||||||
PKG_VERSION:=1.6.1063
|
PKG_VERSION:=1.6.1134
|
||||||
PKG_RELEASE:=1
|
PKG_RELEASE:=1
|
||||||
|
|
||||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
||||||
PKG_SOURCE_URL:=http://old.openzwave.com/downloads
|
PKG_SOURCE_URL:=http://old.openzwave.com/downloads
|
||||||
PKG_HASH:=8b1b674f825cd3623d2aa9c286edbb05c0ff6537d5d3ee891ae98e21d28de26b
|
PKG_HASH:=719e904f5ac022772db81517e918d7994562d68a2820dd161b5c419c39f167d8
|
||||||
PKG_INSTALL:=1
|
PKG_INSTALL:=1
|
||||||
|
|
||||||
include $(INCLUDE_DIR)/package.mk
|
include $(INCLUDE_DIR)/package.mk
|
||||||
|
|
||||||
define Package/openzwave/default
|
define Package/openzwave/default
|
||||||
URL:=http://openzwave.com
|
URL:=http://openzwave.com
|
||||||
MAINTAINER:=
|
MAINTAINER:=David Woodhouse <dwmw2@infradead.org>
|
||||||
DEPENDS:=+libpthread +libstdcpp
|
DEPENDS:=+libpthread +libstdcpp
|
||||||
endef
|
endef
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue