pkgsrc-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[pkgsrc/trunk]: pkgsrc/security/zoneminder zoneminder: Update to 1.30.5



details:   https://anonhg.NetBSD.org/pkgsrc/rev/c3adf0569c52
branches:  trunk
changeset: 385827:c3adf0569c52
user:      gdt <gdt%pkgsrc.org@localhost>
date:      Tue Sep 27 01:20:39 2022 +0000

description:
zoneminder: Update to 1.30.5

Welcome to 2016.

MESSAGE content has been moved to an installed README and improved.

Prepared in wip by dsainty@ with some help from gdt@.

Upstream NEWS

Onvif discovery is now enabled by default. This features increases
build time, but the benefit is auto-discovery of any Onvif compliant
camera. Please note that this feature is still experimental. It has
not been tested in a large environment or with a large variety of
cameras. Using this tool is largely self explanatory, but if you are
looking for documentation it can be found on the @altaroca ’s blog
site. As time allows, we will bring the documentation over to our
readthedocs site. Volunteers to do this work are welcome.

ZoneMinder now has a telemetry deamon which collects information about
your machine. This was done to learn how our user base uses
ZoneMinder, the most common system size, choice of distro, cpu,
memory, and a couple of other things. This will help us focus our
efforts on what features get used the most. Since this was written in
Perl, you can easily see for yourself what information is being
sent. Note that this feature defaults to ON. If this is not what you
want, then you can turn it off under Options. In a future release, we
plan to include an install wizard, which will prompt the user about
this feature.

Have you ever wished for the motion detection zones to be live, rather
than a static image? Well they are now! Creating or modifying zones
works exactly the same as before, but with the live stream running in
the background. If you need to freeze the stream, there is a Pause
button at the bottom of the window to do just that.

A new feature called Montage Review has been added. This can be
thought of as a modified version of the original montage feature with
features such as "scrubbing" through video. The Montage Review screen
has received sufficient testing to be part of the release, but you
should still treat this feature as experimental. We expect there to be
additional fixes and refinements.

diffstat:

 security/zoneminder/DESCR                                                            |     3 +
 security/zoneminder/MESSAGE                                                          |    49 -
 security/zoneminder/Makefile                                                         |   125 +-
 security/zoneminder/PLIST                                                            |  7824 +++++++++-
 security/zoneminder/distinfo                                                         |    48 +-
 security/zoneminder/files/README-pkgsrc.md                                           |    44 +
 security/zoneminder/patches/patch-CMakeLists.txt                                     |    53 +
 security/zoneminder/patches/patch-Makefile_am                                        |    27 -
 security/zoneminder/patches/patch-cmake_Modules_Pod2Man.cmake                        |    19 +
 security/zoneminder/patches/patch-configure_ac                                       |   146 -
 security/zoneminder/patches/patch-scripts_ZoneMinder_lib_ZoneMinder_ConfigData.pm.in |    28 +
 security/zoneminder/patches/patch-scripts_ZoneMinder_lib_ZoneMinder_General_pm       |    43 +-
 security/zoneminder/patches/patch-scripts_ZoneMinder_lib_ZoneMinder_Memory_Shared.pm |     2 +-
 security/zoneminder/patches/patch-scripts_zm_in                                      |     2 +-
 security/zoneminder/patches/patch-scripts_zmpkg_pl_in                                |    20 +
 security/zoneminder/patches/patch-src_Makefile_am                                    |    15 -
 security/zoneminder/patches/patch-src_zm__event.cpp                                  |   104 +-
 security/zoneminder/patches/patch-src_zm__monitor.cpp                                |    55 +-
 security/zoneminder/patches/patch-src_zm__rtp__ctrl.h                                |    20 +-
 security/zoneminder/patches/patch-src_zm__rtp__source.cpp                            |    34 +-
 security/zoneminder/patches/patch-src_zm__sdp.cpp                                    |    15 -
 security/zoneminder/patches/patch-src_zm__thread.h                                   |    87 +-
 security/zoneminder/patches/patch-src_zm__timer.h                                    |    28 +-
 security/zoneminder/patches/patch-src_zm__utils.cpp                                  |    26 +-
 security/zoneminder/patches/patch-src_zm__utils.h                                    |     2 +-
 security/zoneminder/patches/patch-src_zm_comms_cpp                                   |     2 +-
 security/zoneminder/patches/patch-src_zm_logger_cpp                                  |    68 +-
 security/zoneminder/patches/patch-src_zm_signal_cpp                                  |    24 +-
 security/zoneminder/patches/patch-src_zm_thread_cpp                                  |    42 +-
 security/zoneminder/patches/patch-src_zmc_cpp                                        |    24 +-
 security/zoneminder/patches/patch-src_zmf.cpp                                        |    20 +-
 security/zoneminder/patches/patch-src_zmu.cpp                                        |    98 +-
 security/zoneminder/patches/patch-web_Makefile.am                                    |    15 -
 33 files changed, 8107 insertions(+), 1005 deletions(-)

