Merge pull request #79488 from danielfullmer/zoneminder-1.34.2

zoneminder: 1.32.3 -> 1.34.3
This commit is contained in:
Dmitry Kalinkin 2020-03-07 13:25:17 -05:00 committed by GitHub
commit 93745d243b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 53 additions and 26 deletions

View file

@ -77,6 +77,8 @@ in {
`config.services.zoneminder.database.createLocally` to true. Otherwise,
when set to `false` (the default), you will have to create the database
and database user as well as populate the database yourself.
Additionally, you will need to run `zmupdate.pl` yourself when
upgrading to a newer version.
'';
webserver = mkOption {
@ -330,6 +332,8 @@ in {
${config.services.mysql.package}/bin/mysql < ${pkg}/share/zoneminder/db/zm_create.sql
touch "/var/lib/${dirName}/db-created"
fi
${zoneminder}/bin/zmupdate.pl -nointeractive
'';
serviceConfig = {
User = user;

View file

@ -0,0 +1,32 @@
From db38a11228eceea10dc97ecc87023b4919caa918 Mon Sep 17 00:00:00 2001
From: Daniel Fullmer <danielrf12@gmail.com>
Date: Fri, 21 Feb 2020 21:52:00 -0500
Subject: [PATCH] Don't use file timestamp in cache filename
Every file in the nix store has a timestamp of "1", meaning that the
filename would remain constant even when changing zoneminder versions.
This would mean that newer versions would use the existing symlink to an
older version of the source file. We replace SRC_HASH in nix with a
hash of the source used to build zoneminder to ensure this filename is
unique.
---
web/includes/functions.php | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/web/includes/functions.php b/web/includes/functions.php
index 19567a5c1..0242c09bc 100644
--- a/web/includes/functions.php
+++ b/web/includes/functions.php
@@ -2223,7 +2223,8 @@ function cache_bust($file) {
$parts = pathinfo($file);
global $css;
$dirname = preg_replace('/\//', '_', $parts['dirname']);
- $cacheFile = $dirname.'_'.$parts['filename'].'-'.$css.'-'.filemtime($file).'.'.$parts['extension'];
+ $srcHash = '@srcHash@';
+ $cacheFile = $dirname.'_'.$parts['filename'].'-'.$css.'-'.$srcHash.'.'.$parts['extension'];
if ( file_exists(ZM_DIR_CACHE.'/'.$cacheFile) or symlink(ZM_PATH_WEB.'/'.$file, ZM_DIR_CACHE.'/'.$cacheFile) ) {
return 'cache/'.$cacheFile;
} else {
--
2.25.1

View file

@ -1,4 +1,4 @@
{ stdenv, lib, fetchFromGitHub, fetchurl, cmake, makeWrapper, pkgconfig
{ stdenv, lib, fetchFromGitHub, fetchurl, substituteAll, cmake, makeWrapper, pkgconfig
, curl, ffmpeg, glib, libjpeg, libselinux, libsepol, mp4v2, libmysqlclient, mysql, pcre, perl, perlPackages
, polkit, utillinuxMinimal, x264, zlib
, coreutils, procps, psmisc }:
@ -78,19 +78,18 @@ let
in stdenv.mkDerivation rec {
pname = "zoneminder";
version = "1.32.3";
version = "1.34.3";
src = fetchFromGitHub {
owner = "ZoneMinder";
repo = "zoneminder";
rev = version;
sha256 = "1sx2fn99861zh0gp8g53ynr1q6yfmymxamn82y54jqj6nv475njz";
sha256 = "0jp7950v36gxxzkwdp5i0312s26czhfsl5ixdxfzn21cx31hhlg0";
};
patches = [
./default-to-http-1dot1.patch
# Explicitly link with dynamic linking library to fix build
./link-with-libdl.patch
./0001-Don-t-use-file-timestamp-in-cache-filename.patch
];
postPatch = ''
@ -125,6 +124,10 @@ in stdenv.mkDerivation rec {
substituteInPlace scripts/zmdbbackup.in \
--replace /usr/bin/mysqldump ${mysql.client}/bin/mysqldump
substituteInPlace scripts/zmupdate.pl.in \
--replace "'mysql'" "'${mysql.client}/bin/mysql'" \
--replace "'mysqldump'" "'${mysql.client}/bin/mysqldump'"
for f in scripts/ZoneMinder/lib/ZoneMinder/Config.pm.in \
scripts/zmupdate.pl.in \
src/zm_config.h.in \
@ -133,10 +136,14 @@ in stdenv.mkDerivation rec {
substituteInPlace $f --replace @ZM_CONFIG_SUBDIR@ /etc/zoneminder
done
for f in includes/Event.php views/image.php skins/classic/views/image-ffmpeg.php ; do
for f in includes/Event.php views/image.php ; do
substituteInPlace web/$f \
--replace "'ffmpeg " "'${ffmpeg}/bin/ffmpeg "
done
substituteInPlace web/includes/functions.php \
--replace "'date " "'${coreutils}/bin/date " \
--subst-var-by srcHash "`basename $out`"
'';
buildInputs = [
@ -147,6 +154,7 @@ in stdenv.mkDerivation rec {
DateManip DBI DBDmysql LWP SysMmap
# run-time dependencies not checked at build-time
ClassStdFast DataDump DeviceSerialPort JSONMaybeXS LWPProtocolHttps NumberBytesHuman SysCPU SysMemInfo TimeDate
CryptEksblowfish DataEntropy # zmupdate.pl
]);
nativeBuildInputs = [ cmake makeWrapper pkgconfig ];

View file

@ -1,17 +0,0 @@
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -20,10 +20,10 @@ add_executable(zms zms.cpp)
include_directories(libbcrypt/include/bcrypt)
include_directories(jwt-cpp/include/jwt-cpp)
-target_link_libraries(zmc zm ${ZM_EXTRA_LIBS} ${ZM_BIN_LIBS})
-target_link_libraries(zma zm ${ZM_EXTRA_LIBS} ${ZM_BIN_LIBS})
-target_link_libraries(zmu zm ${ZM_EXTRA_LIBS} ${ZM_BIN_LIBS})
-target_link_libraries(zms zm ${ZM_EXTRA_LIBS} ${ZM_BIN_LIBS})
+target_link_libraries(zmc zm ${ZM_EXTRA_LIBS} ${ZM_BIN_LIBS} ${CMAKE_DL_LIBS})
+target_link_libraries(zma zm ${ZM_EXTRA_LIBS} ${ZM_BIN_LIBS} ${CMAKE_DL_LIBS})
+target_link_libraries(zmu zm ${ZM_EXTRA_LIBS} ${ZM_BIN_LIBS} ${CMAKE_DL_LIBS})
+target_link_libraries(zms zm ${ZM_EXTRA_LIBS} ${ZM_BIN_LIBS} ${CMAKE_DL_LIBS})
# Generate man files for the binaries destined for the bin folder
FOREACH(CBINARY zma zmc zmu)