aboutsummaryrefslogtreecommitdiffstats
path: root/community/zabbix/APKBUILD
blob: 726833f83a23aaf44bdf19e6f9ea21b0a7193c41 (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
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
# Contributor: Łukasz Jendrysik <scadu@yandex.com>
# Contributor: Jeff Bilyk <jbilyk at gmail>
# Contributor: Leonardo Arena <rnalrd@alpinelinux.org>
# Maintainer: Kevin Daudt <kdaudt@alpinelinux.org>
pkgname=zabbix
pkgver=6.2.1
pkgrel=4
pkgdesc="Enterprise-class open source distributed monitoring"
url="http://www.zabbix.com"
arch="all"
license="GPL-2.0-or-later"
depends="fping"
_php=php81
_php_depends="$_php
	$_php-bcmath
	$_php-ctype
	$_php-curl
	$_php-fileinfo
	$_php-gd
	$_php-gettext
	$_php-iconv
	$_php-json
	$_php-mbstring
	$_php-openssl
	$_php-session
	$_php-simplexml
	$_php-sockets
	$_php-xmlreader
	$_php-xmlwriter
	"
makedepends="
	libxml2-dev
	sqlite-dev
	autoconf
	automake
	curl-dev
	go
	libevent-dev
	libpq-dev
	libssh2-dev
	mariadb-connector-c-dev
	net-snmp-dev
	openipmi-dev
	openssl-dev>3
	pcre2-dev
	unixodbc-dev
	$_php_depends
	"
install="$pkgname.pre-install"
pkgusers="zabbix"
pkggroups="zabbix"
options="!check" # no tests available
subpackages="
	$pkgname-agent
	$pkgname-agent-openrc:agent_openrc
	$pkgname-agent2
	$pkgname-agent2-openrc:agent2_openrc
	$pkgname-doc
	$pkgname-mysql
	$pkgname-openrc
	$pkgname-pgsql
	$pkgname-setup::noarch
	$pkgname-sqlite
	$pkgname-utils
	$pkgname-webif::noarch
	"
source="$pkgname-$pkgver.tar.gz::https://github.com/zabbix/zabbix/archive/${pkgver/_/}.tar.gz
	zabbix-server.initd
	zabbix-server.confd
	zabbix-agentd.initd
	zabbix-agent2.initd
	zabbix-proxy.initd

	zabbix-getloadavg.patch
	automake.patch
	musl-fix-includes.patch
	zabbix_server.conf.patch
	zabbix_agent2.conf.patch
	go-agent-plugin-uname-add-riscv64.patch
	ui-services-fix-php-80.patch
	"

builddir="$srcdir/$pkgname-${pkgver/_/}"

[ "$CARCH" = "riscv64" ] && options="$options textrels"

# secfixes:
#   5.4.9-r1:
#     - CVE-2022-22704
#   5.2.6-r0:
#     - CVE-2021-27927
#   3.0.4-r0:
#     - CVE-2016-9140

export GOCACHE="$srcdir/go-cache"
export GOTMPDIR="$srcdir"
export GOMODCACHE="$srcdir/go"
export GOFLAGS="$GOFLAGS -modcacherw"

prepare() {
	default_prepare
	autoreconf -fvi

	# Fix config file locations
	for file in server agentd proxy; do
		sed -i "$builddir"/conf/zabbix_$file.conf \
			-e 's|SNMPTrapperFile=/tmp|SNMPTrapperFile=/var/log/zabbix|' \
			-e 's|PidFile=/tmp|PidFile=/var/run/zabbix|' \
			-e 's|LogFile=/tmp|LogFile=/var/log/zabbix|'
	done
}

build() {
	# set default configure flags
	_configure="--prefix=/usr \
			--sysconfdir=/etc/zabbix \
			--mandir=/usr/share/man \
			--infodir=/usr/share/info \
			--enable-agent \
			--enable-agent2 \
			--enable-proxy \
			--enable-ipv6 \
			--with-net-snmp \
			--with-libcurl \
			--with-libxml2 \
			--with-openipmi \
			--with-unixodbc \
			--with-ssh2 \
			--with-openssl \
			--with-libpcre2
			"

	export GOPATH="$builddir"
	# pass --export-dynamic to the linker
	# to make zabbix loadable modules work
	LDFLAGS="$LDFLAGS -Wl,--export-dynamic"
	# we run build for each db type
	# make sure prepare is same for each db
	for db in postgresql mysql sqlite3; do
		cd "$srcdir"
		msg "Building for $db"
		cp -r "$builddir" "$builddir-$db"
		cd "$builddir-$db"
		case $db in
			sqlite3)
				./configure \
					--build=$CBUILD \
					--host=$CHOST \
					--with-$db \
					$_configure
			;;
			*)
				./configure \
					--build=$CBUILD \
					--host=$CHOST \
					--enable-server \
					--with-$db \
					$_configure
			;;
		esac
		make
		make dbschema
	done
}