diffs (truncated from 9684 to 300 lines):

diff -r bfec2ff9ea4a -r c3adf0569c52 security/zoneminder/DESCR
--- a/security/zoneminder/DESCR Mon Sep 26 20:32:19 2022 +0000
+++ b/security/zoneminder/DESCR Tue Sep 27 01:20:39 2022 +0000
@@ -8,3 +8,6 @@
 as a DIY home video security system and for commercial or professional video
 security and surveillance.  It can also be integrated into a home automation
 system via X.10 or other protocols.
+
+Users are cautioned that this release is old and that it is a bit
+cantankerous to get running.
diff -r bfec2ff9ea4a -r c3adf0569c52 security/zoneminder/MESSAGE
--- a/security/zoneminder/MESSAGE       Mon Sep 26 20:32:19 2022 +0000
+++ /dev/null   Thu Jan 01 00:00:00 1970 +0000
@@ -1,49 +0,0 @@
-===========================================================================
-$NetBSD: MESSAGE,v 1.5 2021/12/31 12:07:55 dsainty Exp $
-
-All documentation for ZoneMinder is now online at:
-
-  https://www.zoneminder.com
-
-
-Performance:
-
-  ZoneMinder benefits dramatically from using libjpeg-turbo.  Consider
-  building from Pkgsrc with:
-
-  JPEG_DEFAULT=libjpeg-turbo
-
-
-To get ZoneMinder started a MySQL database is required.
-
-First, create a MySQL user "zmuser":
-
-echo "create user 'zmuser'@'localhost' identified by 'zmpass';" | mysql -u root
-
-The default password is "zmpass".  You may change this to something else, and
-update ZM_DB_PASS in ${PKG_SYSCONFDIR}/zm.conf.
-
-
-Create the initial database via:
-
-  mysql -u root < ${PREFIX}/share/zoneminder/db/zm_create.sql
-
-
-Assign rights to the "zmuser" user via:
-
-  echo "grant all on * to 'zmuser';" | mysql -u root zm
-
-
-Upgrade a database from an older version of ZoneMinder via:
-
-  zmupdate.pl -u root [-p <password>]
-
-
-To enable the web interface via Apache, add the following line to httpd.conf:
-
-  Include ${PREFIX}/share/examples/zoneminder/apache/zoneminder.conf
-
-PHP may log warnings if the PHP date.timezone configuration is not set.
-Consider assigning a default system time zone to date.timezone in
-${PKG_SYSCONFDIR}/php.ini.
-===========================================================================
diff -r bfec2ff9ea4a -r c3adf0569c52 security/zoneminder/Makefile
--- a/security/zoneminder/Makefile      Mon Sep 26 20:32:19 2022 +0000
+++ b/security/zoneminder/Makefile      Tue Sep 27 01:20:39 2022 +0000
@@ -1,10 +1,11 @@
-# $NetBSD: Makefile,v 1.61 2022/06/28 11:35:52 wiz Exp $
+# $NetBSD: Makefile,v 1.62 2022/09/27 01:20:39 gdt Exp $
 
-VERSION=       1.29.0
+#VERSION=      1.36.7
+VERSION=       1.30.5
+PKGREVISION=   2
 # Sometimes the distfile unpacks to ZoneMinder and sometimes zoneminder.
 NAME_DIST=     ZoneMinder
 NAME_LOWER=    zoneminder
-PKGREVISION=   10
 
 PKGNAME=       ${DISTNAME:S/${NAME_DIST}-/${NAME_LOWER}-/}
 DISTNAME=      ${NAME_DIST}-${VERSION}
@@ -13,9 +14,13 @@
 MASTER_SITES=  ${MASTER_SITE_GITHUB:=${NAME_DIST}/}
 GITHUB_PROJECT=        ${NAME_DIST}
 GITHUB_TYPE=   tag
-GITHUB_TAG=    v${PKGVERSION_NOREV}
+GITHUB_TAG=    ${PKGVERSION_NOREV}
+
+# Submodules as per ZoneMinder's .gitmodules file
+GITHUB_SUBMODULES=     FriendsOfCake crud v3.0.10 web/api/app/Plugin/Crud
 
 MAINTAINER=    dsainty%NetBSD.org@localhost
