Browse Source

domoticz: update to 2020.2

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
lilik-openwrt-22.03
David Woodhouse 5 years ago
parent
commit
27e5626bc5
3 changed files with 183 additions and 4 deletions
  1. +8
    -4
      utils/domoticz/Makefile
  2. +129
    -0
      utils/domoticz/patches/011-openzwave-include.patch
  3. +46
    -0
      utils/domoticz/patches/012-minizip-overflow.patch

+ 8
- 4
utils/domoticz/Makefile View File

@ -8,17 +8,17 @@
include $(TOPDIR)/rules.mk include $(TOPDIR)/rules.mk
PKG_NAME:=domoticz PKG_NAME:=domoticz
PKG_VERSION:=2020.1
PKG_RELEASE:=3
PKG_VERSION:=2020.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
@ -41,6 +41,8 @@ define Package/domoticz
+boost-thread \ +boost-thread \
+jsoncpp \ +jsoncpp \
+libcurl \ +libcurl \
+minizip \
+lua5.3 \
+libmosquitto \ +libmosquitto \
+libopenssl \ +libopenssl \
+libopenzwave \ +libopenzwave \
@ -61,6 +63,8 @@ CMAKE_OPTIONS += \
-DUSE_BUILTIN_MQTT=no \ -DUSE_BUILTIN_MQTT=no \
-DUSE_BUILTIN_SQLITE=no \ -DUSE_BUILTIN_SQLITE=no \
-DUSE_BUILTIN_JSONCPP=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
- 0
utils/domoticz/patches/011-openzwave-include.patch View 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
- 0
utils/domoticz/patches/012-minizip-overflow.patch View 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

Loading…
Cancel
Save