# Contributor: Francisco Guerreiro <francisg@fnop.net>
# Contributor: Łukasz Jendrysik <scadu@yandex.com>
# Contributor: Cameron Banta <cbanta@gmail.com>
# Contributor: Ashley Sommer <ashleysommer@gmail.com>
# Contributor: Jakub Jirutka <jakub@jirutka.cz>
# Maintainer: Cameron Banta <cbanta@gmail.com>
pkgname=rsyslog
pkgver=8.2001.0
pkgrel=0
pkgdesc="Enhanced multi-threaded syslogd with database support and more."
url="https://www.rsyslog.com/"
arch="all !s390x" # limited by czmq
license="Apache-2.0 GPL-3.0-or-later LGPL-3.0-or-later"
options="!check"
makedepends="
	curl-dev
	czmq-dev
	gnutls-dev
	hiredis-dev
	krb5-dev
	libdbi-dev
	libestr-dev
	libfastjson-dev
	libgcrypt-dev
	liblogging-dev
	liblognorm-dev
	libmaxminddb-dev
	libnet-dev
	linux-headers
	librelp-dev
	mariadb-connector-c-dev
	net-snmp-dev
	postgresql-dev
	py3-docutils
	rabbitmq-c-dev
	util-linux-dev
	zlib-dev
	"
install="$pkgname.post-upgrade"
subpackages="$pkgname-doc $pkgname-dbg $pkgname-openrc"
source="https://www.rsyslog.com/files/download/rsyslog/rsyslog-$pkgver.tar.gz
	$pkgname.initd
	$pkgname.logrotate
	$pkgname.conf
	musl-fix.patch
	queue.patch
	"

# <subpackage>[:<module>...]
_plugins="
	crypto:lmcry_gcry
	elasticsearch:omelasticsearch
	gssapi:lmgssutil:imgssapi:omgssapi
	hiredis:omhiredis
	http:omhttp:fmhttp
	libdbi:omlibdbi
	mmanon
	mmaudit
	mmcount
	mmdblookup
	mmfields
	mmjsonparse
	mmnormalize
	mmpstrucdata
	mmrm1stspace
	mmsequence
	mmsnmptrapd
	mmutf8fix
	mysql:ommysql
	pgsql:ompgsql
	pmaixforwardedfrom
	pmlastmsg
	pmsnare
	rabbitmq:omrabbitmq
	relp:imrelp:omrelp
	snmp:omsnmp
	testing:omtesting
	tls:lmnsd_gtls
	udpspoof:omudpspoof
	uxsock:omuxsock
	zmq:imczmq:omczmq
	imdocker
	"
for _i in $_plugins; do
	subpackages="$subpackages $pkgname-${_i%%:*}:_plugin"
done

# secfixes:
#   8.1908.0-r1:
#     - CVE-2019-17040
#     - CVE-2019-17041
#     - CVE-2019-17042

build() {
	./configure \
		--build=$CBUILD \
		--host=$CHOST \
		--prefix=/usr \
		--sysconfdir=/etc \
		--mandir=/usr/share/man \
		\
		--disable-rfc3195 \
		--enable-largefile \
		--enable-gssapi-krb5 \
		--enable-mysql \
		--enable-pgsql \
		--enable-libdbi \
		--enable-snmp \
		--enable-elasticsearch \
		--enable-omhttp \
		--enable-gnutls \
		--enable-mail \
		--enable-imdiag \
		--enable-mmnormalize \
		--enable-mmjsonparse \
		--enable-mmaudit \
		--enable-mmanon \
		--enable-mmrm1stspace \
		--enable-mmutf8fix \
		--enable-mmcount \
		--enable-mmsequence \
		--enable-mmdblookup \
		--enable-mmfields \
		--enable-mmpstrucdata \
		--enable-relp \
		--enable-imfile \
		--enable-imptcp \
		--enable-impstats \
		--enable-omprog \
		--enable-omudpspoof \
		--enable-omstdout \
		--enable-pmlastmsg \
		--enable-pmaixforwardedfrom \
		--enable-pmsnare \
		--enable-omuxsock \
		--enable-mmsnmptrapd \
		--enable-omrabbitmq \
		--enable-imczmq \
		--enable-omczmq \
		--enable-omhiredis \
		--enable-imdocker
	make
}

package() {
	make DESTDIR="$pkgdir" install

	# Remove lib that is used only for testing.
	rm -f "$pkgdir"/usr/lib/rsyslog/imdiag.so

	install -m755 -D "$srcdir"/$pkgname.initd "$pkgdir"/etc/init.d/$pkgname
	install -m644 -D "$srcdir"/$pkgname.logrotate "$pkgdir"/etc/logrotate.d/$pkgname
	install -m644 -D "$srcdir"/$pkgname.conf "$pkgdir"/etc/$pkgname.conf

	install -m700 -d "$pkgdir"/var/lib/rsyslog
}

_plugin() {
	local name="${subpkgname#$pkgname-}"
	pkgdesc="$name support for $pkgname"
	depends="$pkgname=$pkgver-r$pkgrel"

	local libnames=$(printf '%s\n' $_plugins | grep "^$name:" | cut -d: -f2- | tr : ' ')
	local libname

	for libname in ${libnames:-$name}; do
		mkdir -p "$subpkgdir"/usr/lib/rsyslog/
		mv "$pkgdir"/usr/lib/rsyslog/$libname.so "$subpkgdir"/usr/lib/rsyslog/
	done

	# Allow people to find plugins by their full name (including prefix;
	# mm, om, im, ...).
	for libname in $libnames; do
		provides="$provides $pkgname-$libname=$pkgver-r$pkgrel"
	done
}

sha512sums="a68053630c43bea813cc3191ebff04473031df49899a6be2d5c331ac18882f373fc54fd7fb45c397fcbbcb269f246eeba5e9126911edd1bfe1c52f60921740d2  rsyslog-8.2001.0.tar.gz
bcd63c8df2ac63b80f3cb51ba7f544988df6cd875f4e81020e762dff30d7537f21b72c95a4b1c08baf15f4ed5f03defbf3f061673aabada5841f45ab9f579374  rsyslog.initd
b5cbdcfa601ae8e7617289e7805fe71daa17bd03a7a30e1e1aad7a58a4ad4c1d89c9a203228f15816232ab6ab6d7a2752f7bbf4d259bbd5eccbe9728dc7e8aaa  rsyslog.logrotate
9c9913b3367ac4d0b0f998ffa3aaaf136cf939ed4275f13f79d4c7336d0978007af13cb2c6f35d17ef25a53907fb064705f23c3b3a6a6fcd06ae85c3c51c7e38  rsyslog.conf
ce686b9529cdc74bd633a6fce169c1fdacf5266b4ca6fc731f8cea08080a1106f93dc048af9966cab09947100890170197c59d3f880992001a8ddfd084ffe2aa  musl-fix.patch
ef2e000b1c42cb5beffb26393952c2a692791e78972ee4b6f187ca53e338122b2004cc5216381c042195f12cc58f37f186a04e12a65b5bdfdcdf76b73393efb7  queue.patch"