package() {
	# doing manual install
	components="agentd agent2 proxy server";

	for i in $components; do
		install -D -m755 "$builddir"/man/zabbix_$i.man \
			"$pkgdir"/usr/share/man/man8/zabbix_$i.8
	done
	for i in get sender; do
		install -D -m755 "$builddir"/man/zabbix_$i.man \
			"$pkgdir"/usr/share/man/man1/zabbix_$i.1
	done
	install -d -m0750 -o zabbix -g zabbix \
		"$pkgdir"/var/run/zabbix "$pkgdir"/var/log/zabbix
	install -D -m0644 "$builddir"/conf/zabbix_server.conf \
		"$pkgdir"/etc/zabbix/zabbix_server.conf
	for i in server proxy; do
		install -D -m0755 "$srcdir"/zabbix-$i.initd \
			"$pkgdir"/etc/init.d/zabbix-$i
	done
	install -D -m0644 "$srcdir"/zabbix-server.confd \
		"$pkgdir"/etc/conf.d/zabbix-server
}

setup() {
	pkgdesc="Zabbix images and sql files"
	depends=
	mkdir -p "$subpkgdir"/usr/share/zabbix
	cp -r "$builddir-postgresql"/database "$subpkgdir"/usr/share/zabbix/
	find "$subpkgdir"/usr/share/zabbix -name 'Makefile*' -delete
}

