summarylogtreecommitdiffstats
path: root/PKGBUILD
blob: ae691973f8bc321a603fbb5dcd8e13714be21a62 (plain)
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


pkgname=zoneminder
pkgver=1.36.15
pkgrel=1
pkgdesc='A full-featured, open source, state-of-the-art video surveillance software system'
arch=('any')
url='https://www.zoneminder.com/'
license=('GPL2')
depends=('polkit' 'ffmpeg'
         'php-apcu' 'php-fpm' 'php-gd'
         'perl-archive-zip' 'perl-data-dump' 'perl-date-manip' 'perl-datetime' 'perl-dbd-mysql' 'perl-device-serialport' 'perl-file-slurp'
         'perl-image-info' 'perl-libwww' 'perl-mime-lite' 'perl-mime-tools' 'perl-net-sftp-foreign' 'perl-number-bytes-human' 'perl-php-serialization'
         'perl-sys-cpu' 'perl-sys-meminfo' 'perl-sys-mmap' 'perl-uri-encode'
         # Needed for ONVIF support
         'perl-data-uuid' 'perl-io-socket-multicast' 'perl-soap-wsdl' 'perl-xml-libxml' 'perl-xml-parser'
         # Needed for SSL support
         'perl-lwp-protocol-https'
         # Needed for Telemetry support
         'perl-json-maybexs'         
         # Needed for encryption
         'perl-crypt-eksblowfish' 'perl-data-entropy'
         )
makedepends=('cmake' 'git')
optdepends=('mariadb'
            'apache'
            'nginx'
            'fcgiwrap: required if using nginx'
            'spawn-fcgi: required if using nginx'
            'multiwatch: required if using nginx'
            'pod2man: required for Docker support'
            'zmeventnotification: machine learning powered recognition engine & event notification server'
            'vlc: provides libvlc, which may achieve better performance with some camera models'
            'libvncserver')
conflicts=('zoneminder-git')
backup=("etc/nginx/sites-available/$pkgname.conf"
        "etc/httpd/conf/extra/$pkgname.conf"
        "etc/php/conf.d/$pkgname.ini")
install=$pkgname.install
source=("$pkgname-git::git+https://github.com/ZoneMinder/zoneminder.git#tag=$pkgver"
        "zoneminder-nginx.conf"
        "zoneminder-httpd.conf"
        "zoneminder-php.ini"
        "zoneminder.service"
        "zoneminder-tmpfile.conf"
        "fcgiwrap-multiwatch.service"
        "zmsetup.sh")
sha256sums=('SKIP'
            'c60e855428a56cc327214aa13d02a70011bf3b63a94a0d845b1c5ea1fab28ad2'
            '1f0d2276861065caf0b6c030ba27a6edb6a2988c7a1ac0fdf4e8fcb856972715'
            '2d7f5ac073687be75c7724b0acd3785d8c358e4f65341e60d39eb6006f31389b'
            '3e4de227e3154dffa887f2286c339ab3cf456f6d74a400b2786192b7e2b129c0'
            'b69ac1deaaf3cf84b4ae4dbab794e1b062823de817f1e3a816ccf5438db440c0'
            'e95f9bef77aef647dd633bd9ad75dc099b6d7184684e133f2f20702de83a6260'
            '255374c400e01c7666cc7b3e1f06da8445dc57afda631868d33ced62ba631c98')

prepare () {
    cd $pkgname-git
    
    # Download and move extra PHP plugins into place
    git submodule update --init --recursive
    
    # Fix the launcher
    sed -i 's|localhost/zm|localhost:8095|g' misc/$pkgname.desktop.in
}

build() {
    cd $pkgname-git
   
    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_TMPDIR=/var/tmp/$pkgname \
          -DZM_CONTENTDIR=/var/lib/$pkgname \
          -DZM_CACHEDIR=/var/lib/$pkgname/cache \
          -DZM_WEBDIR=/usr/share/webapps/$pkgname/www \
          -DZM_CGIDIR=/usr/share/webapps/$pkgname/cgi-bin \
          -DZM_WEB_USER=http .
          #-DCMAKE_CXX_FLAGS=-fpermissive .

    make
}
     
package() {
    cd $pkgname-git

    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
    install -dm755 -o http -g http                          $pkgdir/var/log/$pkgname
    
    # Create ZM_CONTENTDIR and its subfolders
    install -dm775 -o http -g http                          $pkgdir/var/lib/$pkgname/{cache,events,images}
    
    # Link ZM_CGIDIR and ZM_CACHEDIR inside ZM_WEBDIR and set correct permissions
    ln -sf /usr/share/webapps/$pkgname/cgi-bin              $pkgdir/usr/share/webapps/$pkgname/www
    ln -sf /var/lib/$pkgname/cache                          $pkgdir/usr/share/webapps/$pkgname/www
    chown -Rh http:http                                     $pkgdir/usr/share/webapps/$pkgname
    
    # Link ZM_WEBDIR/api/app/tmp to ZM_TMPDIR
    ln -sf /var/tmp/$pkgname                                $pkgdir/usr/share/webapps/$pkgname/www/api/app/tmp
    
    # Temporary fix for hardcoded /zm/ links (credit goes to @Kubax on AUR)
    ln -sf /usr/share/webapps/$pkgname/www                  $pkgdir/usr/share/webapps/$pkgname/www/zm
    
    # 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/*
    
    
    # Nginx conf file
    install -Dm644 $srcdir/$pkgname-nginx.conf              $pkgdir/etc/nginx/sites-available/$pkgname.conf    
    
    # Apache conf file
    install -Dm644 $srcdir/$pkgname-httpd.conf              $pkgdir/etc/httpd/conf/extra/$pkgname.conf
    
    # systemd service
    install -Dm644 $srcdir/$pkgname.service                 $pkgdir/usr/lib/systemd/system/$pkgname.service
    
    # systemd tmpfile
    install -Dm644 $srcdir/$pkgname-tmpfile.conf            $pkgdir/usr/lib/tmpfiles.d/$pkgname.conf
    
    # php.ini extension
    install -Dm644 $srcdir/$pkgname-php.ini                 $pkgdir/etc/php/conf.d/$pkgname.ini
    
    # fcgiwrap-multiwatch service
    install -Dm644 $srcdir/fcgiwrap-multiwatch.service      $pkgdir/usr/lib/systemd/system/fcgiwrap-multiwatch.service
    
    # optional install script
    install -Dm755 $srcdir/zmsetup.sh                       $pkgdir/usr/bin/zmsetup.sh
    
    # logrotate conf file
    install -Dm644 misc/logrotate.conf                      $pkgdir/etc/logrotate.d/$pkgname

    # database schemas
    install -Dm644 db/zm*.sql                               $pkgdir/usr/share/$pkgname/db
}