# Maintainer: mio <miyopan@e.email>
maintainer="mio <miyopan@e.email>"
pkgname=drawpile
pkgver=2.2.2
pkgrel=2
pkgdesc="Collaborative drawing program"
url="https://drawpile.net/"
license="GPL-3.0-or-later"
# armhf: missing karchive5-dev kdnssd5-dev
# armv7, riscv64: multiple -Wcast-align errors
arch="all !armhf !armv7 !riscv64"
pkgusers=drawpile
pkggroups=drawpile
# Dependencies to enable additional features:
# ffmpeg-dev: libav image scaling and video export
# qt5-qtwebsockets: websockets support
makedepends="
	cargo
	cmake
	extra-cmake-modules
	ffmpeg-dev
	giflib-dev
	karchive5-dev
	kdnssd5-dev
	libmicrohttpd-dev
	libsodium-dev
	libvpx-dev
	libwebp-dev
	miniupnpc-dev
	qt5-qtmultimedia-dev
	qt5-qtsvg-dev
	qt5-qttools-dev
	qt5-qtwebsockets-dev
	qt5-qtx11extras-dev
	samurai
	"
install="$pkgname-server.pre-install"
subpackages="
	$pkgname-doc
	$pkgname-base
	$pkgname-client
	$pkgname-server
	$pkgname-server-openrc
	$pkgname-tools
	"
source="drawpile-$pkgver.tar.gz::https://github.com/drawpile/Drawpile/archive/$pkgver.tar.gz
	drawpile.initd
	cmake-detect-arch.patch
	fix-cast-32-bit.patch
	"
builddir="$srcdir"/Drawpile-"$pkgver"
options="net" # rust crates

# Temporarily disable lto due to conflict with multiple Rust libs exposing
# rust_eh_personality symbol.
export CARGO_PROFILE_RELEASE_LTO="false"

build() {
	cmake -B build -G Ninja \
		--preset linux-release-qt5-all-ninja \
		-DCMAKE_INSTALL_PREFIX=/usr \
		-DCMAKE_INSTALL_MANDIR=/usr/share/man/man1
	cmake --build build
}

check() {
	ctest --test-dir build
}

package() {
	# drawpile is a meta-package
	depends="
		$pkgname-base=$pkgver-r$pkgrel
		$pkgname-client=$pkgver-r$pkgrel
		$pkgname-server=$pkgver-r$pkgrel
		$pkgname-tools=$pkgver-r$pkgrel
		"
	DESTDIR="$pkgdir" cmake --install build

	install -Dm755 "$srcdir"/drawpile.initd "$pkgdir"/etc/init.d/drawpile
	install -Dm644 LICENSE.txt \
		"$pkgdir"/usr/share/licenses/drawpile-base/LICENSE.txt
}

base() {
	pkgdesc="Common files for Drawpile"
	arch="noarch"
	amove usr/share
}

client() {
	pkgdesc="$pkgdesc (Drawpile client)"
	depends="$pkgname-base=$pkgver-r$pkgrel"
	amove usr/bin/drawpile
}

server() {
	pkgdesc="$pkgdesc (Drawpile server)"
	depends="
		$pkgname-base=$pkgver-r$pkgrel
		qt5-qtbase-sqlite
		"

	amove usr/bin/drawpile-srv

	install -d -o drawpile -g drawpile "$subpkgdir"/etc/drawpile/templates
	install -d -o drawpile -g drawpile -m 750 "$subpkgdir"/var/lib/drawpile
}

tools() {
	pkgdesc="$pkgdesc (Drawpile tools)"
	depends="$pkgname-base=$pkgver-r$pkgrel"
	# dprectool: convert between Drawpile session formats .dprec and .dptxt
	# drawpile-cmd: render recordings
	# drawpile-timelapse: turn drawpile recordings into timelapse videos
	amove usr/bin/dprectool
	amove usr/bin/drawpile-cmd
	amove usr/bin/drawpile-timelapse
}

sha512sums="
e17f80e9ce0ffd3f5d8b12a596d71859bce88544b8792819b1576eb3caad61e2845e7e7ed4cf5e76b5ddb35e5ee32c07a46720be96a5b270f896145f19fb870f  drawpile-2.2.2.tar.gz
5a2e6d1e677a74a43838cce26bd6b6f6bceb858f3622912476665ad3f6cef3171aa0c5b56ca9343c5b7ec81c850ce251a177d77490854e7ef39796c4c7d53535  drawpile.initd
c8211a7523b39a43d8f2994aea0f0517a6d9b8fcb1249fcc9acaadf7035c59efb3ade4eab6065267b827a17c6c4bf4e8324d07807e591e408ca0a270108f7183  cmake-detect-arch.patch
032d71a5028a62275e5bf3822ef755071cc36aa06b1253f79d941f6f86d75499068f0bd26f1b02955ffbbe0c0fa204a4c8076d5f7e07a1d55dcea51d74f35059  fix-cast-32-bit.patch
"