+#MAINTAINER+=  gdt%NetBSD.org@localhost
 HOMEPAGE=      https://www.zoneminder.com/
 COMMENT=       Video camera security and surveillance solution
 LICENSE=       gnu-gpl-v2
@@ -23,8 +28,6 @@
 # NetBSD tar: Invalid header, starting valid header search.
 EXTRACT_USING= gtar
 
-DEPENDS+=      netpbm-[0-9]*:../../graphics/netpbm
-
 # ZoneMinder 1.29.0 seems to work fine on at least PHP 5.6 and 7.4.
 # Under PHP 8.0 it is logging at Error level type errors out of skin.js.
 # Under PHP 8.1 it is logging at Panic level that strftime is deprecated.
@@ -36,9 +39,9 @@
 
 .include "../../mk/bsd.options.mk"
 
-GNU_CONFIGURE= yes
+USE_CMAKE=     yes
 USE_LANGUAGES= c c++
-USE_TOOLS+=    aclocal autoconf autoheader automake gmake perl pkg-config
+USE_TOOLS+=    gmake perl pkg-config
 
 # zoneminder can depend on a number of perl modules depending on
 # configuration.  We take the view that if an installation can be
@@ -56,10 +59,15 @@
 DEPENDS+=      p5-MIME-tools-[0-9]*:../../mail/p5-MIME-tools
 DEPENDS+=      p5-Net-SFTP-Foreign-[0-9]*:../../net/p5-Net-SFTP-Foreign
 DEPENDS+=      p5-PHP-Serialization-[0-9]*:../../devel/p5-PHP-Serialization
+DEPENDS+=      p5-Sys-Mmap-[0-9]*:../../devel/p5-Sys-Mmap
 #DEPENDS+=     {perl>=5.7.3,p5-Time-HiRes-[0-9]*}:../../time/p5-Time-HiRes
 DEPENDS+=      p5-libwww-[0-9]*:../../www/p5-libwww
 
+# \todo: Decide to drop CONFIGURE_ARGS, validating that each has been
+# turned into cmake, once we are at a zoneminder version that does not
+# support autoconf (which maybe we are at already!).
 CONFIGURE_ARGS+=       --sysconfdir=${PKG_SYSCONFDIR}
+CMAKE_ARGS+=           -DZM_CONFIG_DIR=${PKG_SYSCONFDIR}
 
 ZM_HTTPD_ROOT=         share/zoneminder/htdocs
 PLIST_SUBST+=          ZM_HTTPD_ROOT=${ZM_HTTPD_ROOT:Q}
@@ -72,33 +80,48 @@
 BUILD_DEFS+=           ZM_HTTPD_CGIBIN
 OWN_DIRS+=             ${ZM_HTTPD_CGIBIN:Q}
 
-# Omit patchfiles from PLIST.
-PRINT_PLIST_AWK+=      /.orig$$/ { next; }
-
 INSTALLATION_DIRS+=    share/zoneminder ${ZM_HTTPD_ROOT}
 INSTALLATION_DIRS+=    libexec/zoneminder ${ZM_HTTPD_CGIBIN}
 
 BUILD_DEFS+=           VARBASE
 CONFIGURE_ARGS+=       --with-webdir=${PREFIX}/${ZM_HTTPD_ROOT:Q}
+CMAKE_ARGS+=           -DZM_WEBDIR=${PREFIX}/${ZM_HTTPD_ROOT:Q}
 CONFIGURE_ARGS+=       --with-cgidir=${PREFIX}/${ZM_HTTPD_CGIBIN:Q}
+CMAKE_ARGS+=           -DZM_CGIDIR=${PREFIX}/${ZM_HTTPD_CGIBIN:Q}
 CONFIGURE_ARGS+=       --with-mysql=${BUILDLINK_PREFIX.mysql-client}
 CONFIGURE_ARGS+=       --localstatedir=${VARBASE}
+CMAKE_ARGS+=           -DZM_RUNDIR=${VARBASE}/run/zm
+CMAKE_ARGS+=           -DZM_SOCKDIR=${VARBASE}/run/zm
+CMAKE_ARGS+=           -DZM_TMPDIR=${VARBASE}/tmp/zm
+CMAKE_ARGS+=           -DZM_LOGDIR=${VARBASE}/log/zm
 
 # PolicyKit doesn't actually seem to be necessary.  This hack disables
 # configure's hunt for PolicyKit, but has no other apparent ill effects.
+# cmake needs an almost identical hack - though resorting to patching might
+# be safer.
 CONFIGURE_ENV+=                POLKIT_CFLAGS=" " POLKIT_LIBS=" "
