commit b16117554fda24d8e12be7da724e0b6bed44f72d
Author: Andrew Bauer <zonexpertconsulting(a)outlook.com>
Date: Sat Dec 8 09:42:38 2018 -0600
1.32.3 Release
Break into sub-packages
.gitignore | 1 +
sources | 2 +-
zoneminder.spec | 220 ++++++++++++++++++++++++++++++++++++++++----------------
3 files changed, 160 insertions(+), 63 deletions(-)
---
diff --git a/.gitignore b/.gitignore
index b1b289e..4965a72 100644
--- a/.gitignore
+++ b/.gitignore
@@ -5,3 +5,4 @@
/zoneminder-1.32.0.tar.gz
/zoneminder-1.32.1.tar.gz
/zoneminder-1.32.2.tar.gz
+/zoneminder-1.32.3.tar.gz
diff --git a/sources b/sources
index 3e5d212..6d489b3 100644
--- a/sources
+++ b/sources
@@ -1,3 +1,3 @@
9ac5569ffaf82e4339d97af7fbe0d392 cakephp-enum-behavior-1.0-zm.tar.gz
86ae07e6ee1cd06ee6f608a85a5da808 crud-3.1.0-zm.tar.gz
-3c288ac549f5e7798f0452b13f22f80a zoneminder-1.32.2.tar.gz
+af8161cc1cfed8710a3c2156f72f9b71 zoneminder-1.32.3.tar.gz
diff --git a/zoneminder.spec b/zoneminder.spec
index 4a1cb64..941bad9 100644
--- a/zoneminder.spec
+++ b/zoneminder.spec
@@ -1,3 +1,4 @@
+# Leaving this to allow one to build zoneminder-http subpackage using arbitrary user
account
%global zmuid_final apache
%global zmgid_final apache
@@ -7,10 +8,6 @@
# CakePHP-Enum-Behavior is configured as a git submodule
%global ceb_version 1.0-zm
-%if "%{zmuid_final}" == "nginx"
-%global with_nginx 1
-%endif
-
%global sslcert %{_sysconfdir}/pki/tls/certs/localhost.crt
%global sslkey %{_sysconfdir}/pki/tls/private/localhost.key
@@ -22,12 +19,14 @@
%global with_apcu_bc 1
%endif
+# The default for everything but el7 these days
%global _hardened_build 1
Name: zoneminder
-Version: 1.32.2
-Release: 2%{?dist}
+Version: 1.32.3
+Release: 1%{?dist}
Summary: A camera monitoring and analysis tool
+Group: System Environment/Daemons
# Mootools is inder the MIT license:
http://mootools.net/
# CakePHP is under the MIT license:
https://github.com/cakephp/cakephp
# Crud is under the MIT license:
https://github.com/FriendsOfCake/crud
@@ -73,6 +72,7 @@ BuildRequires: vlc-devel
BuildRequires: libcurl-devel
BuildRequires: libv4l-devel
BuildRequires: desktop-file-utils
+BuildRequires: gzip
# ZoneMinder looks for and records the location of the ffmpeg binary during build
BuildRequires: ffmpeg
@@ -82,11 +82,25 @@ BuildRequires: ffmpeg-devel
BuildRequires: libmp4v2-devel
BuildRequires: x264-devel
-%{?with_nginx:Requires: nginx}
-%{?with_nginx:Requires: fcgiwrap}
-%{?with_nginx:Requires: php-fpm}
-%{!?with_nginx:Requires: httpd}
-%{!?with_nginx:Requires: php}
+# Allow existing user base to seamlessly transition to sub-packages
+Requires: %{name}-common%{?_isa} = %{version}-%{release}
+Requires: %{name}-httpd%{?_isa} = %{version}-%{release}
+
+%description
+ZoneMinder is a set of applications which is intended to provide a complete
+solution allowing you to capture, analyze, record and monitor any cameras you
+have attached to a Linux based machine. It is designed to run on kernels which
+support the Video For Linux (V4L) interface and has been tested with cameras
+attached to BTTV cards, various USB cameras and IP network cameras. It is
+designed to support as many cameras as you can attach to your computer without
+too much degradation of performance.
+
+This is a meta package for backwards compatibility with the existing
+ZoneMinder user base.
+
+%package common
+Summary: Common files for ZoneMinder, not tied to a specific web server
+
Requires: php-mysqli
Requires: php-common
Requires: php-gd
@@ -111,16 +125,32 @@ Requires: perl(Net::FTP)
Requires: perl(LWP::Protocol::https)
Requires: ca-certificates
Requires: zip
-
-Requires(post): systemd
-Requires(post): systemd-sysv
-Requires(preun): systemd
-Requires(postun): systemd
+%{?systemd_requires}
Requires(post): %{_bindir}/gpasswd
-Requires(post): %{_bindir}/less
+Requires(post): %{_bindir}/chown
-%description
+%description common
+ZoneMinder is a set of applications which is intended to provide a complete
+solution allowing you to capture, analyze, record and monitor any cameras you
+have attached to a Linux based machine. It is designed to run on kernels which
+support the Video For Linux (V4L) interface and has been tested with cameras
+attached to BTTV cards, various USB cameras and IP network cameras. It is
+designed to support as many cameras as you can attach to your computer without
+too much degradation of performance.
+
+This is a meta-package that exists solely to allow the existing user base to
+seamlessly transition to sub-packages.
+
+%package httpd
+Summary: ZoneMinder configuration for Apache web server
+Requires: %{name}-common%{?_isa} = %{version}-%{release}
+Requires: httpd
+Requires: php
+
+Conflicts: %{name}-nginx
+
+%description httpd
ZoneMinder is a set of applications which is intended to provide a complete
solution allowing you to capture, analyze, record and monitor any cameras you
have attached to a Linux based machine. It is designed to run on kernels which
@@ -129,15 +159,37 @@ attached to BTTV cards, various USB cameras and IP network cameras.
It is
designed to support as many cameras as you can attach to your computer without
too much degradation of performance.
+This sub-package contains configuration specific to Apache web server
+
+%package nginx
+Summary: ZoneMinder configuration for Nginx web server
+Requires: %{name}-common%{?_isa} = %{version}-%{release}
+Requires: nginx
+Requires: php-fpm
+Requires: fcgiwrap
+
+Conflicts: %{name}-httpd
+
+%description nginx
+ZoneMinder is a set of applications which is intended to provide a complete
+solution allowing you to capture, analyze, record and monitor any cameras you
+have attached to a Linux based machine. It is designed to run on kernels which
+support the Video For Linux (V4L) interface and has been tested with cameras
+attached to BTTV cards, various USB cameras and IP network cameras. It is
+designed to support as many cameras as you can attach to your computer without
+too much degradation of performance.
+
+This sub-package contains support for ZoneMinder with the Nginx web server
+
%prep
-%autosetup -p 1 -a 1 -n ZoneMinder-%{version}
-%{__rm} -rf ./web/api/app/Plugin/Crud
-%{__mv} -f crud-%{crud_version} ./web/api/app/Plugin/Crud
+%autosetup -p 1 -a 1
+rm -rf ./web/api/app/Plugin/Crud
+mv -f crud-%{crud_version} ./web/api/app/Plugin/Crud
# The all powerful autosetup macro does not work after the second source tarball
-%{__gzip} -dc %{_sourcedir}/cakephp-enum-behavior-%{ceb_version}.tar.gz | tar -xvvf -
-%{__rm} -rf ./web/api/app/Plugin/CakePHP-Enum-Behavior
-%{__mv} -f CakePHP-Enum-Behavior-%{ceb_version}
./web/api/app/Plugin/CakePHP-Enum-Behavior
+gzip -dc %{_sourcedir}/cakephp-enum-behavior-%{ceb_version}.tar.gz | tar -xvvf -
+rm -rf ./web/api/app/Plugin/CakePHP-Enum-Behavior
+mv -f CakePHP-Enum-Behavior-%{ceb_version} ./web/api/app/Plugin/CakePHP-Enum-Behavior
# Change the following default values
./utils/zmeditconfigdata.sh ZM_OPT_CAMBOZOLA yes
@@ -150,7 +202,7 @@ too much degradation of performance.
%build
%cmake3 \
-DZM_WEB_USER="%{zmuid_final}" \
- -DZM_WEB_GROUP="%{zmuid_final}" \
+ -DZM_WEB_GROUP="%{zmgid_final}" \
-DZM_TARGET_DISTRO="%{zmtargetdistro}" \
.
@@ -172,10 +224,13 @@ find %{buildroot} \( -name .htaccess -or -name .editorconfig -or
-name .packlist
find %{buildroot}%{_datadir}/zoneminder/www/api \( -name cake -or -name cake.php \) -type
f -exec sed -i 's\^#!/usr/bin/env bash$\#!%{_buildshell}\' {} \; -exec %{__chmod}
755 {} \;
# Use the system cacert file rather then the one bundled with CakePHP
-%{__rm} -f %{buildroot}%{_datadir}/zoneminder/www/api/lib/Cake/Config/cacert.pem
-%{__ln_s} ../../../../../../../..%{_sysconfdir}/pki/tls/certs/ca-bundle.crt
%{buildroot}%{_datadir}/zoneminder/www/api/lib/Cake/Config/cacert.pem
+rm -f %{buildroot}%{_datadir}/zoneminder/www/api/lib/Cake/Config/cacert.pem
+ln -s ../../../../../../../..%{_sysconfdir}/pki/tls/certs/ca-bundle.crt
%{buildroot}%{_datadir}/zoneminder/www/api/lib/Cake/Config/cacert.pem
-%post
+# Handle the polkit file differently for web server agnostic support (see post)
+rm -f %{buildroot}%{_datadir}/polkit-1/rules.d/com.zoneminder.systemctl.rules
+
+%post common
# Initial installation
if [ $1 -eq 1 ] ; then
%systemd_post %{name}.service
@@ -183,28 +238,48 @@ fi
# Upgrade from a previous version of zoneminder
if [ $1 -eq 2 ] ; then
-
# Add any new PTZ control configurations to the database (will not overwrite)
%{_bindir}/zmcamtool.pl --import >/dev/null 2>&1 || :
# Freshen the database
%{_bindir}/zmupdate.pl -f >/dev/null 2>&1 || :
-
- # We can't run this automatically when new sql account permissions need to
- # be manually added first
- # Run zmupdate non-interactively
- # zmupdate.pl --nointeractive
fi
+# Warn the end user to read the README file
+echo -e "\nVERY IMPORTANT: Before starting ZoneMinder, you must read the README
file\nto finish the installation or upgrade!"
+echo -e "\nThe README file is located here: %{_pkgdocdir}-common/README\n"
+
+%post httpd
+# For the case of changing from nginx <-> httpd, files in these folders must change
ownership if they exist
+%{_bindir}/chown -R %{zmuid_final}:%{zmgid_final} %{_sharedstatedir}/php/session/*
>/dev/null 2>&1 || :
+%{_bindir}/chown -R %{zmuid_final}:%{zmgid_final} %{_localstatedir}/log/zoneminder/*
>/dev/null 2>&1 || :
+
+ln -sf %{_sysconfdir}/zm/www/com.zoneminder.systemctl.rules.httpd
%{_datadir}/polkit-1/rules.d/com.zoneminder.systemctl.rules
+# backwards compatibility
+ln -sf %{_sysconfdir}/zm/www/zoneminder.httpd.conf %{_sysconfdir}/zm/www/zoneminder.conf
+
# Allow zoneminder access to local video sources, serial ports, and x10
%{_bindir}/gpasswd -a %{zmuid_final} video >/dev/null 2>&1 || :
%{_bindir}/gpasswd -a %{zmuid_final} dialout >/dev/null 2>&1 || :
-# Warn the end user to read the README file
-echo -e "\nVERY IMPORTANT: Before starting ZoneMinder, you must read the README
file\nto finish the installation or upgrade!"
-echo -e "\nThe README file is located here: %{_pkgdocdir}/README\n"
+%post nginx
+
+# Php package owns the session folder and sets group ownership to apache account
+# We could override the folder permission, but adding nginx to the apache group works
better
+%{_bindir}/gpasswd -a nginx apache >/dev/null 2>&1 || :
+
+# For the case of changing from httpd <-> nginx, files in these folders must change
ownership if they exist
+%{_bindir}/chown -R nginx:nginx %{_sharedstatedir}/php/session/* >/dev/null
2>&1 || :
+%{_bindir}/chown -R nginx:nginx %{_localstatedir}/log/zoneminder/* >/dev/null
2>&1 || :
+
+ln -sf %{_sysconfdir}/zm/www/com.zoneminder.systemctl.rules.nginx
%{_datadir}/polkit-1/rules.d/com.zoneminder.systemctl.rules
+# backwards compatibility
+ln -sf %{_sysconfdir}/zm/www/zoneminder.nginx.conf %{_sysconfdir}/zm/www/zoneminder.conf
+
+# Allow zoneminder access to local video sources, serial ports, and x10
+%{_bindir}/gpasswd -a nginx video >/dev/null 2>&1 || :
+%{_bindir}/gpasswd -a nginx dialout >/dev/null 2>&1 || :
-%if 0%{?with_nginx}
# Nginx does not create an SSL certificate like the apache package does so lets do that
here
if [ -f %{sslkey} -o -f %{sslcert} ]; then
exit 0
@@ -230,7 +305,6 @@ SomeOrganizationalUnit
${FQDN}
root@${FQDN}
EOF
-%endif
%preun
%systemd_preun %{name}.service
@@ -238,19 +312,12 @@ EOF
%postun
%systemd_postun_with_restart %{name}.service
-%triggerun -- zoneminder < 1.25.0-4
-# Save the current service runlevel info
-# User must manually run systemd-sysv-convert --apply zoneminder
-# to migrate them to systemd targets
-%{_bindir}/systemd-sysv-convert --save zoneminder >/dev/null 2>&1 ||:
-
-# Run these because the SysV package being removed won't do them
-/sbin/chkconfig --del zoneminder >/dev/null 2>&1 || :
-/bin/systemctl try-restart zoneminder.service >/dev/null 2>&1 || :
-
%files
+# nothing
+
+%files common
%license COPYING
-%doc AUTHORS README.md distros/redhat/readme/README distros/redhat/readme/README.https
+%doc AUTHORS README.md distros/redhat/readme/README distros/redhat/readme/README.httpd
distros/redhat/readme/README.nginx distros/redhat/readme/README.https
# We want these two folders to have "normal" read permission
# compared to the folder contents
@@ -260,21 +327,11 @@ EOF
# Config folder contents contain sensitive info
# and should not be readable by normal users
%{_sysconfdir}/zm/conf.d/README
-%config(noreplace) %attr(640,root,%{zmgid_final}) %{_sysconfdir}/zm/zm.conf
-%config(noreplace) %attr(640,root,%{zmgid_final}) %{_sysconfdir}/zm/conf.d/*.conf
-%ghost %attr(640,root,%{zmgid_final}) %{_sysconfdir}/zm/conf.d/zmcustom.conf
-%config(noreplace) %attr(644,root,root) /etc/zm/www/zoneminder.conf
%config(noreplace) %{_sysconfdir}/logrotate.d/zoneminder
-%if 0%{?with_nginx}
-%config(noreplace) %{_sysconfdir}/php-fpm.d/zoneminder.conf
-%endif
-
-%{_tmpfilesdir}/zoneminder.conf
%{_unitdir}/zoneminder.service
%{_datadir}/polkit-1/actions/com.zoneminder.systemctl.policy
-%{_datadir}/polkit-1/rules.d/com.zoneminder.systemctl.rules
%{_bindir}/zmsystemctl.pl
%{_bindir}/zma
@@ -305,8 +362,19 @@ EOF
%{_libexecdir}/zoneminder/
%{_datadir}/zoneminder/
-%{_datadir}/applications/*%{name}.desktop
+%{_datadir}/applications/*zoneminder.desktop
+
+%files httpd
+%config(noreplace) %attr(640,root,%{zmgid_final}) %{_sysconfdir}/zm/zm.conf
+%config(noreplace) %attr(640,root,%{zmgid_final}) %{_sysconfdir}/zm/conf.d/0*.conf
+%ghost %attr(640,root,%{zmgid_final}) %{_sysconfdir}/zm/conf.d/zmcustom.conf
+%config(noreplace) %{_sysconfdir}/zm/www/zoneminder.httpd.conf
+%ghost %{_sysconfdir}/zm/www/zoneminder.conf
+%config(noreplace) %{_sysconfdir}/zm/www/com.zoneminder.systemctl.rules.httpd
+%ghost %{_datadir}/polkit-1/rules.d/com.zoneminder.systemctl.rules
+%{_unitdir}/zoneminder.service.d/zm-httpd.conf
+%{_tmpfilesdir}/zoneminder.httpd.tmpfiles.conf
%dir %attr(755,%{zmuid_final},%{zmgid_final}) %{_sharedstatedir}/zoneminder
%dir %attr(755,%{zmuid_final},%{zmgid_final}) %{_sharedstatedir}/zoneminder/events
%dir %attr(755,%{zmuid_final},%{zmgid_final}) %{_sharedstatedir}/zoneminder/images
@@ -316,9 +384,37 @@ EOF
%dir %attr(755,%{zmuid_final},%{zmgid_final}) %{_localstatedir}/cache/zoneminder
%dir %attr(755,%{zmuid_final},%{zmgid_final}) %{_localstatedir}/log/zoneminder
%dir %attr(755,%{zmuid_final},%{zmgid_final}) %{_localstatedir}/spool/zoneminder-upload
-%dir %attr(755,%{zmuid_final},%{zmgid_final}) %{_localstatedir}/run/zoneminder
+
+%files nginx
+%config(noreplace) %attr(640,root,nginx) %{_sysconfdir}/zm/zm.conf
+%config(noreplace) %attr(640,root,nginx) %{_sysconfdir}/zm/conf.d/*.conf
+%ghost %attr(640,root,nginx) %{_sysconfdir}/zm/conf.d/zmcustom.conf
+%config(noreplace) %{_sysconfdir}/zm/www/zoneminder.nginx.conf
+%config(noreplace) %{_sysconfdir}/zm/www/redirect.nginx.conf
+%ghost %{_sysconfdir}/zm/www/zoneminder.conf
+%config(noreplace) %{_sysconfdir}/zm/www/com.zoneminder.systemctl.rules.nginx
+%ghost %{_datadir}/polkit-1/rules.d/com.zoneminder.systemctl.rules
+
+%config(noreplace) %{_sysconfdir}/php-fpm.d/zoneminder.php-fpm.conf
+
+
+%{_unitdir}/zoneminder.service.d/zm-nginx.conf
+%{_tmpfilesdir}/zoneminder.nginx.tmpfiles.conf
+%dir %attr(755,nginx,nginx) %{_sharedstatedir}/zoneminder
+%dir %attr(755,nginx,nginx) %{_sharedstatedir}/zoneminder/events
+%dir %attr(755,nginx,nginx) %{_sharedstatedir}/zoneminder/images
+%dir %attr(755,nginx,nginx) %{_sharedstatedir}/zoneminder/sock
+%dir %attr(755,nginx,nginx) %{_sharedstatedir}/zoneminder/swap
+%dir %attr(755,nginx,nginx) %{_sharedstatedir}/zoneminder/temp
+%dir %attr(755,nginx,nginx) %{_localstatedir}/cache/zoneminder
+%dir %attr(755,nginx,nginx) %{_localstatedir}/log/zoneminder
+%dir %attr(755,nginx,nginx) %{_localstatedir}/spool/zoneminder-upload
%changelog
+* Sat Dec 08 2018 Andrew Bauer <zonexpertconsulting(a)outlook.com> - 1.32.3-1
+- 1.32.3 Release
+- Break into sub-packages
+
* Tue Nov 13 2018 Antonio Trande <sagitter(a)fedoraproject.org> - 1.32.2-2
- Rebuild for ffmpeg-3.4.5 on el7
- Use CMake3