Version bump. Fix bug #155077, bug #157676.
authorRenat Lumpau <rl03@gentoo.org>
Mon, 11 Dec 2006 02:00:57 +0000 (02:00 +0000)
committerRenat Lumpau <rl03@gentoo.org>
Mon, 11 Dec 2006 02:00:57 +0000 (02:00 +0000)
Package-Manager: portage-2.1.2_rc1-r5

www-misc/zoneminder/ChangeLog
www-misc/zoneminder/files/digest-zoneminder-1.22.3 [new file with mode: 0644]
www-misc/zoneminder/files/zm_create.sql.in.diff [new file with mode: 0644]
www-misc/zoneminder/zoneminder-1.22.3.ebuild [new file with mode: 0644]

index d4fe3e7e1aba701e36c7904eb67f86202d978ba3..fac4ac3af8625db8151c27dc1c10b0e68bc4e9fa 100644 (file)
@@ -1,6 +1,12 @@
 # ChangeLog for www-misc/zoneminder
 # Copyright 2002-2006 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/www-misc/zoneminder/ChangeLog,v 1.19 2006/11/23 17:21:13 vivo Exp $
+# $Header: /var/cvsroot/gentoo-x86/www-misc/zoneminder/ChangeLog,v 1.20 2006/12/11 02:00:57 rl03 Exp $
+
+*zoneminder-1.22.3 (11 Dec 2006)
+
+  11 Dec 2006; Renat Lumpau <rl03@gentoo.org> +files/zm_create.sql.in.diff,
+  -zoneminder-1.22.2.ebuild, +zoneminder-1.22.3.ebuild:
+  Version bump. Fix bug #155077, bug #157676.
 
   23 Nov 2006; Francesco Riosa <vivo@gentoo.org> zoneminder-1.22.2.ebuild:
   dev-db/mysql => virtual/mysql
