summaryrefslogtreecommitdiff
path: root/pcr/zoneminder
diff options
context:
space:
mode:
Diffstat (limited to 'pcr/zoneminder')
-rw-r--r--pcr/zoneminder/PKGBUILD232
-rw-r--r--pcr/zoneminder/sysctl-zoneminder.conf3
-rw-r--r--pcr/zoneminder/zoneminder-1.25-fixwarning.patch14
-rw-r--r--pcr/zoneminder/zoneminder-1.25-text.patch12
-rw-r--r--pcr/zoneminder/zoneminder-1.25.0-ffmpeg.patch130
-rw-r--r--pcr/zoneminder/zoneminder-1.25.0-gcc47.patch33
-rw-r--r--pcr/zoneminder/zoneminder-1.25.0-gcrypt.patch86
-rw-r--r--pcr/zoneminder/zoneminder-1.25.0-kernel35.patch21
-rw-r--r--pcr/zoneminder/zoneminder.install49
9 files changed, 447 insertions, 133 deletions
diff --git a/pcr/zoneminder/PKGBUILD b/pcr/zoneminder/PKGBUILD
index 236ceca01..ede03dd77 100644
--- a/pcr/zoneminder/PKGBUILD
+++ b/pcr/zoneminder/PKGBUILD
@@ -1,3 +1,4 @@
+# Maintainer: Jacek Burghardt <jacek@hebe.us>
# Maintainer: Vojtech Aschenbrenner <v@asch.cz>
# Contributor: Jason Gardner <buhrietoe@gmail.com>
# Contributor: Ross melin <rdmelin@gmail.com>
@@ -6,27 +7,24 @@
# based of debian squeeze package
-pkgbase=zoneminder
+_automake=1.14
+
pkgname=zoneminder
pkgver=1.25.0
-pkgrel=24
+pkgrel=28
pkgdesc='Capture, analyse, record and monitor video security cameras'
arch=(
- i686
- x86_64
mips64el
+ x86_64
+ i686
)
-backup=(
- etc/zm.conf
-)
-url="http://www.$pkgbase.com"
-license=(
- GPL
-)
+backup=etc/zm.conf
+url=http://www.$pkgname.com
+license=GPL2
depends=(
apache
cambozola
- libav-static
+ ffmpeg
gnutls
mariadb
perl-archive-zip
@@ -47,107 +45,117 @@ depends=(
php-gd
php-mcrypt
)
-makedepends=(
- netpbm
-)
-optdepends=(
- netpbm
-)
-install=$pkgbase.install
+makedepends=netpbm
+optdepends=netpbm
+options=(!libtool)
+install=$pkgname.install
source=(
- http://www.$pkgbase.com/downloads/ZoneMinder-$pkgver.tar.gz
- httpd-$pkgbase.conf
- $pkgbase
- $pkgbase.service
+ http://www.$pkgname.com/downloads/ZoneMinder-$pkgver.tar.gz
+ httpd-$pkgname.conf
+ $pkgname.service
+ sysctl-$pkgname.conf
+ $pkgname-$pkgver-ffmpeg.patch
+ $pkgname-$pkgver-gcrypt.patch
)
sha512sums=(
3e18993b0539729491052c97d8c94227ccc089eb40277c2f07682f30049033303c7cfe9734fdac6d33ae67df29c76eb72bf7fbb5dae8227e8831fa603b61c375
4ce0d8eba9d006d258f5b8a83920fc17f1f602b96518d37b7a47cd9b6eb84ef2587641a6ba839a469c3f0e33b46475866187279ae3f8be0d4054b074ee5d6b08
- ab4e1d5ddaf4d9cd53d6ca59d7965902afd6a2dc830fbbafa270736c52c2b3563075fee860bb0276466f96e9dbfb71b259ac45a4ae2e4ead8eaec154a0159eb0
cfb0eb87a989236c72741a496ddc6a73aa2696e5beaaca4836d3c231ddb24c7ef5e9f65e7afa49674f2115cbfa4a07c75486e1947ce294c816ddbb875f3b99cf
+ 7330c179f1e2db815a675560d3d84648be02f7d0292f8cbe21d6033577fe688ed71ad23b5b8c9dc309395b45ebb554f9499e7a4b57091959b69679011fa59044
+ 7fc2a4663c3103bef641be065bd7992a2b3dc0699f1b99dc2fdb34c1c48e58686e490d3ade523ef7c8e29b3f04109658eef652c26ff6ee3fb9aee65453bdb6c4
+ 8c9e7debcaf60be1c2dda656f95e497f6812d704edc3ca4a1c915a3b3c9dc1749c91d96bc2d60db7d90d5edfd9e2dfc39010dfe4feabfecfffd27f1fffc3d675
)
-build() {
+prepare() {
cd $srcdir/ZoneMinder-$pkgver
- # ZM_RUNDIR need change to run dir
- export CPPFLAGS=-D__STDC_CONSTANT_MACROS\
- OPT_FFMPEG=yes\
- PATH_FFMPEG=/usr/bin/avconv-static\
- ZM_LOGDIR=/var/log/$pkgbase\
- ZM_RUNDIR=/tmp/$pkgbase\
- ZM_SSL_LIB=gnutls\
- ZM_TMPDIR=/tmp/$pkgbase
-
- # Patch for GCC 4.7.x
- sed -i -e 's/^#include <errno.h>/#include <errno.h>\n#include <unistd.h>/'\
- src/zm_logger.cpp || read
- sed -i -e 's/^#include <pthread.h>/#include <pthread.h>\n#include <unistd.h>/'\
- src/zm_thread.h || read
-
- # Patch for automake 1.12
- sed -i -e '/am__api_version=/ s/1.11/1.12/'\
- configure || read
+ # Patch for automake
+ sed -i "\|^am__api_version=| s|1[.]11|$_automake|;
+ " configure
+
+ # Patch for GCC
+ sed -i 's|^#include [<]errno[.]h[>]$|#include <errno.h>\n#include <unistd.h>|;
+ ' src/zm_logger.cpp
+ sed -i 's|^#include [<]pthread[.]h[>]$|#include <pthread.h>\n#include <unistd.h>|;
+ ' src/zm_thread.h
+ sed -i 's|^#include [<]fcntl[.]h[>]$|#include <fcntl.h>\n#include <limits.h>|;
+ ' src/zm_local_camera.cpp
+
+ # Patch for type cast in linux-libre kernel 3.5 and for wrong type "suppported"
+ sed -i 's|enum v4l2_buf_type type = v4l2_data[.]fmt[.]type|enum v4l2_buf_type type = (v4l2_buf_type)v4l2_data.fmt.type|;
+ s|suppported|supported|;
+ ' src/zm_local_camera.cpp
+
+ # configure crash on i686
+ [[ $CARCH != i686 ]] && {
+ # Patch for fixing warning
+ sed -i 's|pdest[+][+] = ([*]blend_ptr)\[[*]pdest]\[[*]psrc[+][+]]|pdest = (*blend_ptr)[*pdest][*psrc++];\n pdest++|;
+ ' src/zm_image.cpp
+ }
+
+ # Patch for support ffmpeg with <libavutil/mathematics.h>
+ #sed -i 's|^extern "C" {|extern "C" {\n#ifdef _STDINT_H\n#undef _STDINT_H\n#endif\n#include <stdint.h>|;
+ # s|^#include <libavutil/avutil[.]h>|#include <libavutil/avutil.h>\n#include <libavutil/mathematics.h>|;
+ # ' src/zm_ffmpeg.h
+
+ # Patch for support C library
+ #sed -i 's|^AM_CONFIG_HEADER(config[.]h)|AM_CONFIG_HEADER(config.h)\n\nAC_SUBST([AM_CXXFLAGS], [-D__STDC_CONSTANT_MACROS])|;
+ # s|^AC_CHECK_HEADERS(mysql/mysql[.]h,,AC_MSG_ERROR(zm requires MySQL headers - check that MySQL development packages are installed),)|AC_CHECK_HEADERS(mysql/mysql.h,,AC_MSG_ERROR(zm requires MySQL headers - check that MySQL development packages are installed),)\nAC_LANG_PUSH([C])|;
+ # s|^AC_CHECK_HEADERS(libswscale/swscale[.]h,,,)|AC_CHECK_HEADERS(libswscale/swscale.h,,,)\nAC_LANG_POP([C])|;
+ # ' configure.ac
# Patch for disable ZM_CHECK_FOR_UPDATES
- sed -i -e '/ZM_CHECK_FOR_UPDATES/,+1 s/yes/no/'\
- scripts/ZoneMinder/lib/ZoneMinder/ConfigData.pm.in || read
+ sed -i '\|ZM_CHECK_FOR_UPDATES|,+1 s|yes|no|;
+ ' scripts/ZoneMinder/lib/ZoneMinder/ConfigData.pm.in
# Patch for support html5 video and flv
- sed -i -e '/ZM_MPEG_LIVE_FORMAT/,+1 s/swf/webm/;/ZM_MPEG_REPLAY_FORMAT/,+1 s/swf/webm/;
- /ZM_FFMPEG_FORMATS/,+1 s/mpg mpeg wmv asf avi\* mov swf 3gp\*\*/mpg mpeg wmv asf avi\* mov flv swf 3gp\*\* webm ogg h264/'\
- scripts/ZoneMinder/lib/ZoneMinder/ConfigData.pm.in || read
-
- # Patch for enable video export
- #sed -i -e '/ZM_OPT_FFMPEG/,+1 s/@OPT_FFMPEG@/yes/;
- # /ZM_PATH_FFMPEG/,+1 s/@PATH_FFMPEG@/\/usr\/bin\/avconv-static/'\
- # scripts/ZoneMinder/lib/ZoneMinder/ConfigData.pm.in || read
+ sed -i '\|ZM_MPEG_LIVE_FORMAT|,+1 s|swf|webm|;
+ \|ZM_MPEG_REPLAY_FORMAT|,+1 s|swf|webm|;
+ \|ZM_FFMPEG_FORMATS|,+1 s|mpg mpeg wmv asf avi[*] mov swf 3gp[*][*]|mpg mpeg wmv asf avi* mov flv swf 3gp** webm ogg h264|;
+ ' scripts/ZoneMinder/lib/ZoneMinder/ConfigData.pm.in
- # Patch for change path run dir
- sed -i -e '/ZM_PATH_SOCKS/,+1 s/TMP/RUN/'\
- scripts/ZoneMinder/lib/ZoneMinder/ConfigData.pm.in || read
-
- # Patch for change ZM name to ZoneMinder
- sed -i -e '/ZM_WEB_TITLE_PREFIX/,+1 s/"ZM"/"ZoneMinder"/'\
- scripts/ZoneMinder/lib/ZoneMinder/ConfigData.pm.in || read
+ # Patch for change path run dir and for change ZM name to ZoneMinder
+ sed -i '\|ZM_PATH_SOCKS|,+1 s|TMP|RUN|;
+ \|ZM_WEB_TITLE_PREFIX|,+1 s|"ZM"|"ZoneMinder"|;
+ ' scripts/ZoneMinder/lib/ZoneMinder/ConfigData.pm.in
# Patch for v4l2 convert support
- sed -i -e "s/$ENV{SHELL} = \'\/bin\/sh\' if exists $ENV{SHELL};/$ENV{SHELL} = \'\/bin\/sh\' if exists $ENV{SHELL};\n$ENV{LD_PRELOAD} = \'\/usr\/lib\/libv4l\/v4l2convert.so\' ;/"\
- scripts/zmdc.pl.in || read
+ sed -i 's|^$ENV{SHELL} = '"'/bin/sh'"' if exists $ENV{SHELL}|$ENV{SHELL} = '"'/bin/sh'"' if exists $ENV{SHELL};\n$ENV{LD_PRELOAD} = '"'/usr/lib/libv4l/v4l2convert.so'"' |;
+ ' scripts/zmdc.pl.in
# Patch for add more socket tries
- sed -i -e '/$max_socket_tries/ s/3/15/'\
- web/ajax/stream.php || read
-
- # Patch for wrong "suppported"
- sed -i -e 's/suppported/supported/'\
- src/zm_local_camera.cpp || read
-
- # Patch for type cast in linux-libre kernel 3.5
- sed -i -e 's/enum v4l2_buf_type type = v4l2_data.fmt.type;/enum v4l2_buf_type type = (v4l2_buf_type)v4l2_data.fmt.type;/'\
- src/zm_local_camera.cpp || read
-
- # Patch for drop custom perl install paths
- sed -i -e '/# Slight hack for non-standard perl install paths/,+10 d;
- s/^AC_SUBST(ZM_CONFIG,"$SYSCONFDIR\/zm.conf")/AC_SUBST(ZM_CONFIG,"$SYSCONFDIR\/zm.conf")\n\nEXTRA_PERL_LIB="# Include from system perl paths only"\nPERL_MM_PARMS="INSTALLDIRS=vendor"/'\
- configure.ac
-
- # Patch for support ffmpeg with <libavutil/mathematics.h> and C library
- sed -i -e 's/^extern "C" {/extern "C" {\n#ifdef _STDINT_H\n#undef _STDINT_H\n#endif\n#include <stdint.h>/
- s/^#include <libavutil\/avutil.h>/#include <libavutil\/avutil.h>\n#include <libavutil\/mathematics.h>/'\
- src/zm_ffmpeg.h
- sed -i -e 's/^AM_CONFIG_HEADER(config.h)/AM_CONFIG_HEADER(config.h)\n\nAC_SUBST([AM_CXXFLAGS], [-D__STDC_CONSTANT_MACROS])/;
- s/^AC_CHECK_HEADERS(mysql\/mysql.h,,AC_MSG_ERROR(zm requires MySQL headers - check that MySQL development packages are installed),)/AC_CHECK_HEADERS(mysql\/mysql.h,,AC_MSG_ERROR(zm requires MySQL headers - check that MySQL development packages are installed),)\nAC_LANG_PUSH([C])/;
- s/^AC_CHECK_HEADERS(libswscale\/swscale.h,,,)/AC_CHECK_HEADERS(libswscale\/swscale.h,,,)\nAC_LANG_POP([C])/'\
- configure.ac
-
- # Patch for wrong install run, tmp and log dir
- sed -i -e '/ install-data-hook/d;/install-data-hook:/d;/# Yes, you are correct. This is a HACK!/d;
- / ( cd $(DESTDIR)$(sysconfdir); chown $(webuser):$(webgroup) $(sysconf_DATA); chmod 600 $(sysconf_DATA) )/d;
- / ( if ! test -e $(ZM_RUNDIR); then mkdir -p $(ZM_RUNDIR); fi; if test "$(ZM_RUNDIR)" != "\/var\/run"; then chown $(webuser):$(webgroup) $(ZM_RUNDIR); chmod u+w $(ZM_RUNDIR); fi )/d;
- / ( if ! test -e $(ZM_TMPDIR); then mkdir -m 700 -p $(ZM_TMPDIR); fi; if test "$(ZM_TMPDIR)" != "\/tmp"; then chown $(webuser):$(webgroup) $(ZM_TMPDIR); chmod u+w $(ZM_TMPDIR); fi )/d;
- / ( if ! test -e $(ZM_LOGDIR); then mkdir -p $(ZM_LOGDIR); fi; if test "$(ZM_LOGDIR)" != "\/var\/log"; then chown $(webuser):$(webgroup) $(ZM_LOGDIR); chmod u+w $(ZM_LOGDIR); fi )/,+1 d'\
- Makefile.{am,in}
+ sed -i '\|^$max_socket_tries = | s|3|15|;
+ ' web/ajax/stream.php
+
+ # Patch for text
+ sed -i 's|if ( fwrite( buffer, n_bytes, 1, stdout ) )|if ( fwrite( buffer, n_bytes, 1, stdout ) != 1 )|;
+ ' src/zm_stream.cpp
+
+ # Patch for remove HACK in Makefile.*
+ sed -i '\|This is a HACK|d;
+ \|^install-data-hook:$|,+5 d;
+ s| install-data-hook||;
+ \|^uninstall-hook:$|,+5 d;
+ s| uninstall-hook||;
+ ' Makefile.{am,in}
+
+ # Patch
+ for _patch in ffmpeg gcrypt; do
+ patch -Np1 -F99 -i $srcdir/$pkgname-$pkgver-$_patch.patch
+ done
+}
+
+build() {
+ cd $srcdir/ZoneMinder-$pkgver
+
+ # ZM_RUNDIR need change to run dir
+ export CPPFLAGS="$CPPFLAGS -D__STDC_CONSTANT_MACROS"\
+ OPT_FFMPEG=yes\
+ PATH_FFMPEG=/usr/bin/ffmpeg\
+ ZM_LOGDIR=/var/log/$pkgname\
+ ZM_RUNDIR=/tmp/$pkgname\
+ ZM_SSL_LIB=libgcrypt\
+ ZM_TMPDIR=/tmp/$pkgname
./configure --prefix=/usr\
--enable-crashtrace=no\
@@ -156,41 +164,39 @@ build() {
--sysconfdir=/etc\
--with-cgidir=/srv/http/cgi-bin\
--with-extralibs='-L/usr/lib -L/usr/lib/mysql'\
- --with-ffmpeg=/opt/libav-static\
+ --with-ffmpeg=/usr\
--with-libarch=lib\
--with-mysql=/usr\
- --with-webdir=/srv/http/$pkgbase\
+ --with-webdir=/srv/http/$pkgname\
--with-webgroup=http\
--with-webhost=localhost\
--with-webuser=http
-
make V=0
}
package() {
cd $srcdir/ZoneMinder-$pkgver
-
make DESTDIR=$pkgdir install
- mkdir -p $pkgdir/{etc/{httpd/conf/extra,rc.d},srv/http/{cgi-bin,$pkgbase},usr/{lib/systemd/system,share/{license/$pkgbase,$pkgbase/db}},var/{cache/$pkgbase,log/$pkgbase}}
-
- chown -R http.http $pkgdir/{etc/zm.conf,var/{cache/$pkgbase,log/$pkgbase}}
- chmod 0700 $pkgdir/etc/zm.conf
+ mkdir -vp $pkgdir/{etc/{httpd/conf/extra,sysctl.d},srv/http/{cgi-bin,$pkgname/socks},usr/{lib/systemd/system,share/{licenses/$pkgname,$pkgname/db}},var/{cache/$pkgname,log/$pkgname}}
+ chown -vR http.http $pkgdir/{etc/zm.conf,srv/http/$pkgname/socks,var/{cache/$pkgname,log/$pkgname}}
+ chmod -v 0700 $pkgdir/etc/zm.conf
for i in events images temp; do
- mv $pkgdir/srv/http/$pkgbase/$i $pkgdir/var/cache/$pkgbase/$i
- ln -s /var/cache/$pkgbase/$i $pkgdir/srv/http/$pkgbase/$i
- chown -h http.http $pkgdir/srv/http/$pkgbase/$i
+ mv -v $pkgdir/srv/http/$pkgname/$i $pkgdir/var/cache/$pkgname/$i
+ ln -vs /var/cache/$pkgname/$i $pkgdir/srv/http/$pkgname/$i
+ chown -vh http.http $pkgdir/srv/http/$pkgname/$i
done
- ln -s /srv/http/cgi-bin $pkgdir/srv/http/$pkgbase
- chown -h http.http $pkgdir/srv/http/{cgi-bin,$pkgbase,$pkgbase/cgi-bin}
+ ln -vs /srv/http/cgi-bin $pkgdir/srv/http/$pkgname
+ chown -vh http.http $pkgdir/srv/http/{cgi-bin,$pkgname,$pkgname/cgi-bin}
- ln -s /usr/share/cambozola/cambozola.jar $pkgdir/srv/http/$pkgbase
+ ln -vs /usr/share/cambozola/cambozola.jar $pkgdir/srv/http/$pkgname
- install -D -m 644 $srcdir/httpd-$pkgbase.conf $pkgdir/etc/httpd/conf/extra
- install -D -m 644 $srcdir/$pkgbase $pkgdir/etc/rc.d
- install -D -m 644 $srcdir/$pkgbase.service $pkgdir/usr/lib/systemd/system
- install -D -m 644 COPYING $pkgdir/usr/share/license/$pkgbase
- install -D -m 644 db/zm*.sql $pkgdir/usr/share/$pkgbase/db
+ install -vDm644 $srcdir/httpd-$pkgname.conf $pkgdir/etc/httpd/conf/extra
+ install -vDm644 $srcdir/$pkgname.service $pkgdir/usr/lib/systemd/system
+ install -vDm644 $srcdir/sysctl-$pkgname.conf $pkgdir/etc/sysctl.d
+ install -vDm644 $srcdir/sysctl-$pkgname.conf $pkgdir/srv/http/$pkgname
+ install -vDm644 COPYING $pkgdir/usr/share/licenses/$pkgname
+ install -vDm644 db/zm*.sql $pkgdir/usr/share/$pkgname/db
}
diff --git a/pcr/zoneminder/sysctl-zoneminder.conf b/pcr/zoneminder/sysctl-zoneminder.conf
new file mode 100644
index 000000000..ec1407dee
--- /dev/null
+++ b/pcr/zoneminder/sysctl-zoneminder.conf
@@ -0,0 +1,3 @@
+# For Zoneminder Monitor
+#kernel.shmall = 524288000
+#kernel.shmmax = 524288000
diff --git a/pcr/zoneminder/zoneminder-1.25-fixwarning.patch b/pcr/zoneminder/zoneminder-1.25-fixwarning.patch
new file mode 100644
index 000000000..0d151d139
--- /dev/null
+++ b/pcr/zoneminder/zoneminder-1.25-fixwarning.patch
@@ -0,0 +1,14 @@
+diff -U 3 -H -d -r -N -- ZoneMinder-1.24.2/src/zm_image.cpp ZoneMinder-1.24.2-patch/src/zm_image.cpp
+--- ZoneMinder-1.24.2/src/zm_image.cpp 2009-05-25 20:04:00.000000000 +0200
++++ ZoneMinder-1.24.2-patch/src/zm_image.cpp 2009-07-04 16:31:45.000000000 +0200
+@@ -776,7 +776,8 @@
+
+ while( pdest < (buffer+size) )
+ {
+- *pdest++ = (*blend_ptr)[*pdest][*psrc++];
++ *pdest = (*blend_ptr)[*pdest][*psrc++];
++ pdest++;
+ }
+ }
+ else
+
diff --git a/pcr/zoneminder/zoneminder-1.25-text.patch b/pcr/zoneminder/zoneminder-1.25-text.patch
new file mode 100644
index 000000000..90885f1b5
--- /dev/null
+++ b/pcr/zoneminder/zoneminder-1.25-text.patch
@@ -0,0 +1,12 @@
+--- ZoneMinder-1.25.0/src/zm_stream.cpp 2009-05-08 09:47:27.000000000 -0400
++++ ZoneMinder-1.25.0.ajs/src/zm_stream.cpp 2013-01-14 16:52:18.000000000 -0500
+@@ -262,7 +262,7 @@ bool StreamBase::sendTextFrame( const ch
+ fprintf( stdout, "--ZoneMinderFrame\r\n" );
+ fprintf( stdout, "Content-Length: %d\r\n", n_bytes );
+ fprintf( stdout, "Content-Type: image/jpeg\r\n\r\n" );
+- if ( fwrite( buffer, n_bytes, 1, stdout ) )
++ if ( fwrite( buffer, n_bytes, 1, stdout ) != 1 )
+ {
+ Error( "Unable to send stream text frame: %s", strerror(errno) );
+ return( false );
+
diff --git a/pcr/zoneminder/zoneminder-1.25.0-ffmpeg.patch b/pcr/zoneminder/zoneminder-1.25.0-ffmpeg.patch
new file mode 100644
index 000000000..99d41ee33
--- /dev/null
+++ b/pcr/zoneminder/zoneminder-1.25.0-ffmpeg.patch
@@ -0,0 +1,130 @@
+diff -Naur ZoneMinder-1.25.0-a/configure.ac ZoneMinder-1.25.0-b/configure.ac
+--- ZoneMinder-1.25.0-a/configure.ac 2011-08-23 09:10:32.000000000 -0600
++++ ZoneMinder-1.25.0-b/configure.ac 2013-05-06 11:17:33.860608307 -0600
+@@ -95,7 +95,7 @@
+
+ LDFLAGS="${FFMPEG_LIBS} $LDFLAGS"
+ CFLAGS="${FFMPEG_CFLAGS} $CFLAGS"
+-CPPFLAGS="${FFMPEG_CFLAGS} $CPPFLAGS"
++CPPFLAGS="${FFMPEG_CFLAGS} $CPPFLAGS -D__STDC_CONSTANT_MACROS"
+
+ EXTRA_LIBS=
+ AC_ARG_WITH(extralibs,
+@@ -275,8 +275,7 @@
+ AC_CHECK_LIB(x264,x264_predict_16x16_init)
+ AC_CHECK_LIB(avutil,av_malloc,,AC_MSG_WARN(libavutil.a may be required for MPEG streaming))
+ # Don't bother to warn about this one
+-AC_CHECK_LIB(avcore,av_image_copy,,)
+-AC_CHECK_LIB(avcodec,avcodec_init,,AC_MSG_WARN(libavcodec.a is required for MPEG streaming))
++AC_CHECK_LIB(avcodec,avcodec_register_all,,AC_MSG_WARN(libavcodec.a is required for MPEG streaming))
+ AC_CHECK_LIB(avformat,av_new_stream,,AC_MSG_WARN(libavformat.a is required for MPEG streaming))
+ AC_CHECK_LIB(avdevice,avdevice_register_all,,AC_MSG_WARN(libavdevice.a may be required for MPEG streaming))
+ AC_CHECK_LIB(swscale,sws_scale,,,-lswscale)
+diff -Naur ZoneMinder-1.25.0-a/src/zm_ffmpeg.h ZoneMinder-1.25.0-b/src/zm_ffmpeg.h
+--- ZoneMinder-1.25.0-a/src/zm_ffmpeg.h 2011-06-24 10:05:07.000000000 -0600
++++ ZoneMinder-1.25.0-b/src/zm_ffmpeg.h 2013-05-06 18:11:49.327274977 -0600
+@@ -43,6 +43,11 @@
+ }
+ #endif
+
++#include <libavutil/avutil.h>
++#include <libavcodec/avcodec.h>
++#include <libavformat/avformat.h>
++#include <libswscale/swscale.h>
++
+ #if FFMPEG_VERSION_INT == 0x000408
+ #define ZM_FFMPEG_048 1
+ #elif FFMPEG_VERSION_INT == 0x000409
+diff -Naur ZoneMinder-1.25.0-a/src/zm_ffmpeg_camera.cpp ZoneMinder-1.25.0-b/src/zm_ffmpeg_camera.cpp
+--- ZoneMinder-1.25.0-a/src/zm_ffmpeg_camera.cpp 2011-06-21 01:40:13.000000000 -0600
++++ ZoneMinder-1.25.0-b/src/zm_ffmpeg_camera.cpp 2013-05-06 19:57:08.453941643 -0600
+@@ -91,7 +91,7 @@
+ Info( "Priming capture from %s", mPath.c_str() );
+
+ // Open the input, not necessarily a file
+- if ( av_open_input_file( &mFormatContext, mPath.c_str(), NULL, 0, NULL ) !=0 )
++ if ( avformat_open_input( &mFormatContext, mPath.c_str(), NULL, NULL ) !=0 )
+ Fatal( "Unable to open input %s due to: %s", mPath.c_str(), strerror(errno) );
+
+ // Locate stream info from input
+@@ -122,7 +122,7 @@
+ Fatal( "Can't find codec for video stream from %s", mPath.c_str() );
+
+ // Open the codec
+- if ( avcodec_open( mCodecContext, mCodec ) < 0 )
++ if ( avcodec_open2( mCodecContext, mCodec, NULL ) < 0 )
+ Fatal( "Unable to open codec for video stream from %s", mPath.c_str() );
+
+ // Allocate space for the native video frame
+diff -Naur ZoneMinder-1.25.0-a/src/zm_mpeg.cpp ZoneMinder-1.25.0-b/src/zm_mpeg.cpp
+--- ZoneMinder-1.25.0-a/src/zm_mpeg.cpp 2011-05-15 14:39:06.000000000 -0600
++++ ZoneMinder-1.25.0-b/src/zm_mpeg.cpp 2013-05-06 20:00:08.923941640 -0600
+@@ -130,7 +130,7 @@
+ {
+ /* set the output parameters (must be done even if no
+ parameters). */
+- if ( av_set_parameters(ofc, NULL) < 0 )
++ if ( avformat_write_header(ofc, NULL) < 0 )
+ {
+ Panic( "Invalid output format parameters" );
+ }
+@@ -176,7 +176,7 @@
+ }
+
+ /* open the codec */
+- if ( avcodec_open(c, codec) < 0 )
++ if ( avcodec_open2(c, codec, NULL) < 0 )
+ {
+ Panic( "Could not open codec" );
+ }
+@@ -222,7 +222,7 @@
+ if ( !(of->flags & AVFMT_NOFILE) )
+ {
+ #if LIBAVUTIL_VERSION_INT >= AV_VERSION_INT(51,2,1)
+- if ( avio_open(&ofc->pb, filename, URL_WRONLY) < 0 )
++ if ( avio_open(&ofc->pb, filename, AVIO_FLAG_WRITE) < 0 )
+ #else
+ if ( url_fopen(&ofc->pb, filename, URL_WRONLY) < 0 )
+ #endif
+@@ -241,7 +241,7 @@
+ }
+
+ /* write the stream header, if any */
+- av_write_header(ofc);
++ avformat_write_header(ofc, NULL);
+ }
+
+ VideoStream::VideoStream( const char *filename, const char *format, int bitrate, double frame_rate, int colours, int width, int height )
+diff -Naur ZoneMinder-1.25.0-a/src/zm_remote_camera_rtsp.cpp ZoneMinder-1.25.0-b/src/zm_remote_camera_rtsp.cpp
+--- ZoneMinder-1.25.0-a/src/zm_remote_camera_rtsp.cpp 2011-06-21 03:19:10.000000000 -0600
++++ ZoneMinder-1.25.0-b/src/zm_remote_camera_rtsp.cpp 2013-05-06 20:07:40.797274975 -0600
+@@ -145,7 +145,7 @@
+ Panic( "Unable to locate codec %d decoder", codecContext->codec_id );
+
+ // Open codec
+- if ( avcodec_open( codecContext, codec ) < 0 )
++ if ( avcodec_open2( codecContext, codec, NULL ) < 0 )
+ Panic( "Can't open codec" );
+
+ picture = avcodec_alloc_frame();
+diff -Naur ZoneMinder-1.25.0-a/src/zm_sdp.h ZoneMinder-1.25.0-b/src/zm_sdp.h
+--- ZoneMinder-1.25.0-a/src/zm_sdp.h 2011-05-15 14:39:06.000000000 -0600
++++ ZoneMinder-1.25.0-b/src/zm_sdp.h 2013-05-06 20:23:28.237274974 -0600
+@@ -41,7 +41,7 @@
+ int payloadType;
+ const char payloadName[6];
+ enum AVMediaType codecType;
+- enum CodecID codecId;
++ enum AVCodecID codecId;
+ int clockRate;
+ int autoChannels;
+ };
+@@ -50,7 +50,7 @@
+ {
+ const char payloadName[32];
+ enum AVMediaType codecType;
+- enum CodecID codecId;
++ enum AVCodecID codecId;
+ //int clockRate;
+ //int autoChannels;
+ };
diff --git a/pcr/zoneminder/zoneminder-1.25.0-gcc47.patch b/pcr/zoneminder/zoneminder-1.25.0-gcc47.patch
new file mode 100644
index 000000000..a083c6dbc
--- /dev/null
+++ b/pcr/zoneminder/zoneminder-1.25.0-gcc47.patch
@@ -0,0 +1,33 @@
+diff -up ./src/zm_local_camera.cpp.gcc47 ./src/zm_local_camera.cpp
+--- ./src/zm_local_camera.cpp.gcc47 2011-06-21 04:19:10.000000000 -0500
++++ ./src/zm_local_camera.cpp 2012-01-19 13:43:49.142440717 -0600
+@@ -26,6 +26,7 @@
+ #include <sys/types.h>
+ #include <sys/stat.h>
+ #include <fcntl.h>
++#include <limits.h>
+ #include <unistd.h>
+ #include <sys/mman.h>
+ #include <errno.h>
+diff -up ./src/zm_logger.cpp.gcc47 ./src/zm_logger.cpp
+--- ./src/zm_logger.cpp.gcc47 2011-06-28 06:07:35.000000000 -0500
++++ ./src/zm_logger.cpp 2012-01-19 13:43:49.142440717 -0600
+@@ -33,6 +33,7 @@
+ #include <signal.h>
+ #include <stdarg.h>
+ #include <errno.h>
++#include <unistd.h>
+
+ bool Logger::smInitialised = false;
+ Logger *Logger::smInstance = 0;
+diff -up ./src/zm_thread.h.gcc47 ./src/zm_thread.h
+--- ./src/zm_thread.h.gcc47 2012-01-19 13:44:43.082766722 -0600
++++ ./src/zm_thread.h 2012-01-19 13:44:56.966335869 -0600
+@@ -21,6 +21,7 @@
+ #define ZM_THREAD_H
+
+ #include <pthread.h>
++#include <unistd.h>
+ #include "zm_exception.h"
+ #include "zm_utils.h"
+
diff --git a/pcr/zoneminder/zoneminder-1.25.0-gcrypt.patch b/pcr/zoneminder/zoneminder-1.25.0-gcrypt.patch
new file mode 100644
index 000000000..21f197ec6
--- /dev/null
+++ b/pcr/zoneminder/zoneminder-1.25.0-gcrypt.patch
@@ -0,0 +1,86 @@
+diff -up ./configure.ac.gcrypt ./configure.ac
+--- ./configure.ac.gcrypt 2012-01-19 12:58:20.647123209 -0600
++++ ./configure.ac 2012-01-19 13:12:34.186669577 -0600
+@@ -13,7 +13,7 @@ AC_ARG_VAR(ZM_DB_HOST,[Hostname where Zo
+ AC_ARG_VAR(ZM_DB_NAME,[Name of ZoneMinder database, default zm])
+ AC_ARG_VAR(ZM_DB_USER,[Name of ZoneMinder database user, default zmuser])
+ AC_ARG_VAR(ZM_DB_PASS,[Password of ZoneMinder database user, default zmpass])
+-AC_ARG_VAR(ZM_SSL_LIB,[Library to use for ssl functions, default gnutls])
++AC_ARG_VAR(ZM_SSL_LIB,[Library to use for MD5 function, default libgcrypt])
+ AC_ARG_VAR(ZM_MYSQL_ENGINE,[MySQL engine to use with database, default MyISAM])
+ AC_ARG_VAR(ZM_RUNDIR,[Location of transient process files, default /var/run/zm])
+ AC_ARG_VAR(ZM_TMPDIR,[Location of temporary files, default /tmp/zm])
+@@ -32,7 +32,7 @@ if test "$ZM_DB_PASS" == ""; then
+ AC_SUBST(ZM_DB_PASS,[zmpass])
+ fi
+ if test "$ZM_SSL_LIB" == ""; then
+- AC_SUBST(ZM_SSL_LIB,gnutls)
++ AC_SUBST(ZM_SSL_LIB,libgcrypt)
+ fi
+ if test "$ZM_MYSQL_ENGINE" == ""; then
+ AC_SUBST(ZM_MYSQL_ENGINE,MyISAM)
+@@ -264,11 +264,10 @@ AC_CHECK_LIB(jpeg,jpeg_start_compress,,A
+ AC_CHECK_LIB(pthread,pthread_create,,AC_MSG_ERROR(zm requires libpthread.a))
+ AC_CHECK_LIB(dl,dlsym,,AC_MSG_ERROR(zm requires libdl.a))
+ if test "$ZM_SSL_LIB" == "openssl"; then
+-AC_CHECK_LIB(crypto,MD5,,AC_MSG_WARN([libcrypto.a is required for authenticated streaming - use ZM_SSL_LIB option to select gnutls instead]))
++AC_CHECK_LIB(crypto,MD5,,AC_MSG_WARN([libcrypto.a is required for authenticated streaming - use ZM_SSL_LIB option to select libgcrypt instead]))
+ else
+-AC_CHECK_HEADERS(gcrypt.h,,AC_MSG_WARN(zm requires libgcrypt headers to be installed for gnutls),)
++AC_CHECK_HEADERS(gcrypt.h,,AC_MSG_WARN(zm requires libgcrypt headers to be installed),)
+ AC_CHECK_LIB(gcrypt,gcry_check_version,,AC_MSG_WARN([libgcrypt.a is required for authenticated streaming - use ZM_SSL_LIB option to select openssl instead]))
+-AC_CHECK_LIB(gnutls-openssl,MD5,,AC_MSG_WARN([gnutls-openssl.a is required for authenticated streaming - use ZM_SSL_LIB option to select openssl instead]))
+ fi
+ AC_CHECK_LIB(pcre,pcre_compile,,AC_MSG_WARN(libpcre.a may be required for remote/network camera support))
+ AC_CHECK_LIB(z,zlibVersion)
+@@ -320,9 +319,6 @@ AC_CHECK_DECLS(round,,,[#include <math.h
+ if test "$ZM_SSL_LIB" == "openssl"; then
+ AC_CHECK_DECLS(MD5,,AC_MSG_ERROR([zm requires openssl/md5.h - use ZM_SSL_LIB option to select gnutls instead]),[#include <stdlib.h>
+ #include <openssl/md5.h>])
+-else
+-AC_CHECK_DECLS(MD5,,AC_MSG_ERROR([zm requires gnutls/openssl.h - use ZM_SSL_LIB option to select openssl instead]),[#include <stdlib.h>
+-#include <gnutls/openssl.h>])
+ fi
+ AC_CHECK_DECLS(backtrace,,,[#include <execinfo.h>])
+
+diff -up ./src/zm_user.cpp.gcrypt ./src/zm_user.cpp
+--- ./src/zm_user.cpp.gcrypt 2011-08-03 06:31:06.000000000 -0500
++++ ./src/zm_user.cpp 2012-01-19 12:58:20.654122992 -0600
+@@ -140,6 +140,18 @@ User *zmLoadUser( const char *username,
+ return( user );
+ }
+
++#ifdef HAVE_GCRYPT_H
++#define HAVE_DECL_MD5 1
++#define MD5_DIGEST_LENGTH 16
++static unsigned char *MD5(const unsigned char *data, unsigned long len,
++ unsigned char *md)
++{
++ gcry_md_hash_buffer(GCRY_MD_MD5, md, data, len);
++
++ return md;
++}
++#endif
++
+ // Function to validate an authentication string
+ User *zmLoadAuthUser( const char *auth, bool use_remote_addr )
+ {
+diff -up ./src/zm_user.h.gcrypt ./src/zm_user.h
+--- ./src/zm_user.h.gcrypt 2010-11-11 06:11:07.000000000 -0600
++++ ./src/zm_user.h 2012-01-19 13:14:11.200654694 -0600
+@@ -23,14 +23,11 @@
+ #ifndef ZM_USER_H
+ #define ZM_USER_H
+
+-#if HAVE_LIBGNUTLS_OPENSSL
+-#include <gnutls/openssl.h>
+ #if HAVE_GCRYPT_H
+ #include <gcrypt.h>
+-#endif // HAVE_GCRYPT_H
+ #elif HAVE_LIBCRYPTO
+ #include <openssl/md5.h>
+-#endif // HAVE_LIBGNUTLS_OPENSSL || HAVE_LIBCRYPTO
++#endif // HAVE_GCRYPT_H || HAVE_LIBCRYPTO
+
+ class User
+ {
diff --git a/pcr/zoneminder/zoneminder-1.25.0-kernel35.patch b/pcr/zoneminder/zoneminder-1.25.0-kernel35.patch
new file mode 100644
index 000000000..51bc1288d
--- /dev/null
+++ b/pcr/zoneminder/zoneminder-1.25.0-kernel35.patch
@@ -0,0 +1,21 @@
+diff -up ./src/zm_local_camera.cpp.kernel35 ./src/zm_local_camera.cpp
+--- ./src/zm_local_camera.cpp.kernel35 2012-07-16 15:01:22.182614878 -0500
++++ ./src/zm_local_camera.cpp 2012-07-16 15:02:16.491941730 -0500
+@@ -740,7 +740,7 @@ void LocalCamera::Terminate()
+ {
+ Debug( 3, "Terminating video stream" );
+ //enum v4l2_buf_type type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
+- enum v4l2_buf_type type = v4l2_data.fmt.type;
++ enum v4l2_buf_type type = (v4l2_buf_type)v4l2_data.fmt.type;
+ if ( vidioctl( vid_fd, VIDIOC_STREAMOFF, &type ) < 0 )
+ Error( "Failed to stop capture stream: %s", strerror(errno) );
+
+@@ -1520,7 +1520,7 @@ int LocalCamera::PrimeCapture()
+
+ Debug( 3, "Starting video stream" );
+ //enum v4l2_buf_type type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
+- enum v4l2_buf_type type = v4l2_data.fmt.type;
++ enum v4l2_buf_type type = (v4l2_buf_type)v4l2_data.fmt.type;
+ if ( vidioctl( vid_fd, VIDIOC_STREAMON, &type ) < 0 )
+ Fatal( "Failed to start capture stream: %s", strerror(errno) );
+ }
diff --git a/pcr/zoneminder/zoneminder.install b/pcr/zoneminder/zoneminder.install
index ecacf6437..66109d5fa 100644
--- a/pcr/zoneminder/zoneminder.install
+++ b/pcr/zoneminder/zoneminder.install
@@ -1,3 +1,4 @@
+#!/usr/bin/bash
pre_install() {
set -e
abort=false
@@ -27,20 +28,20 @@ EOF
post_install() {
if [[ -d /var/log/zoneminder ]]; then
- chmod 0755 /var/log/zoneminder
- chown http.http /var/log/zoneminder
+ chmod -v 0755 /var/log/zoneminder
+ chown -v http.http /var/log/zoneminder
else
- mkdir -m 0755 /var/log/zoneminder
- chown http.http /var/log/zoneminder
+ mkdir -vm 0755 /var/log/zoneminder
+ chown -v http.http /var/log/zoneminder
fi
if [[ -d /tmp/zoneminder ]]; then
- chmod 0700 /tmp/zoneminder
- chown http.http /tmp/zoneminder
+ chmod -v 0700 /tmp/zoneminder
+ chown -v http.http /tmp/zoneminder
else
- mkdir -m 0700 /tmp/zoneminder
- chown http.http /tmp/zoneminder
+ mkdir -vm 0700 /tmp/zoneminder
+ chown -v http.http /tmp/zoneminder
fi
- sed -i -e '
+ sed -i '
/^;extension=mysql.so/ s/^;//;
/^#extension=mysql.so/ s/^#//;
/^;extension=mysqli.so/ s/^;//;
@@ -72,8 +73,8 @@ post_install() {
/^open_basedir/ s/:\/var\/cache\/zoneminder//;
/^open_basedir/ s/:\/var\/cache\/zoneminder\///;
/^open_basedir/ s/$/:\/var\/cache\/zoneminder/;
- ' /etc/php/php.ini || read
- sed -i -e '
+ ' /etc/php/php.ini
+ sed -i '
/^LoadModule php5_module modules\/libphp5.so/d;
/^LoadModule rewrite_module modules\/mod_rewrite.so/ s/$/\nLoadModule php5_module modules\/libphp5.so/;
/^# PHP 5/d;
@@ -81,12 +82,12 @@ post_install() {
/^Include \/etc\/httpd\/conf\/extra\/php5_module.conf/d;
/^Include \/etc\/httpd\/conf\/extra\/httpd-zoneminder.conf/d;
/^Include conf\/extra\/httpd-default.conf/ s/$/\n\n# PHP 5\n\Include \/etc\/httpd\/conf\/extra\/php5_module.conf\n\n# ZoneMinder\nInclude \/etc\/httpd\/conf\/extra\/httpd-zoneminder.conf/;
- ' /etc/httpd/conf/httpd.conf || read
+ ' /etc/httpd/conf/httpd.conf
gpasswd -a http video
cat << EOF
Note for mysql:
==> To run Zoneminder, you must install the database running mysql service (as root):
-==> "rc.d start mysqld" (in initscripts) or "systemctl start mysqld.service" (in systemd)
+==> "systemctl start mysqld.service"
==> and add Zoneminder database typing (with passsword):
==> "mysqladmin --defaults-file=/etc/mysql/my.cnf -p -f reload"
==> "cat /usr/share/zoneminder/db/zm_create.sql | mysql --defaults-file=/etc/mysql/my.cnf -p"
@@ -96,6 +97,11 @@ Note for mysql:
==> "cat /usr/share/zoneminder/db/zm_create.sql | mysql --defaults-file=/etc/mysql/my.cnf"
==> "echo 'grant lock tables, alter,select,insert,update,delete on zm.* to 'zmuser'@localhost identified by "zmpass";' | mysql --defaults-file=/etc/mysql/my.cnf mysql"
+Note for sysctl:
+==> You must uncomment that line in /etc/sysctl.d/sysctl-zoneminder.conf:
+==> "kernel.shmall = 524288000"
+==> "kernel.shmmax = 524288000"
+
Note for php:
==> You must uncomment that line in /etc/php/php.ini:
==> "extension=mysql.so"
@@ -126,22 +132,25 @@ EOF
post_upgrade() {
post_install
+ _mysqld=$(systemctl status mysqld.service | grep -o 'inactive (dead)')
+ [[ _mysqld == 'inactive (dead)' ]] && systemctl start mysqld.service
/usr/bin/zmupdate.pl -f >/dev/null
+ [[ _mysqld == 'inactive (dead)' ]] && systemctl stop mysqld.service
}
post_remove() {
- if [[ -d /tmp/zoneminder ]]; then
- rm -vr /tmp/zoneminder
- fi
- sed -i -e '
+ _zms=$(systemctl status zoneminder.service | grep -o 'active (running)')
+ [[ _zms == 'active (running)' ]] && systemctl stop zoneminder.service
+ [[ -d /tmp/zoneminder ]] && rm -vr /tmp/zoneminder
+ sed -i '
/^open_basedir/ s/:\/srv\/http\/zoneminder//;
/^open_basedir/ s/:\/srv\/http\/zoneminder\///;
/^open_basedir/ s/:\/var\/cache\/zoneminder\///
- ' /etc/php/php.ini || read
- sed -i -e '
+ ' /etc/php/php.ini
+ sed -i '
/^# ZoneMinder/d;
/Include \/etc\/httpd\/conf\/extra\/httpd-zoneminder.conf/d;
- ' /etc/httpd/conf/httpd.conf || read
+ ' /etc/httpd/conf/httpd.conf
cat << EOF
Note:
==> To clean Zoneminder mysql database, run as root (with password):