# Contributor: Sören Tempel <soeren+alpine@soeren-tempel.net>
# Contributor: Johannes Matheis <jomat+alpinebuild@jmt.gr>
# Maintainer: Patrycja Rosa <alpine@ptrcnull.me>
pkgname=mumble
pkgver=1.5.735
_srvname="mumble-server"
pkgrel=3
pkgdesc="Low-latency, high quality voice chat software"
url="https://wiki.mumble.info/"
arch="all"
license="BSD-3-Clause"
options="!check"
depends="qt5-qtbase-sqlite"
makedepends="
	alsa-lib-dev
	avahi-dev
	boost-dev
	cmake
	libcap-dev
	libsndfile-dev
	libxi-dev
	openssl-dev>3
	opus-dev
	poco-dev
	protobuf-dev
	qt5-qtbase-dev
	qt5-qtsvg-dev
	qt5-qttools-dev
	samurai
	speex-dev
	speexdsp-dev
	rnnoise-dev
	"
install="$_srvname.pre-install"
pkgusers="murmur"
pkggroups="murmur"
subpackages="
	$pkgname-doc
	$_srvname
	$_srvname-openrc
	$_srvname-doc:server_doc
	murmur-compat:compat:noarch
	"
source="https://github.com/mumble-voip/mumble/releases/download/v$pkgver/mumble-$pkgver.tar.gz
	$_srvname.initd

	EVIO-int.patch
	32-bit.patch
	"

# secfixes:
#   1.3.4-r0:
#     - CVE-2021-27229
#   1.2.19-r9:
#     - CVE-2018-20743

build() {
	CFLAGS="$CFLAGS -flto=auto" \
	CXXFLAGS="$CXXFLAGS -flto=auto" \
	cmake -B build -G Ninja \
		-DCMAKE_INSTALL_PREFIX=/usr \
		-DCMAKE_INSTALL_LIBDIR=lib \
		-DCMAKE_INSTALL_SYSCONFDIR=/etc \
		-DBUILD_SHARED_LIBS=True \
		-DCMAKE_BUILD_TYPE=MinSizeRel \
		-Doverlay-xcompile=OFF \
		-Dspeechd=OFF \
		-Dice=OFF \
		-Drnnoise=ON \
		-Dbundled-celt=ON \
		-Dbundle-qt-translations=OFF \
		-Dbundled-speex=OFF \
		-Dbundled-opus=OFF \
		-Dbundled-rnnoise=OFF \
		-Dupdate=OFF \
		-DBUILD_NUMBER="${pkgver##*.}"
	cmake --build build
}

package() {
	DESTDIR="$pkgdir" cmake --install build
	# remove systemd config which we don't use
	rm -r "${pkgdir:?}"/etc

	# license
	install -Dm644 ./LICENSE \
		"$pkgdir"/usr/share/licenses/$pkgname/LICENSE
	# openrc service
	install -Dm755 "$srcdir"/$_srvname.initd "$pkgdir"/etc/init.d/$_srvname
	# server binary is in the murmur package
	rm "$pkgdir"/usr/share/man/man1/mumble-server*
}

server() {
	pkgdesc="Mumble Server (formerly Murmur) is the server component of Mumble"
	provides="murmur=$pkgver-r$pkgrel"
	cd "$builddir"

	# Regarding the murmurd rename
	# See: https://github.com/mumble-voip/mumble
	install -o $pkgusers -g $pkggroups -dm755 \
		"$subpkgdir"/var/lib/$_srvname
	install -Dm644 ./auxiliary_files/$_srvname.ini \
		"$subpkgdir"/etc/$_srvname.ini
	amove "usr/bin/$_srvname*"

	sed -e "/^;\\?database=/c database=/var/lib/$_srvname/$_srvname.sqlite" \
	    -e "/^;\\?uname=/c uname=$pkgusers" \
	    -e "/^;\\?logfile=/c logfile=/var/log/$_srvname.log" \
	    -e "/^;\\?pidfile=/c pidfile=/var/run/$_srvname.pid" \
	    -i "$subpkgdir/etc/$_srvname.ini"
}

server_doc() {
	pkgdesc="Documentation for the server component of Mumble"
	provides="murmur-doc=$pkgver-r$pkgrel"

	cd "$builddir"
	install -Dm644 ./auxiliary_files/man_files/$_srvname.1 \
		"$subpkgdir"/usr/share/man/man1/$_srvname.1
	install -Dm644 ./LICENSE \
		"$subpkgdir"/usr/share/licenses/$_srvname/LICENSE

	default_doc
}

compat() {
	pkgdesc="Symlinks from old murmur -> $_srvname"
	depends="$_srvname"
	mkdir -p "$subpkgdir"/etc/init.d \
		"$subpkgdir"/var/lib \
		"$subpkgdir"/usr/bin \
		"$subpkgdir"/usr/share/man/man1
	ln -nfs $_srvname "$subpkgdir"/etc/init.d/murmurd
	ln -nfs $_srvname.ini "$subpkgdir"/etc/murmur.ini
	ln -nfs $_srvname "$subpkgdir"/var/lib/murmur
	ln -nfs $_srvname "$subpkgdir"/usr/bin/murmurd
	ln -nfs $_srvname.1 "$subpkgdir"/usr/share/man/man1/murmurd.1
}

sha512sums="
1dba58e6f39dbef88c6e0d1501530bee62af5bd6c798dcfdbe6c9d94c1ec22ab91d157ba3ccb96d810daf31907ac2bbec876be20b8c9613664488e6bb03a5b5b  mumble-1.5.735.tar.gz
e5fef5a8eda253cc7df6eed784ef9d55344440292d04fae9d46291b14b2d10283f9f5f2915f7374b37fd2c77b49babf594e4e154babcd30ef2d7467c558207ca  mumble-server.initd
959cdb890fab13573ba0fb0114556ed9f01b98e47d47a0a6430230a59aaece66286cd931aeb6ecaab20a553458e925db44488147e6ebf15fdcee236fd56d22d9  EVIO-int.patch
f14df650e2fbeaae07cec264bb1d3a4d3aca84edcaddc909e52cae0e5f0ff9eb3078fb151f12507255351c1541a6b38e05cd9763cf0a4457773955c84820fe0b  32-bit.patch
"
