# Contributor: Timo Teräs <timo.teras@iki.fi>
maintainer="fossdd <fossdd@pwned.life>"
pkgname=fwupd
pkgver=2.0.10
pkgrel=0
pkgdesc="Firmware update daemon"
url="https://fwupd.org/"
# armhf, ppc64le and s390x blocked by gnu-efi/fwupd-efi
arch="all !armhf !ppc64le !s390x"
license="LGPL-2.1-or-later"
depends="dbus hwdata-usb"
makedepends="
	cairo-dev
	curl-dev
	efivar-dev
	elfutils-dev
	elogind-dev
	eudev-dev
	flashrom-dev
	font-opensans
	fontconfig-dev
	freetype-dev
	glib-dev
	gnu-efi-dev
	gnutls-dev
	gnutls-utils
	gobject-introspection-dev
	gpgme-dev
	help2man
	json-glib-dev
	libarchive-dev
	libcbor-dev
	libdrm-dev
	libgcab-dev
	libgusb-dev
	libjcat-dev
	libmbim-dev
	libqmi-dev
	libxmlb-dev
	linux-headers
	meson
	modemmanager-dev
	polkit-dev
	protobuf-c-dev
	py3-cairo
	py3-gobject3
	py3-jinja2
	py3-markdown
	py3-pillow
	py3-setuptools
	python3
	tpm2-tss-dev
	tpm2-tss-esys
	vala
	"
checkdepends="
	bubblewrap
	umockdev
	"
subpackages="
	$pkgname-dbg
	$pkgname-dev
	$pkgname-doc
	$pkgname-fish-completion
	$pkgname-lang
	$pkgname-openrc
	$pkgname-polkit
	$pkgname-tests
	"
source="https://github.com/fwupd/fwupd/releases/download/$pkgver/fwupd-$pkgver.tar.xz
	$pkgname.initd
	$pkgname.confd
	elogind.patch
	"

# libsmbios is a library for DELL devices which are x86/x86_64-only
case "$CARCH" in
	x86*)
		makedepends="$makedepends libsmbios-dev"
		;;
	*) ;;
esac

case "$CARCH" in
	x86*|aarch64)
		# fwupd-efi needed for uefi-capsule
		makedepends="$makedepends fwupd-efi-dev"
		subpackages="$subpackages $pkgname-grub"
		;;
	*)	;;
esac

build() {
	abuild-meson \
		-Db_lto=true \
		-Dfirmware-packager=true \
		-Ddocs=disabled \
		-Dhsi=enabled \
		-Dlvfs=true \
		-Dman=true \
		-Dsystemd=disabled \
		-Delogind=enabled \
		-Dtests=true \
		. output

	meson compile -C output
}

check() {
	# tests fail if usb is not available
	[ -e /dev/bus/usb ] || return 0
	meson test --print-errorlogs -C output
}

package() {
	DESTDIR="$pkgdir" meson install --no-rebuild -C output

	install -Dm755 "$srcdir"/$pkgname.initd "$pkgdir"/etc/init.d/$pkgname
	install -Dm644 "$srcdir"/$pkgname.confd "$pkgdir"/etc/conf.d/$pkgname
}

grub() {
	pkgdesc="$pkgdesc (grub integration)"
	depends=""
	install_if="$pkgname=$pkgver-r$pkgrel grub"

	amove etc/grub.d
}

polkit() {
	pkgdesc="$pkgdesc (polkit integration)"
	depends=""
	install_if="$pkgname=$pkgver-r$pkgrel polkit"

	amove usr/share/polkit-1
}

tests() {
	pkgdesc="$pkgdesc (data files for installed tests)"
	depends=""

	amove usr/share/fwupd/host-emulate.d/*.json.gz
	amove usr/share/installed-tests
	amove usr/libexec/installed-tests
	amove usr/share/fwupd/remotes.d/fwupd-tests.conf
}

sha512sums="
04c6a378f0b77e4c5ecc528d6d79b9523569839deed2b4dab0f8ce548f1ce4a38133ce1bbd9e7648317a980631adfc68b54a7e174bcf9935f1653ceed6b53505  fwupd-2.0.10.tar.xz
2c34891ec273aa1a4d105602cd5e99add5a17d6e240fa93a015d5bb2e11e54937b04781de2a854c472be376524b50fc5bb48edf7b875afb54e3ca07dcda117b0  fwupd.initd
0bf773a2c52b0306e99e5192d259f38cce8a25487e95a41b6e0200a1ed629235971795a1f9ba12a633cd902671d888610695658f2cc2c750e2afca70f87ee589  fwupd.confd
06ea147f77f9fcdf3759c00bdb8d33d357184f3889003c8fcd59e67965740da78cb1329a3af7caed3f7c8266f92cde75c36cee64d76e08f77f218bfba86ce981  elogind.patch
"
