summary refs log tree commit diff
path: root/pkgs/servers/zoneminder
diff options
context:
space:
mode:
authorAlyssa Ross <hi@alyssa.is>2020-03-26 17:17:48 +0000
committerAlyssa Ross <hi@alyssa.is>2020-03-26 17:36:07 +0000
commit70e58881128ed8170821840138ab08fc5cdd3c11 (patch)
tree1bf0d3d977878df5b58493ea02b2e6c79df3ba22 /pkgs/servers/zoneminder
parenta9847c36e6aa003998c1ef5518e5710658ca5770 (diff)
parent90dcc3360327e250536eeeca7fe9d887c9f7a817 (diff)
downloadnixpkgs-70e58881128ed8170821840138ab08fc5cdd3c11.tar
nixpkgs-70e58881128ed8170821840138ab08fc5cdd3c11.tar.gz
nixpkgs-70e58881128ed8170821840138ab08fc5cdd3c11.tar.bz2
nixpkgs-70e58881128ed8170821840138ab08fc5cdd3c11.tar.lz
nixpkgs-70e58881128ed8170821840138ab08fc5cdd3c11.tar.xz
nixpkgs-70e58881128ed8170821840138ab08fc5cdd3c11.tar.zst
nixpkgs-70e58881128ed8170821840138ab08fc5cdd3c11.zip
Merge remote-tracking branch 'nixpkgs/master' into master
Diffstat (limited to 'pkgs/servers/zoneminder')
-rw-r--r--pkgs/servers/zoneminder/0001-Don-t-use-file-timestamp-in-cache-filename.patch32
-rw-r--r--pkgs/servers/zoneminder/default.nix26
-rw-r--r--pkgs/servers/zoneminder/link-with-libdl.patch17
3 files changed, 49 insertions, 26 deletions
diff --git a/pkgs/servers/zoneminder/0001-Don-t-use-file-timestamp-in-cache-filename.patch b/pkgs/servers/zoneminder/0001-Don-t-use-file-timestamp-in-cache-filename.patch
new file mode 100644
index 00000000000..6ca55a14768
--- /dev/null
+++ b/pkgs/servers/zoneminder/0001-Don-t-use-file-timestamp-in-cache-filename.patch
@@ -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
+
diff --git a/pkgs/servers/zoneminder/default.nix b/pkgs/servers/zoneminder/default.nix
index e536ea0373c..93f22e77f87 100644
--- a/pkgs/servers/zoneminder/default.nix
+++ b/pkgs/servers/zoneminder/default.nix
@@ -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
-     substituteInPlace web/$f \
-       --replace "'ffmpeg " "'${ffmpeg}/bin/ffmpeg "
-   done
+    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 ];
diff --git a/pkgs/servers/zoneminder/link-with-libdl.patch b/pkgs/servers/zoneminder/link-with-libdl.patch
deleted file mode 100644
index 53aaf9b25f7..00000000000
--- a/pkgs/servers/zoneminder/link-with-libdl.patch
+++ /dev/null
@@ -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)