Update Domoticz to 2020.2, and its dependencieslilik-openwrt-22.03
@ -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)) |
@ -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)) |
@ -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 | |||
@ -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 | |||