diff --git a/www-misc/zoneminder/files/digest-zoneminder-1.22.3 b/www-misc/zoneminder/files/digest-zoneminder-1.22.3
new file mode 100644 (file)
index 0000000..8982f44
--- /dev/null
@@ -0,0 +1,3 @@
+MD5 4677739d31807339d621e6e04bc62790 ZoneMinder-1.22.3.tar.gz 1258311
+RMD160 0752e77333d3eb2f320bb692905eeec9ae7a311e ZoneMinder-1.22.3.tar.gz 1258311
+SHA256 6bee02be8d5e21d3435c17def157a87727330ee6480be3a8fa5b1966cc10a6bc ZoneMinder-1.22.3.tar.gz 1258311
diff --git a/www-misc/zoneminder/files/zm_create.sql.in.diff b/www-misc/zoneminder/files/zm_create.sql.in.diff
new file mode 100644 (file)
index 0000000..1dbe221
--- /dev/null
@@ -0,0 +1,30 @@
+--- db/zm_create.sql.in.old    2006-05-25 16:55:53.000000000 +0200
++++ db/zm_create.sql.in        2006-11-12 12:53:56.000000000 +0100
+@@ -552,21 +552,21 @@
+ insert into Config set Id = 32, Name = 'ZM_HTTP_UA', Value = 'ZoneMinder', Type = 'string', DefaultValue = 'ZoneMinder', Hint = 'string', Pattern = '(?-xism:^(.+)$)', Format = ' $1 ', Prompt = 'The user agent that ZoneMinder uses to identify itself', Help = 'When ZoneMinder communicates with remote cameras it will identify itself using this string and it\'s version number. This is normally sufficient, however if a particular cameras expects only to communicate with certain browsers then this can be changed to a different string identifying ZoneMinder as Internet Explorer or Netscape etc.', Category = 'network', Readonly = '0', Requires = 'ZM_OPT_REMOTE_CAMERAS=1';
+ insert into Config set Id = 33, Name = 'ZM_HTTP_TIMEOUT', Value = '2500', Type = 'integer', DefaultValue = '2500', Hint = 'integer', Pattern = '(?-xism:^(\d+)$)', Format = ' $1 ', Prompt = 'How long ZoneMinder waits before giving up on images (milliseconds)', Help = 'When retrieving remote images ZoneMinder will wait for this length of time before deciding that an image is not going to arrive and taking steps to retry. This timeout is in milliseconds (1000 per second) and will apply to each part of an image if it is not sent in one whole chunk.', Category = 'network', Readonly = '0', Requires = 'ZM_OPT_REMOTE_CAMERAS=1';
+ insert into Config set Id = 34, Name = 'ZM_OPT_MPEG', Value = 'no', Type = 'string', DefaultValue = 'no', Hint = 'no|mpeg_encode|ffmpeg', Pattern = '(?i-xsm:^([nmf]))', Format = ' $1 =~ /^n/ ? \"no\" : ( $1 =~ /^m/ ? \"mpeg_encode\" : \"ffmpeg\") ', Prompt = 'Is there an (optional) mpeg video encoder installed', Help = 'ZoneMinder can optionally encode a series of video images into an MPEG encoded file. This option allows you to specifiy whether you have an mpeg encoder installed and if so which one. The two that ZoneMinder supports are mpeg_encode and ffmpeg, of which the latter is by far the fastest. However creating MPEG files can be fairly CPU and disk intensive and is not required as events can still be reviewed as video stream without it.', Category = 'images', Readonly = '0', Requires = '';
+-insert into Config set Id = 35, Name = 'ZM_PATH_MPEG_ENCODE', Value = '/usr/local/bin/mpeg_encode', Type = 'string', DefaultValue = '/usr/local/bin/mpeg_encode', Hint = '/absolute/path/to/somewhere', Pattern = '(?-xism:^((?:/[^/]*)+?)/?$)', Format = ' $1 ', Prompt = 'Path to (optional) Berkeley mpeg encoder', Help = 'This path should point to where the Berkeley mpeg_encode program has been installed.', Category = 'images', Readonly = '0', Requires = 'ZM_OPT_MPEG=mpeg_encode';
+-insert into Config set Id = 36, Name = 'ZM_PATH_FFMPEG', Value = '/usr/local/bin/ffmpeg', Type = 'string', DefaultValue = '/usr/local/bin/ffmpeg', Hint = '/absolute/path/to/somewhere', Pattern = '(?-xism:^((?:/[^/]*)+?)/?$)', Format = ' $1 ', Prompt = 'Path to (optional) ffmpeg mpeg encoder', Help = 'This path should point to where the ffmpeg has been installed.', Category = 'images', Readonly = '0', Requires = 'ZM_OPT_MPEG=ffmpeg';
++insert into Config set Id = 35, Name = 'ZM_PATH_MPEG_ENCODE', Value = '/usr/bin/mpeg_encode', Type = 'string', DefaultValue = '/usr/local/bin/mpeg_encode', Hint = '/absolute/path/to/somewhere', Pattern = '(?-xism:^((?:/[^/]*)+?)/?$)', Format = ' $1 ', Prompt = 'Path to (optional) Berkeley mpeg encoder', Help = 'This path should point to where the Berkeley mpeg_encode program has been installed.', Category = 'images', Readonly = '0', Requires = 'ZM_OPT_MPEG=mpeg_encode';
++insert into Config set Id = 36, Name = 'ZM_PATH_FFMPEG', Value = '/usr/bin/ffmpeg', Type = 'string', DefaultValue = '/usr/local/bin/ffmpeg', Hint = '/absolute/path/to/somewhere', Pattern = '(?-xism:^((?:/[^/]*)+?)/?$)', Format = ' $1 ', Prompt = 'Path to (optional) ffmpeg mpeg encoder', Help = 'This path should point to where the ffmpeg has been installed.', Category = 'images', Readonly = '0', Requires = 'ZM_OPT_MPEG=ffmpeg';
+ insert into Config set Id = 37, Name = 'ZM_FFMPEG_INPUT_OPTIONS', Value = '', Type = 'string', DefaultValue = '', Hint = 'string', Pattern = '(?-xism:^(.+)$)', Format = ' $1 ', Prompt = 'Additional input options to ffmpeg', Help = 'Ffmpeg can take many options on the command line to control the quality of video produced. This option allows you to specify your own set that apply to the input to ffmpeg (options that are given before the -i option). Check the ffmpeg documentation for a full list of options which may be used here.', Category = 'images', Readonly = '0', Requires = 'ZM_OPT_MPEG=ffmpeg';
+ insert into Config set Id = 38, Name = 'ZM_FFMPEG_OUTPUT_OPTIONS', Value = '-r 25', Type = 'string', DefaultValue = '-r 25', Hint = 'string', Pattern = '(?-xism:^(.+)$)', Format = ' $1 ', Prompt = 'Additional output options to ffmpeg', Help = 'Ffmpeg can take many options on the command line to control the quality of video produced. This option allows you to specify your own set that apply to the output from ffmpeg (options that are given after the -i option). Check the ffmpeg documentation for a full list of options which may be used here. The most common one will often be to force an output frame rate supported by the video encoder.', Category = 'images', Readonly = '0', Requires = 'ZM_OPT_MPEG=ffmpeg';
+ insert into Config set Id = 39, Name = 'ZM_FFMPEG_FORMATS', Value = 'mpg* mpeg wmv avi mov 3gp**', Type = 'string', DefaultValue = 'mpg* mpeg wmv avi mov 3gp**', Hint = 'string', Pattern = '(?-xism:^(.+)$)', Format = ' $1 ', Prompt = 'Formats to allow for ffmpeg video generation', Help = 'Ffmpeg can generate video in many different formats. This option allows you to list the ones you want to be able to select. As new formats are supported by ffmpeg you can add them here and be able to use them immediately. Adding a \'*\' after a format indicates that this will be the default format used for web video, adding \'**\' defines the default format for phone video.', Category = 'images', Readonly = '0', Requires = 'ZM_OPT_MPEG=ffmpeg';
+-insert into Config set Id = 40, Name = 'ZM_OPT_NETPBM', Value = '0', Type = 'boolean', DefaultValue = 'no', Hint = 'yes|no', Pattern = '(?i-xsm:^([yn]))', Format = ' ($1 =~ /^y/) ? \"yes\" : \"no\" ', Prompt = 'Are the (optional) Netpbm utilities installed', Help = 'For low bandwidth situations ZoneMinder will resize images into thumbnails on the fly before sending them to the browser to reduce the network traffic at the expense of CPU on the server. It uses the Netpbm package to do this and this option should be set to where the binaries from that package are installed. If you do not have it installed it means that the images will always be sent full size and rescaled on your browser which may or not be an issue for you.', Category = 'images', Readonly = '0', Requires = '';
++insert into Config set Id = 40, Name = 'ZM_OPT_NETPBM', Value = '1', Type = 'boolean', DefaultValue = 'no', Hint = 'yes|no', Pattern = '(?i-xsm:^([yn]))', Format = ' ($1 =~ /^y/) ? \"yes\" : \"no\" ', Prompt = 'Are the (optional) Netpbm utilities installed', Help = 'For low bandwidth situations ZoneMinder will resize images into thumbnails on the fly before sending them to the browser to reduce the network traffic at the expense of CPU on the server. It uses the Netpbm package to do this and this option should be set to where the binaries from that package are installed. If you do not have it installed it means that the images will always be sent full size and rescaled on your browser which may or not be an issue for you.', Category = 'images', Readonly = '0', Requires = '';
+ insert into Config set Id = 41, Name = 'ZM_PATH_NETPBM', Value = '/usr/bin', Type = 'string', DefaultValue = '/usr/bin', Hint = '/absolute/path/to/somewhere', Pattern = '(?-xism:^((?:/[^/]*)+?)/?$)', Format = ' $1 ', Prompt = 'Path to (optional) Netpbm utilities', Help = 'For low bandwidth situations ZoneMinder will resize images into thumbnails on the fly before sending them to the browser to reduce the network traffic at the expense of CPU on the server. It uses the Netpbm package to do this and this option should be set to where the binaries from that package are installed. If you do not have it installed it means that the images will always be sent full size and rescaled on your browser which may or not be an issue for you.', Category = 'images', Readonly = '0', Requires = 'ZM_OPT_NETPBM=1';
+ insert into Config set Id = 42, Name = 'ZM_RECORD_EVENT_STATS', Value = '1', Type = 'boolean', DefaultValue = 'yes', Hint = 'yes|no', Pattern = '(?i-xsm:^([yn]))', Format = ' ($1 =~ /^y/) ? \"yes\" : \"no\" ', Prompt = 'Record event statistical information, switch off if too slow', Help = 'This version of ZoneMinder records detailed information about events in the Stats table. This can help in profiling what the optimum settings are for Zones though this is tricky at present. However in future releases this will be done more easily and intuitively, especially with a large sample of events. The default option of \'yes\' allows this information to be collected now in readiness for this but if you are concerned about performance you can switch this off in which case no Stats information will be saved.', Category = 'debug', Readonly = '0', Requires = '';
+ insert into Config set Id = 43, Name = 'ZM_RECORD_DIAG_IMAGES', Value = '0', Type = 'boolean', DefaultValue = 'no', Hint = 'yes|no', Pattern = '(?i-xsm:^([yn]))', Format = ' ($1 =~ /^y/) ? \"yes\" : \"no\" ', Prompt = 'Record intermediate alarm diagnostic images, can be very slow', Help = 'In addition to recording event statistics you can also record the intermediate diagnostic images that display the results of the various checks and processing that occur when trying to determine if an alarm event has taken place. There are several of these images generated for each frame and zone for each alarm or alert frame so this can have a massive impact on performance. Only switch this setting on for debug or analysis purposes and remember to switch it off again once no longer required.', Category = 'debug', Readonly = '0', Requires = '';
+ insert into Config set Id = 44, Name = 'ZM_EXTRA_DEBUG', Value = '0', Type = 'boolean', DefaultValue = 'no', Hint = 'yes|no', Pattern = '(?i-xsm:^([yn]))', Format = ' ($1 =~ /^y/) ? \"yes\" : \"no\" ', Prompt = 'Whether to switch additional debugging on', Help = 'ZoneMinder binary components usually have several levels of debug information they can output. Normally this is set to a fairly low level to avoid filling logs too quickly. This options lets you switch on other options that allow you to configure additional debug information to be output. Components will pick up this instruction when they are restarted.', Category = 'debug', Readonly = '0', Requires = '';
+ insert into Config set Id = 45, Name = 'ZM_EXTRA_DEBUG_TARGET', Value = '', Type = 'string', DefaultValue = '', Hint = 'string', Pattern = '(?-xism:^(.+)$)', Format = ' $1 ', Prompt = 'What components should have extra debug enabled', Help = 'There are three scopes of debug available. Leaving this option blank means that all components will use extra debug (not recommended). Setting this option to \'_<component>\', e.g. _zmc, will limit extra debug to that component only. Setting this option to \'_<component>_<identity>\', e.g. \'_zmc_m1\' will limit extra debug to that instance of the component only. This is ordinarily what you probably want to do.', Category = 'debug', Readonly = '0', Requires = 'ZM_EXTRA_DEBUG=1';
+ insert into Config set Id = 46, Name = 'ZM_EXTRA_DEBUG_LEVEL', Value = '0', Type = 'integer', DefaultValue = '0', Hint = '0|1|2|3|4|5|6|7|8|9', Pattern = '(?-xism:^(\d+)$)', Format = ' $1 ', Prompt = 'What level of extra debug should be enabled', Help = 'There are 9 levels of debug available, with higher numbers being more debug and level 0 being no debug. However not all levels are used by all components. Also if there is debug at a high level it is usually likely to be output at such a volume that it may obstruct normal operation. For this reason you should set the level carefully and cautiously until the degree of debug you wish to see is present.', Category = 'debug', Readonly = '0', Requires = 'ZM_EXTRA_DEBUG=1';
+-insert into Config set Id = 47, Name = 'ZM_EXTRA_DEBUG_LOG', Value = '/tmp/zm_debug.log+', Type = 'string', DefaultValue = '/tmp/zm_debug.log+', Hint = 'string', Pattern = '(?-xism:^(.+)$)', Format = ' $1 ', Prompt = 'Where extra debug is output to', Help = 'Depending on your system configuration you may find that only errors, warning and informational messages are logged to your system log. This option allows you to specify an additional target for these messages and debug. This also has the advantage of partitioning debug for the component you are tracing, from messages from other components. Be warned however that if this is a simple filename and you are debugging several components then they will all try and write to the same file with undesirable consequences. Appending a \'+\' to the filename will cause the file to be created with a \'.<pid>\' suffix containing your process id. In this way debug from each run of a component is kept separate. This is the recommended setting as it will also prevent subsequent runs from overwriting the same log.', Category = 'debug', Readonly = '0', Requires = 'ZM_EXTRA_DEBUG=1';
+-insert into Config set Id = 48, Name = 'ZM_PATH_SOCKS', Value = '/tmp', Type = 'string', DefaultValue = '/tmp', Hint = '/absolute/path/to/somewhere', Pattern = '(?-xism:^((?:/[^/]*)+?)/?$)', Format = ' $1 ', Prompt = 'Path to the various Unix domain socket files that ZoneMinder uses', Help = 'ZoneMinder generally uses Unix domain sockets where possible. This reduces the need for port assignments and prevents external applications from possibly compromising the daemons. However each Unix socket requires a .sock file to be created. This option where those socket files go.', Category = 'paths', Readonly = '0', Requires = '';
+-insert into Config set Id = 49, Name = 'ZM_PATH_LOGS', Value = '/tmp', Type = 'string', DefaultValue = '/tmp', Hint = '/absolute/path/to/somewhere', Pattern = '(?-xism:^((?:/[^/]*)+?)/?$)', Format = ' $1 ', Prompt = 'Path to the various logs that the ZoneMinder daemons generate', Help = 'There are various daemons that are used by ZoneMinder to perform various tasks. Most generate helpful log files and this is where they go. They can be deleted if not required for debugging.', Category = 'paths', Readonly = '0', Requires = '';
++insert into Config set Id = 47, Name = 'ZM_EXTRA_DEBUG_LOG', Value = '/var/log/zoneminder/zm_debug.log+', Type = 'string', DefaultValue = '/tmp/zm_debug.log+', Hint = 'string', Pattern = '(?-xism:^(.+)$)', Format = ' $1 ', Prompt = 'Where extra debug is output to', Help = 'Depending on your system configuration you may find that only errors, warning and informational messages are logged to your system log. This option allows you to specify an additional target for these messages and debug. This also has the advantage of partitioning debug for the component you are tracing, from messages from other components. Be warned however that if this is a simple filename and you are debugging several components then they will all try and write to the same file with undesirable consequences. Appending a \'+\' to the filename will cause the file to be created with a \'.<pid>\' suffix containing your process id. In this way debug from each run of a component is kept separate. This is the recommended setting as it will also prevent subsequent runs from overwriting the same log.', Category = 'debug', Readonly = '0', Requires = 'ZM_EXTRA_DEBUG=1';
++insert into Config set Id = 48, Name = 'ZM_PATH_SOCKS', Value = '/var/run/zm', Type = 'string', DefaultValue = '/tmp', Hint = '/absolute/path/to/somewhere', Pattern = '(?-xism:^((?:/[^/]*)+?)/?$)', Format = ' $1 ', Prompt = 'Path to the various Unix domain socket files that ZoneMinder uses', Help = 'ZoneMinder generally uses Unix domain sockets where possible. This reduces the need for port assignments and prevents external applications from possibly compromising the daemons. However each Unix socket requires a .sock file to be created. This option where those socket files go.', Category = 'paths', Readonly = '0', Requires = '';
++insert into Config set Id = 49, Name = 'ZM_PATH_LOGS', Value = '/var/log/zoneminder', Type = 'string', DefaultValue = '/tmp', Hint = '/absolute/path/to/somewhere', Pattern = '(?-xism:^((?:/[^/]*)+?)/?$)', Format = ' $1 ', Prompt = 'Path to the various logs that the ZoneMinder daemons generate', Help = 'There are various daemons that are used by ZoneMinder to perform various tasks. Most generate helpful log files and this is where they go. They can be deleted if not required for debugging.', Category = 'paths', Readonly = '0', Requires = '';
+ insert into Config set Id = 50, Name = 'ZM_WEB_TITLE_PREFIX', Value = 'ZM', Type = 'string', DefaultValue = 'ZM', Hint = 'string', Pattern = '(?-xism:^(.+)$)', Format = ' $1 ', Prompt = 'The title prefix displayed on each window', Help = 'If you have more than one installation of ZoneMinder it can be helpful to display different titles for each one. Changing this option allows you to customise the window titles to include further information to aid identification.', Category = 'web', Readonly = '0', Requires = '';
+ insert into Config set Id = 51, Name = 'ZM_WEB_RESIZE_CONSOLE', Value = '1', Type = 'boolean', DefaultValue = 'yes', Hint = 'yes|no', Pattern = '(?i-xsm:^([yn]))', Format = ' ($1 =~ /^y/) ? \"yes\" : \"no\" ', Prompt = 'Should the console window resize itself to fit', Help = 'Traditionally the main ZoneMinder web console window has resized itself to shrink to a size small enough to list only the monitors that are actually present. This is intended to make the window more unobtrusize but may not be to everyones tastes, especially if opened in a tab in browsers which support this kind if layout. Switch this option off to have the console window size left to the users preference', Category = 'web', Readonly = '0', Requires = '';
+ insert into Config set Id = 52, Name = 'ZM_WEB_POPUP_ON_ALARM', Value = '1', Type = 'boolean', DefaultValue = 'yes', Hint = 'yes|no', Pattern = '(?i-xsm:^([yn]))', Format = ' ($1 =~ /^y/) ? \"yes\" : \"no\" ', Prompt = 'Should the monitor window jump to the top if an alarm occurs', Help = 'When viewing a live monitor stream you can specify whether you want the window to pop to the front if an alarm occurs when the window is minimised or behind another window. This is most useful if your monitors are over doors for example when they can pop up if someone comes to the doorway.', Category = 'web', Readonly = '0', Requires = '';
diff --git a/www-misc/zoneminder/zoneminder-1.22.3.ebuild b/www-misc/zoneminder/zoneminder-1.22.3.ebuild
new file mode 100644 (file)
index 0000000..07457b7
--- /dev/null
@@ -0,0 +1,102 @@
+# Copyright 1999-2006 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/www-misc/zoneminder/zoneminder-1.22.3.ebuild,v 1.1 2006/12/11 02:00:57 rl03 Exp $
+
+inherit eutils webapp autotools depend.php depend.apache
+
+WEBAPP_MANUAL_SLOT="yes"
+SLOT="0"
+MY_PV=${PV/_/-}
+MY_PN="ZoneMinder"
+
+DESCRIPTION="ZoneMinder allows you to capture, analyse, record and monitor any cameras attached to your system."
+HOMEPAGE="http://www.zoneminder.com/"
+SRC_URI="http://www.zoneminder.com/downloads/${MY_PN}-${MY_PV}.tar.gz"
+LICENSE="GPL-2"
+KEYWORDS="~x86 ~ppc"
+IUSE="mpeg"
+
+DEPEND="
+       >=media-libs/jpeg-6b
+       >=dev-lang/perl-5.6.0
+       dev-perl/DBI
+       dev-perl/DBD-mysql
+       virtual/perl-Getopt-Long
+       virtual/perl-Time-HiRes
+       dev-perl/DateManip
+       dev-perl/libwww-perl
+       dev-perl/Device-SerialPort
+       virtual/perl-libnet
+       dev-perl/Archive-Tar
+       dev-perl/Archive-Zip
+       dev-perl/MIME-Lite
+       dev-perl/MIME-tools
+       virtual/perl-Sys-Syslog
+       dev-perl/X10
+       app-admin/sudo
+"
+
+want_apache
+need_php_httpd
+
+RDEPEND="mpeg? ( media-video/ffmpeg )
+       media-libs/netpbm
+       dev-perl/DBD-mysql"
+
+S=${WORKDIR}/${MY_PN}-${MY_PV}
+
+pkg_setup() {
+       webapp_pkg_setup
+       has_php
+       require_php_with_use mysql
+}
+
+src_unpack() {
+       unpack ${A}
+       cd ${S}
+       epatch ${FILESDIR}/Makefile.am.patch
+       epatch ${FILESDIR}/zm_create.sql.in.diff
+}
+
+src_compile() {
+       eautoreconf
+
+       local MY_CONF="--with-mysql=/usr \
+               --with-webdir=${MY_HTDOCSDIR} \
+               --with-cgidir=${MY_CGIBINDIR} \
+               --with-webuser=apache \
+               --with-webgroup=apache"
+       use mpeg && MY_CONF="${MY_CONF} --with-ffmpeg=/usr"
+
+       econf ${MY_CONF} || die "econf failed"
+       emake || die "emake failed"
+}
+
+src_install() {
+       webapp_src_preinst
+
+       keepdir /var/run/zm
+       emake -j1 DESTDIR=${D} install || die "emake install failed"
+       dodoc AUTHORS ChangeLog INSTALL NEWS README README.[prt]* TODO
+       dohtml README.html
+
+       dodir /usr/share/${PN}/db
+       cp db/zm_u* db/zm_create.sql ${D}/usr/share/${PN}/db
+
+       for DIR in events images sound; do
+               dodir ${MY_HTDOCSDIR}/${DIR}
+               webapp_serverowned ${MY_HTDOCSDIR}/${DIR}
+       done
+
+       webapp_postinst_txt en ${FILESDIR}/postinstall-2.txt
+       webapp_postupgrade_txt en ${FILESDIR}/postupgrade.txt
+       webapp_src_install
+       fperms 0644 /etc/zm.conf
+
+       keepdir /var/log/${PN}
+       fowners apache:apache /var/log/${PN}
+       fowners apache:apache /var/run/zm
+
+       newinitd ${FILESDIR}/init.d zoneminder
+       newconfd ${FILESDIR}/conf.d zoneminder
+}