1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
|
# Maintainer: Nocifer <apmichalopoulos at gmail dot com>
# Contributor: Mesmer <mesmer@fisica.if.uff.br>
# Contributor: Troy Will <troydwill at gmail dot com>
# Contributor: /dev/rs0 </dev/rs0@secretco.de.com>
# Contributor: Jacek Burghardt <jacek@hebe.us>
# Contributor: Vojtech Aschenbrenner <v@asch.cz>
# Contributor: Jason Gardner <buhrietoe@gmail.com>
# Contributor: Ross melin <rdmelin@gmail.com>
# Contributor (Parabola): Márcio Silva <coadde@lavabit.com>
# Contributor (Parabola): André Silva <emulatorman@lavabit.com>
# Contributor: Charles Spence IV <cspence@unomaha.edu>
# Contributor: Joe Julian <me@joejulian.name>
# Orginally based on a Debian Squeeze package
### Important notes for version 1.32 ###
#
# 1) git-clone for CakePHP and Crud sources was replaced with published precompiled packages, as follows:
# - CakePHP-Enum-Behaviour is pulled from the ZoneMinder repo, because a change is needed that has not yet been merged upstream.
# - Crud is pulled from its official repo, since Pull Request #582 has been merged as required by the ZoneMinder devs.
#
# 2) Apache was switched out in favor of Nginx.
#
# 3) By default, ZoneMinder now runs at localhost:8095 instead of localhost/zm (this can be changed by editing the provided Nginx conf file).
#
# 4) For the time being Nginx and MariaDB are hard-coded as dependencies. In the future I'll look into supporting different use cases.
#######################################################################################################################
# #
# Due to the many breaking changes in this release (both upstream and in the packaging), it's recommended to backup #
# any existing ZoneMinder databases and perform a clean installation. Failure to do so may have very weird results. #
# #
#######################################################################################################################
pkgname=zoneminder
pkgver=1.32.1
pkgrel=1
pkgdesc='Free and open source CCTV software which supports IP, USB and analog cameras'
arch=('x86_64')
url='http://www.zoneminder.com'
license=('GPLv2')
depends=('polkit' 'ffmpeg' 'libmp4v2'
'mariadb' 'nginx-mainline' 'fcgiwrap' 'php-apcu' 'php-fpm' 'php-gd'
'perl-archive-zip' 'perl-data-dump' 'perl-date-manip' 'perl-dbd-mysql' 'perl-device-serialport' 'perl-file-slurp' 'perl-image-info'
'perl-json-any' 'perl-libwww' 'perl-mime-lite' 'perl-mime-tools' 'perl-number-bytes-human' 'perl-sys-meminfo' 'perl-sys-mmap'
# Needed for ONVIF support
'perl-class-load' 'perl-data-uuid' 'perl-io-socket-multicast' 'perl-soap-wsdl' 'perl-xml-parser'
# Needed for SSL support (otherwise zmupdate.pl complains there is no HTTPS support)
'perl-lwp-protocol-https'
# Apparently needed for Telemetry support
'perl-json-maybexs'
# Unverified dependencies. So far not installing them hasn't raised any red flags, but I can't be 100% sure whether they're leftovers from previous ZoneMinder incarnations or if they're needed for proper operation during runtime, so for the time being I'm leaving them in.
'perl-module-load-conditional' 'perl-net-sftp-foreign' 'perl-php-serialization' 'perl-sys-cpu' 'perl-uri-encode')
makedepends=('cmake')
optdepends=('vlc: provides libvlc (may achieve better performance with some cameras)'
'ffmpeg-full: provides libavresample (dropped from the official ffmpeg package)')
conflicts=('zoneminder-git')
backup=("etc/nginx/sites-available/$pkgname.conf")
install=$pkgname.install
source=("https://github.com/ZoneMinder/ZoneMinder/archive/$pkgver.tar.gz"
"https://github.com/FriendsOfCake/crud/archive/v3.2.0.tar.gz"
"https://github.com/ZoneMinder/CakePHP-Enum-Behavior/archive/1.0-zm.tar.gz"
"zoneminder-nginx.conf"
"zoneminder-php.ini"
"zoneminder.service"
"zoneminder-tmpfile.conf")
sha256sums=('a10c0c416e2127111b4d72f0046ed3a1f56708e3f4b48680848d755b01811d3c'
'55be29e1eccb44d4ad0db8b23c37cec50f5341f8e498583d472ed1f0493876e3'
'dbd231e97b950c698f0f501d6a53c7291c9985e766b09e3afe00cfe69a969f44'
'fed9010e55426cf05779c6161936655c7423c177c3b0b466a93853a61c79f7fe'
'7905ceddbb049de0f9bf4f1eb58779dfe310a65c4d2ec44854d592d4f31b6a72'
'aa34c9414341eecbda4cba1a3446cf5062ab5fddc06a7f999e71916437d5f88d'
'd1341338538f2ac771e6b1eee9aa48e8b0da4a140024c74bc33a9f6b52443bdd')
prepare () {
cd $pkgname-$pkgver
# Move extra PHP plugins into place
cp -R $srcdir/crud-3.2.0/* web/api/app/Plugin/Crud
cp -R $srcdir/CakePHP-Enum-Behavior-1.0-zm/* web/api/app/Plugin/CakePHP-Enum-Behavior
}
build() {
cd $pkgname-$pkgver
cmake -DCMAKE_INSTALL_PREFIX=/usr \
-DZM_CONFIG_DIR=/etc/$pkgname \
-DZM_CONFIG_SUBDIR=/etc/$pkgname/conf.d \
-DZM_RUNDIR=/run/$pkgname \
-DZM_SOCKDIR=/run/$pkgname \
-DZM_LOGDIR=/var/log/$pkgname \
-DZM_CONTENTDIR=/var/lib/$pkgname \
-DZM_CACHEDIR=/var/lib/$pkgname/cache \
-DZM_TMPDIR=/var/lib/$pkgname/temp \
-DZM_WEBDIR=/srv/$pkgname/www \
-DZM_CGIDIR=/srv/$pkgname/cgi-bin \
-DZM_WEB_USER=http .
make
}
package() {
cd $pkgname-$pkgver
make DESTDIR=$pkgdir install
# Set Polkit directory permissions in accordance with Arch policy
chmod 750 $pkgdir/usr/share/polkit-1/rules.d
chown root:polkitd $pkgdir/usr/share/polkit-1/rules.d
# Create ZM_LOGDIR
mkdir -p $pkgdir/var/log/$pkgname
chown -R http:http $pkgdir/var/log/$pkgname
chmod -R 775 $pkgdir/var/log/$pkgname
# Create ZM_CONTENTDIR and its subfolders
mkdir -p $pkgdir/var/lib/$pkgname/{cache,events,images,temp}
chown -R http:http $pkgdir/var/lib/$pkgname
chmod -R 775 $pkgdir/var/lib/$pkgname
# Run script provided by upstream to create and/or link the needed folders with proper permissions
./zmlinkcontent.sh -z $pkgdir/etc/$pkgname/zm.conf -w $pkgdir/srv/$pkgname/www -l $pkgdir/var/log/$pkgname -t $pkgdir/var/lib/$pkgname/temp $pkgdir/var/lib/$pkgname
# Link ZM_CGIDIR and ZM_CACHEDIR inside ZM_WEBDIR and set correct permissions
ln -s /srv/$pkgname/cgi-bin $pkgdir/srv/$pkgname/www
ln -s /var/lib/$pkgname/cache $pkgdir/srv/$pkgname/www
chown -Rh http:http $pkgdir/srv/$pkgname
# Set correct permissions for ZM_CONFIG_DIR & ZM_CONFIG_SUBDIR
chmod -R 755 $pkgdir/etc/$pkgname
chmod 644 $pkgdir/etc/$pkgname/zm.conf
chmod 644 $pkgdir/etc/$pkgname/conf.d/*
# Install Nginx configuration
mkdir -p $pkgdir/etc/nginx/sites-{available,enabled}
install -D -m 644 $srcdir/$pkgname-nginx.conf $pkgdir/etc/nginx/sites-available/$pkgname.conf
ln -s /etc/nginx/sites-available/$pkgname.conf $pkgdir/etc/nginx/sites-enabled/$pkgname.conf
# Install PHP-FPM custom .ini file
mkdir -p $pkgdir/etc/php/conf.d/
install -D -m 644 $srcdir/$pkgname-php.ini $pkgdir/etc/php/conf.d/$pkgname.ini
# Install systemd service
mkdir -p $pkgdir/usr/lib/systemd/system
install -D -m 644 $srcdir/$pkgname.service $pkgdir/usr/lib/systemd/system/$pkgname.service
# Install systemd tmpfile
mkdir -p $pkgdir/usr/lib/tmpfiles.d
install -D -m 644 $srcdir/$pkgname-tmpfile.conf $pkgdir/usr/lib/tmpfiles.d/$pkgname.conf
# Copy license and database schemas
install -D -m 644 COPYING $pkgdir/usr/share/license/$pkgname
install -D -m 644 db/zm*.sql $pkgdir/usr/share/$pkgname/db
}
|