+CMAKE_ARGS+=           -DPOLKIT_LIBRARIES=" " -DPOLKIT_INCLUDE_DIR=" "
 
 PTHREAD_AUTO_VARS=     yes
 .include "../../mk/pthread.buildlink3.mk"
 
-CONFIGURE_ENV+=                OPT_NETPBM=yes
-CONFIGURE_ENV+=                PATH_NETPBM=${PREFIX}/bin/pnmscale
-
+# This should probably be ffmpeg4 at least.  Defer until up-to-date.
 .include "../../multimedia/ffmpeg2/buildlink3.mk"
 CONFIGURE_ARGS+=       --with-ffmpeg=${BUILDLINK_PREFIX.ffmpeg2}
 CONFIGURE_ENV+=                PATH_FFMPEG=${BUILDLINK_PREFIX.ffmpeg2}/bin/ffmpeg2
 CONFIGURE_ENV+=                OPT_FFMPEG=yes
 
+.if ${OPSYS} == "Darwin"
+SOEXT= dylib
+.else
+SOEXT= so
+.endif
+
+.for lib in AVFORMAT AVCODEC AVDEVICE AVUTIL SWSCALE
+CMAKE_ARGS+=   -D${lib}_INCLUDE_DIR=${BUILDLINK_PREFIX.ffmpeg2}/include/ffmpeg2
+CMAKE_ARGS+=   -D${lib}_LIBRARIES=${BUILDLINK_PREFIX.ffmpeg2}/lib/ffmpeg2/lib${lib:tl}.${SOEXT}
+.endfor
+
 # The backtrace requires Linux's unportable <execinfo.h> header.
 CONFIGURE_ARGS+=       --enable-crashtrace=no
 
@@ -115,6 +138,10 @@
 # Since MySQL uses openssl, use the same library instead of defaulting to
 # gnutls.
 CONFIGURE_ENV+=                ZM_SSL_LIB=openssl
+CMAKE_ARGS+=           -DGNUTLS_LIBRARIES=""
+
+# Make sure cmake doesn't think libgcrypt is available (We have OpenSSL)
+CMAKE_ARGS+=           -DGCRYPT_LIBRARIES=""
 
 # Control where run-time state (PID file and sockets) get stored.
 # Default is "/var/run/zm", but we want to conform to VARBASE.
@@ -139,11 +166,14 @@
 MAKE_DIRS_PERMS+=      ${VARBASE}/run/zm ${REAL_ROOT_USER} ${APACHE_GROUP} 775
 
 CONFIGURE_ARGS+=       --with-webuser=${APACHE_USER}
+CMAKE_ARGS+=           -DZM_WEB_USER=${APACHE_USER}
 CONFIGURE_ARGS+=       --with-webgroup=${APACHE_GROUP}
+CMAKE_ARGS+=           -DZM_WEB_GROUP=${APACHE_GROUP}
 
 # If we're using Apache we're going to need PHP, and PHP extensions.
 .include "../../lang/php/phpversion.mk"
 DEPENDS+=      ${APACHE_PKG_PREFIX}-${PHP_PKG_PREFIX}-[0-9]*:../../www/ap-php
+DEPENDS+=      ${PHP_PKG_PREFIX}-gd-[0-9]*:../../graphics/php-gd
 DEPENDS+=      ${PHP_PKG_PREFIX}-pdo_mysql-[0-9]*:../../databases/php-pdo_mysql
 DEPENDS+=      ${PHP_PKG_PREFIX}-sockets-[0-9]*:../../net/php-sockets
 .endif
@@ -155,19 +185,27 @@
 OWN_DIRS_PERMS+=       ${ZM_CACHE}/temp ${REAL_ROOT_USER} ${APACHE_GROUP} 775
 OWN_DIRS_PERMS+=       ${ZM_CACHE}/images ${REAL_ROOT_USER} ${APACHE_GROUP} 775
 OWN_DIRS_PERMS+=       ${ZM_CACHE}/events ${REAL_ROOT_USER} ${APACHE_GROUP} 775
+CMAKE_ARGS+=           -DZM_CONTENTDIR=${ZM_CACHE}
 
