aboutsummaryrefslogtreecommitdiff
path: root/system/ZoneMinder
diff options
context:
space:
mode:
authorDaniel Prosser <dpross1100@msn.com>2019-02-02 13:06:00 +0700
committerWilly Sudiarto Raharjo <willysr@slackbuilds.org>2019-02-02 13:06:35 +0700
commit456778929061018fc3863544e1fb1b455f59fd9b (patch)
treeb1848cbbbe7b8244e0637090c03d3f7ec2293dd5 /system/ZoneMinder
parent76efbc5d1256d97e8243874983a3d3ddee6012c1 (diff)
system/ZoneMinder: Update script.
Signed-off-by: Willy Sudiarto Raharjo <willysr@slackbuilds.org>
Diffstat (limited to 'system/ZoneMinder')
-rw-r--r--system/ZoneMinder/README9
-rw-r--r--system/ZoneMinder/ZoneMinder.SlackBuild12
-rw-r--r--system/ZoneMinder/ZoneMinder.info2
-rw-r--r--system/ZoneMinder/fix_video_file_format.patch11
-rw-r--r--system/ZoneMinder/fix_zone_area_calc.patch35
5 files changed, 62 insertions, 7 deletions
diff --git a/system/ZoneMinder/README b/system/ZoneMinder/README
index ae660257489f0..44db1da50e9a0 100644
--- a/system/ZoneMinder/README
+++ b/system/ZoneMinder/README
@@ -7,9 +7,10 @@ be controlled via web or semi-automatically using a variety of
protocols. It can also be integrated into a home automation system
via X.10 or other protocols. This build includes cambozola and jscalendar.
-Optional dependencies are perl-Archive-Zip (automatic event uploading),
-perl-X10 (integration with X10-based home automation), perl-Device-SerialPort
-(RS232/RS485 PTZ camera control), perl-MIME-Lite, and perl-MIME-Entity
-(automatic event mail notification).
+Optional dependencies are php-apcu (to enable the ZoneMinder API),
+perl-Archive-Zip (automatic event uploading), perl-X10 (integration with
+X10-based home automation), perl-Device-SerialPort (RS232/RS485 PTZ camera
+control), perl-MIME-Lite, and perl-MIME-Entity (automatic event mail
+notification).
See README.SLACKWARE for configuration information.
diff --git a/system/ZoneMinder/ZoneMinder.SlackBuild b/system/ZoneMinder/ZoneMinder.SlackBuild
index 1423b69fc443d..222d092dc5278 100644
--- a/system/ZoneMinder/ZoneMinder.SlackBuild
+++ b/system/ZoneMinder/ZoneMinder.SlackBuild
@@ -34,6 +34,7 @@ DOCGRP=${DOCGRP:-apache}
DOCROOT=${DOCROOT:-"/srv/httpd/htdocs/zm"}
CGIROOT=${CGIROOT:-"/srv/httpd/cgi-bin"}
CACHEDIR=${CACHEDIR:-"/var/cache/ZoneMinder"}
+CONTENTDIR=${CONTENTDIR:-"/var/lib/ZoneMinder"}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -80,6 +81,12 @@ find -L . \
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
-o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+# Fails to encode mp4 videos without this patch
+patch -p0 < $CWD/fix_video_file_format.patch
+
+# Applies upstream commits 4937a686 and 4da95369
+patch -p0 < $CWD/fix_zone_area_calc.patch
+
CFLAGS="$SLKCFLAGS" \
CXXFLAGS="$SLKCFLAGS -D__STDC_CONSTANT_MACROS" \
cd $TMP/$PRGNAM-$VERSION
@@ -90,7 +97,8 @@ cmake -DCMAKE_INSTALL_PREFIX=/usr \
-DZM_WEBDIR=$DOCROOT \
-DZM_CGIDIR=$CGIROOT \
-DZM_WEB_USER=$DOCOWN \
- -DZM_WEB_GROUP=$DOCGRP .
+ -DZM_WEB_GROUP=$DOCGRP \
+ -DZM_CONTENTDIR=$CONTENTDIR .
make
make install DESTDIR=$PKG INSTALLDIRS=vendor INSTALLVENDORMAN3DIR=/usr/man/man3
@@ -128,7 +136,7 @@ mkdir -p $PKG$CACHEDIR
install -d -o $DOCOWN -g $DOCGRP $PKG$CACHEDIR
for DIR in events images sound; do
- install -d -o $DOCOWN -g $DOCGRP $PKG/var/lib/ZoneMinder/$DIR
+ install -d -o $DOCOWN -g $DOCGRP $PKG/$CONTENTDIR/$DIR
done
# Install logrotate script
diff --git a/system/ZoneMinder/ZoneMinder.info b/system/ZoneMinder/ZoneMinder.info
index 09ae525334a5f..a9356391b8397 100644
--- a/system/ZoneMinder/ZoneMinder.info
+++ b/system/ZoneMinder/ZoneMinder.info
@@ -9,6 +9,6 @@ MD5SUM="fc986fcb7601d3fe463a2970ead67cf7 \
10f2160fe68294013efcd1473cd36f72"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
-REQUIRES="perl-Sys-MemInfo perl-Date-Manip perl-Sys-Mmap perl-LWP-Protocol-https SDL2 perl-JSON-MaybeXS perl-Number-Bites-Human perl-TimeDate perl-Sys-CPU ffmpeg"
+REQUIRES="perl-Sys-MemInfo perl-Date-Manip perl-Sys-Mmap perl-LWP-Protocol-https SDL2 perl-JSON-MaybeXS perl-Number-Bites-Human perl-TimeDate perl-Sys-CPU ffmpeg libmp4v2 x264"
MAINTAINER="Geno Bob"
EMAIL="GenoBob@gmail.com"
diff --git a/system/ZoneMinder/fix_video_file_format.patch b/system/ZoneMinder/fix_video_file_format.patch
new file mode 100644
index 0000000000000..f238c77f37d85
--- /dev/null
+++ b/system/ZoneMinder/fix_video_file_format.patch
@@ -0,0 +1,11 @@
+--- src/zm_event.cpp 2019-01-21 23:17:19.881961455 -0500
++++ src/zm_event.cpp.new 2019-01-21 23:17:38.452315254 -0500
+@@ -196,7 +196,7 @@
+
+ if ( monitor->GetOptVideoWriter() != 0 ) {
+ snprintf(video_name, sizeof(video_name), "%" PRIu64 "-%s", id, "video.mp4");
+- snprintf(video_file, sizeof(video_file), staticConfig.video_file_format, path, video_name);
++ snprintf(video_file, sizeof(video_file), "%s/%s", path, video_name);
+ Debug(1,"Writing video file to %s", video_file );
+
+ /* X264 MP4 video writer */
diff --git a/system/ZoneMinder/fix_zone_area_calc.patch b/system/ZoneMinder/fix_zone_area_calc.patch
new file mode 100644
index 0000000000000..d55488071ddce
--- /dev/null
+++ b/system/ZoneMinder/fix_zone_area_calc.patch
@@ -0,0 +1,35 @@
+--- web/skins/classic/views/js/zone.js 2019-01-23 00:24:26.094085919 -0500
++++ web/skins/classic/views/js/zone.js.new 2019-01-23 00:25:13.871710907 -0500
+@@ -347,6 +347,7 @@
+ zone['Points'][index].x = x;
+ var Point = $('zonePoly').points.getItem(index);
+ Point.x = x;
++ updateArea();
+ }
+
+ function updateY( index ) {
+@@ -359,6 +360,7 @@
+ zone['Points'][index].y = y;
+ var Point = $('zonePoly').points.getItem(index);
+ Point.y = y;
++ updateArea();
+ }
+
+ function saveChanges( element ) {
+@@ -697,11 +699,12 @@
+ var n_coords = coords.length;
+ var float_area = 0.0;
+
+- for ( i = 0, j = n_coords-1; i < n_coords; j = i++ ) {
+- var trap_area = ( ( coords[i].x - coords[j].x ) * ( coords[i].y + coords[j].y ) ) / 2;
+- float_area += trap_area;
+- //printf( "%.2f (%.2f)\n", float_area, trap_area );
++ for ( i = 0; i < n_coords-1; i++ ) {
++ var trap_area = (coords[i].x*coords[i+1].y - coords[i+1].x*coords[i].y) / 2;
++ float_area += trap_area;
+ }
++ float_area += (coords[n_coords-1].x*coords[0].y - coords[0].x*coords[n_coords-1].y) / 2;
++
+ return Math.round( Math.abs( float_area ) );
+ }
+