# Contributor: Michał Polański <michal@polanski.me>
# Contributor: Nicolas Lorin <androw95220@gmail.com>
# Maintainer: omni <omni+alpine@hack.org>
maintainer="omni <omni+alpine@hack.org>"
pkgname=usbguard
pkgver=1.1.3
pkgrel=6
pkgdesc="Software framework for implementing USB device authorization policies"
url="https://usbguard.github.io/"
license="GPL-2.0-or-later"
arch="all"
makedepends="
	abseil-cpp-dev
	asciidoc
	audit-dev
	catch2
	dbus-dev
	libcap-ng-dev
	libqb-dev
	libseccomp-dev
	libsodium-dev
	pegtl
	polkit-dev
	protobuf-dev
	"
checkdepends="coreutils"
subpackages="
	libusbguard:libs
	$pkgname-dev
	$pkgname-doc
	$pkgname-openrc
	$pkgname-dbus:_dbus
	$pkgname-dbus-openrc:_dbus_openrc
	$pkgname-bash-completion
	$pkgname-zsh-completion
	"
install="$pkgname.post-install $pkgname-dbus.post-install"
source="https://github.com/USBGuard/usbguard/releases/download/usbguard-$pkgver/usbguard-$pkgver.tar.gz
	usbguard.initd
	usbguard-dbus.initd
	"

prepare() {
	cp -a "$builddir" "$srcdir"/"$pkgname"-dbus

	default_prepare
}

build() {
	CXXFLAGS="$CXXFLAGS -flto=auto" \
	CFLAGS="$CFLAGS -flto=auto" \
	./configure \
		--build=$CBUILD \
		--host=$CHOST \
		--prefix=/usr \
		--sysconfdir=/etc \
		--localstatedir=/var \
		--disable-static \
		--without-bundled-catch \
		--without-bundled-pegtl \
		--without-dbus \
		--without-polkit \
		--with-crypto-library=sodium
	make

	# build again, with dbus support
	cd "$srcdir"/"$pkgname"-dbus
	./configure \
		--build=$CBUILD \
		--host=$CHOST \
		--prefix=/usr \
		--sysconfdir=/etc \
		--localstatedir=/var \
		--disable-static \
		--without-bundled-catch \
		--without-bundled-pegtl \
		--with-dbus \
		--with-polkit \
		--with-crypto-library=sodium
	make
}

check() {
	make check

	# test dbus build
	cd "$srcdir"/"$pkgname"-dbus
	make check
}

package() {
	make install DESTDIR="$pkgdir"
	install -dm0700 "$pkgdir"/etc/usbguard/rules.d/

	install -Dm0755 "$srcdir"/$pkgname.initd "$pkgdir"/etc/init.d/"$pkgname"

	install -Dm0644 scripts/bash_completion/usbguard \
		"$pkgdir"/usr/share/bash-completion/completions/"$pkgname"
	install -Dm0644 scripts/usbguard-zsh-completion \
		"$pkgdir"/usr/share/zsh/site-functions/_"$pkgname"
}

_dbus() {
	provides="$pkgname=$pkgver-r$pkgrel"
	cd "$srcdir"/"$pkgname"-dbus

	make install DESTDIR="$subpkgdir"
	install -dm0700 "$subpkgdir"/etc/usbguard/rules.d/

	rm -r "$subpkgdir"/usr/include "$subpkgdir"/usr/lib \
		"$subpkgdir"/usr/share/man "$subpkgdir"/usr/share/dbus-1 \
		"$subpkgdir"/usr/share/bash-completion
}

_dbus_openrc() {
	provides="$pkgname-openrc=$pkgver-r$pkgrel"
	install_if="openrc $pkgname-dbus=$pkgver-r$pkgrel"

	install -Dm0755 "$srcdir"/"$pkgname".initd \
		"$subpkgdir"/etc/init.d/"$pkgname"
	install -Dm0755 "$srcdir"/"$pkgname"-dbus.initd \
		"$subpkgdir"/etc/init.d/"$pkgname"-dbus

	default_openrc
}

sha512sums="
530bfea12ec8497c30d530c73f868207aad8b0e0e917cb7c7506f6148681a6a4ff12de5cddcfea458eb2b91ce8bb8b0e68d42e2590a4dc6b15f43c18f8256cf1  usbguard-1.1.3.tar.gz
9d6752f08df0ba510fa02c0c9b55a92f063297653480c4d8863f87f159dc51449a34643e75af7619146e2e53c91d479be91ecc0c9adc0c764d037f4df466e534  usbguard.initd
798c9c920eea7bc4b0bc101f60994621c3ff4a527d7c6d1eb098e40e0b2c68edddd723c07989b21398209230234e2d576e4982d46f69689a1a964773df17da19  usbguard-dbus.initd
"