-REPLACE_PERL+= scripts/zmaudit.pl.in
-REPLACE_PERL+= scripts/zmcamtool.pl.in
-REPLACE_PERL+= scripts/zmcontrol.pl.in
-REPLACE_PERL+= scripts/zmdc.pl.in
-REPLACE_PERL+= scripts/zmfilter.pl.in
-REPLACE_PERL+= scripts/zmpkg.pl.in
-REPLACE_PERL+= scripts/zmtrack.pl.in
-REPLACE_PERL+= scripts/zmtrigger.pl.in
-REPLACE_PERL+= scripts/zmupdate.pl.in
-REPLACE_PERL+= scripts/zmvideo.pl.in
-REPLACE_PERL+= scripts/zmwatch.pl.in
-REPLACE_PERL+= scripts/zmx10.pl.in
+# ZoneMinder scripts needing Perl $PATH patching AND interpreter patching
+ZM_REPLACE_PERL+=      scripts/zmaudit.pl.in
+ZM_REPLACE_PERL+=      scripts/zmcamtool.pl.in
+ZM_REPLACE_PERL+=      scripts/zmcontrol.pl.in
+ZM_REPLACE_PERL+=      scripts/zmdc.pl.in
+ZM_REPLACE_PERL+=      scripts/zmfilter.pl.in
+ZM_REPLACE_PERL+=      scripts/zmpkg.pl.in
+ZM_REPLACE_PERL+=      scripts/zmtelemetry.pl.in
+ZM_REPLACE_PERL+=      scripts/zmtrack.pl.in
+ZM_REPLACE_PERL+=      scripts/zmtrigger.pl.in
+ZM_REPLACE_PERL+=      scripts/zmupdate.pl.in
+ZM_REPLACE_PERL+=      scripts/zmvideo.pl.in
+ZM_REPLACE_PERL+=      scripts/zmwatch.pl.in
+ZM_REPLACE_PERL+=      scripts/zmx10.pl.in
+
+# ZoneMinder scripts needing interpreter patching
+REPLACE_PERL+= ${ZM_REPLACE_PERL}
+REPLACE_PERL+= onvif/scripts/zmonvif-probe.pl
+REPLACE_PERL+= zmconfgen.pl.in
 
 #
 # The intention of zmsystemctl.pl is to use bin/pkexec to allow the
@@ -206,7 +244,7 @@
 SUBST_CLASSES+=                        script-path
 SUBST_MESSAGE.script-path=     Adjusting paths in scripts.
 SUBST_STAGE.script-path=       pre-configure
-SUBST_FILES.script-path=       ${REPLACE_PERL} ${EXTRA_PERL}
+SUBST_FILES.script-path=       ${ZM_REPLACE_PERL}
 SUBST_SED.script-path=         -e "s|^\\([\$$]ENV{PATH} *= *'\\).*';\$$|\\1${PREFIX}/bin:/bin:/usr/bin';|g"
 
 SUBST_CLASSES+=                files
@@ -227,29 +265,44 @@
 LIBS+=         -lexecinfo
 .endif
 
+# Avoid conflict with C++20 <version> - intertwined with patch-CMakeLists.txt
 post-extract:
        ${CP} ${FILESDIR}/zoneminder.conf ${WRKSRC}/zoneminder.conf
+       ${MV} ${WRKSRC}/version ${WRKSRC}/version.txt
 
+# Omit patchfiles from PLIST if present.  The pre-configure step below
+# should prevent this from being necessary.
+PRINT_PLIST_AWK+=      /.orig$$/ { next; }
+
+# After patching remove any .orig files because (for patched .pm files) they
+# end up going through the installation process.
 pre-configure:
-       set -e; cd ${WRKSRC}; \
-       aclocal; autoheader; automake -a --foreign -i; autoconf
+       ${FIND} ${WRKSRC} -name "*.pm*.orig" -type f | ${XARGS} ${RM} -f
 
 #
 # Arrange for module.mk to perform its magic here on top of the non-Perl
 # build tasks.
 #
+# Set ZM_PERL_MM_PARMS in order to inhibit NO_PACKLIST
+#
 PERL5_REQD+=           5.6.0
-PERL5_CONFIGURE=       no
-PERL5_CONFIGURE_DIRS=  ${WRKSRC}/scripts/ZoneMinder
-PERL5_PACKLIST=                auto/ZoneMinder/.packlist
-.include "../../lang/perl5/module.mk"
+#PERL5_CONFIGURE=      no
+#PERL5_CONFIGURE_DIRS= ${WRKSRC}/scripts/ZoneMinder
+#PERL5_CONFIGURE_DIRS+=        ${WRKSRC}/onvif/proxy
+#PERL5_CONFIGURE_DIRS+=        ${WRKSRC}/onvif/modules
+#PERL5_PACKLIST=       auto/ZoneMinder/.packlist
+#PERL5_PACKLIST+=      auto/ONVIF/.packlist


Home | Main Index | Thread Index | Old Index