_do_db() {
	pkgdesc="Zabbix server with $1 database support"
	depends="$pkgname $2"
	local i=
	mkdir -p "$subpkgdir"/usr/sbin
	if [ "$1" != "sqlite3" ]; then
		cp "$builddir-$1"/src/zabbix_server/zabbix_server \
			"$subpkgdir"/usr/sbin
	fi
	cp "$builddir-$1"/src/zabbix_proxy/zabbix_proxy	\
		"$subpkgdir"/usr/sbin
	install	-D -m0644 "$builddir"/conf/zabbix_proxy.conf \
		"$pkgdir"/etc/zabbix/zabbix_proxy.conf
	cd "$builddir"
	for i in upgrades/dbpatches/*/"$1"; do
		[ -e $i ] || continue
		mkdir -p "$subpkgdir"/usr/share/zabbix/${i%/*}
		cp "$i" "$subpkgdir"/usr/share/zabbix/$i
	done
	return 0
}

pgsql() { _do_db postgresql "!$pkgname-mysql !$pkgname-sqlite";}
mysql() { _do_db mysql "!$pkgname-pgsql !$pkgname-sqlite";}
sqlite() { _do_db sqlite3 "!$pkgname-pgsql !$pkgname-mysql";}

utils() {
	pkgdesc="Zabbix client utilities"
	depends=
	mkdir -p "$subpkgdir"/usr/bin
	cp "$builddir-postgresql"/src/zabbix_get/zabbix_get \
		"$subpkgdir"/usr/bin
	cp "$builddir-postgresql"/src/zabbix_sender/zabbix_sender \
			"$subpkgdir"/usr/bin
}

webif() {
	pkgdesc="Zabbix web-interface"
	depends="$_php_depends"
	_wwwdir="$subpkgdir"/usr/share/webapps/zabbix
	mkdir -p $_wwwdir
	cp -r "$builddir"/ui/* "$_wwwdir"
}

agent() {
	pkgdesc="Zabbix Network Monitoring Agent"
	depends=
	install="$subpkgname.pre-install"

	install -d -m0750 -o zabbix -g zabbix \
		"$subpkgdir"/var/run/zabbix "$subpkgdir"/var/log/zabbix
	mkdir -p "$subpkgdir"/usr/sbin
	cp "$builddir-postgresql"/src/zabbix_agent/zabbix_agentd \
		"$subpkgdir"/usr/sbin

	install -D -m0644 "$builddir"/conf/zabbix_agentd.conf \
		"$subpkgdir"/etc/zabbix/zabbix_agentd.conf
}

agent_openrc() {
	pkgdesc="Zabbix Network Monitoring Agent (OpenRC init scripts)"
	depends=openrc
	install_if="openrc $pkgname-agent=$pkgver-r$pkgrel"

	install -D -m0755 "$srcdir"/zabbix-agentd.initd \
		"$subpkgdir"/etc/init.d/zabbix-agentd
}

agent2() {
	pkgdesc="Zabbix Network Monitoring Agent (version 2)"
	depends=
	install="$subpkgname.pre-install"

	install -d -m0750 -o zabbix -g zabbix \
		"$subpkgdir"/var/run/zabbix "$subpkgdir"/var/log/zabbix
	mkdir -p "$subpkgdir"/usr/sbin
	cp "$builddir-postgresql"/src/go/bin/zabbix_agent2 \
		"$subpkgdir"/usr/sbin/zabbix_agent2

	install -D -m0644 "$builddir"/src/go/conf/zabbix_agent2.conf \
		"$subpkgdir"/etc/zabbix/zabbix_agent2.conf

	install -D -m0644 "$builddir"/src/go/conf/zabbix_agent2.d/plugins.d/* \
		-t "$subpkgdir"/etc/zabbix/zabbix_agent2.d/plugins.d/
}

agent2_openrc() {
	pkgdesc="Zabbix Network Monitoring Agent 2 (OpenRC init scripts)"
	depends=openrc
	install_if="openrc $pkgname-agent2=$pkgver-r$pkgrel"

	install -D -m0755 "$srcdir"/zabbix-agent2.initd \
		"$subpkgdir"/etc/init.d/zabbix-agent2
}

sha512sums="
9632d1e60f4a5acb64abed79a0f2c6c9ee3135c08219fad535e50b794e5d4911a5b95c03c273821d4dc4374fd21c817fad5ffbb4eb92d6e9c756a08a57db9857  zabbix-6.2.1.tar.gz
9998ee172a28002d98bacc3f76038ff52b8cf2b206e101418d76b4ca3de94afaf92cb4f7a6235ecf177f74beb9dd3ea1f3983c4f164b4f60bb601acba65aa175  zabbix-server.initd
9c06527bf653c40585fa7eeb3f7a0b2fc454031d24cd0d1633aed87b78a681c5227a193c5b9fcfcea0839135874e27ba7dd9b198573f905f680a2856f79e9512  zabbix-server.confd
7beca0fc6e254c1692e0e74deb9eb3d06ac78f5f6b08f3ab0491861e11e09f00f57bb4d22e11517dab86456e87bd13110805bfb38a715d2f1e68549937b29c76  zabbix-agentd.initd
fed1e11ca4d97ad348308d02dff800598748c427bc427c3d52b9bca6a9269904c83ae6be08bacccc65d3d71c6ce50f895782d0650e27244bd2bdbe4ecb807e78  zabbix-agent2.initd
a26e7ac422ff60a4b8eed3603022c3a1bde640870bb9286ab061c3cb5c2fd7e91ddb317cb3d1cf61034adda0a080fc212ad416c9e2853a1deb03c5279753f4e2  zabbix-proxy.initd
9fc413b11a01c8202c7ee1c7950d6ca3de2d2d6cd01bea994cd4bc412533b53c4e4b1f58fc3c8df16ea70902053e278e2c5dcc936ce3e0a686a6eac62310ef53  zabbix-getloadavg.patch
a682e2d7306c878b716f2a262520d2d59c61926580a56784749dca5a0473f83dd51f736ca5a8894a42e3376c6040b51cc56c455d5df53ba9ac929fe3193d91fe  automake.patch
442f7dcc47129955618f8c43ff0d706dcad582725e37256477992ee10c18d93484c4180a815437ce736dbcf880cbf08cf9642b7a07e9d6c2f6aa994712ea5286  musl-fix-includes.patch
183e2d99800d8eebb932cb31c5a3e8742ce6a15e87aec50dc49d9c20b35840eb7ede9920aa62d2c7a5e3f584f5c3df398aa08e93f98fa537a3ba6db63b472a1f  zabbix_server.conf.patch
35ea336a8f3e0bdcec4a0cde01fcd9edfa20a94f29ca3a1905aa8a60938f34101ef8d9bdebf744a7ac53ee3b1ece4c3491def52c6bd8394ce6fed88ca93586b1  zabbix_agent2.conf.patch
b4484e007377525c37555678c0da4a08f9465f454460ad1d6eae66bd09f88e77918267e65fb6b8aaa2a0a14d3683b4b2a4446550cce8921e240ff6a4291048c6  go-agent-plugin-uname-add-riscv64.patch
c4a0ae137f70bf477a74a43424a66a759f8828907d441213fbe5cba6e6865b3741ae625be534698423853cfaaeed9823dd537b7aa1689e2992a36ff8a5a24127  ui-services-fix-php-80.patch
"