# Contributor: Leo <thinkabit.ukim@gmail.com>
# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
pkgname=bluez
# Make sure to also update the obexd-enhanced package if updating bluez
pkgver=5.82
pkgrel=0
pkgdesc="Tools for the Bluetooth protocol stack"
url="https://www.bluez.org/"
arch="all"
license="GPL-2.0-or-later AND BSD-2-Clause AND MIT"
depends="dbus"
replaces="udev"
makedepends="
	dbus-dev
	ell-dev
	eudev-dev
	glib-dev
	json-c-dev
	libical-dev
	libtool
	linux-headers
	py3-docutils
	py3-pygments
	readline-dev
	"
subpackages="
	$pkgname-dbg
	$pkgname-dev
	$pkgname-doc
	$pkgname-libs
	$pkgname-openrc
	$pkgname-btmgmt
	$pkgname-btmon
	$pkgname-cups
	$pkgname-deprecated
	$pkgname-deprecated-openrc
	$pkgname-hid2hci
	$pkgname-meshctl
	$pkgname-obexd
	$pkgname-zsh-completion
	"
source="https://www.kernel.org/pub/linux/bluetooth/bluez-$pkgver.tar.xz
	bluetooth.initd
	rfcomm.initd
	rfcomm.confd
	org.bluez.obex.service
	mpris-proxy.desktop
	001-bcm43xx-Add-bcm43xx-3wire-variant.patch
	002-bcm43xx-The-UART-speed-must-be-reset-after-the-firmw.patch
	003-Increase-firmware-load-timeout-to-30s.patch
	004-Move-the-43xx-firmware-into-lib-firmware.patch
	005-hostname-Use-phone-class-for-handhelds.patch
	disable-lock-test.patch
	fix-endianness.patch
	test-mesh-crypto.patch
	disable-test-vcp.patch
	modules-load.conf
	"

# secfixes:
#   5.54-r0:
#     - CVE-2020-0556

build() {
	CFLAGS="$CFLAGS -flto=auto" \
	./configure \
		--build=$CBUILD \
		--host=$CHOST \
		--prefix=/usr \
		--sysconfdir=/etc \
		--mandir=/usr/share/man \
		--localstatedir=/var \
		--libexecdir=/usr/lib \
		--disable-systemd \
		--enable-library \
		--enable-deprecated \
		--enable-hid2hci \
		--enable-mesh \
		--enable-sixaxis \
		--with-dbusconfdir=/usr/share
	make
}

check() {
	make check || {
		cat test-suite.log
		return 1
	}
}

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

	install -D -m644 src/main.conf "$pkgdir"/etc/bluetooth/main.conf

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

	install -Dm755 test/simple-agent "$pkgdir"/usr/bin/bluez-simple-agent
	install -Dm755 tools/btmgmt -t "$pkgdir"/usr/bin/
	install -Dm755 attrib/gatttool -t "$pkgdir"/usr/bin/

	install -Dm644 "$srcdir"/org.bluez.obex.service \
		"$pkgdir"/usr/share/dbus-1/services/org.bluez.obex.service

	# Autostart mpris-proxy to pass through MPRIS control over BlueZ
	install -Dm644 "$srcdir"/mpris-proxy.desktop -t "$pkgdir"/etc/xdg/autostart/

	# modules which are required for some bluetooth accessories (keyboards, AVRCP, etc)
	install -Dm644 "$srcdir"/modules-load.conf "$pkgdir"/usr/lib/modules-load.d/bluez.conf
}

btmgmt() {
	pkgdesc="Bluez tool for the Bluetooth Management API"
	amove usr/bin/btmgmt
}

btmon() {
	pkgdesc="Bluez bluetooth monitor"
	amove usr/bin/btmon
}

cups() {
	pkgdesc="Bluez backend for CUPS"
	amove usr/lib/cups
}

hid2hci() {
	pkgdesc="Put HID proxying bluetooth HCI's into HCI mode"
	replaces="bluez"
	amove usr/lib/udev
}

deprecated() {
	pkgdesc="Deprecated bluetooth tools"
	amove \
		usr/bin/ciptool \
		usr/bin/gatttool \
		usr/bin/hciattach \
		usr/bin/hciconfig \
		usr/bin/hcidump \
		usr/bin/hcitool \
		usr/bin/rfcomm \
		usr/bin/sdptool
}

meshctl() {
	pkgdesc="Bluez tool for interacting with bluetooth mesh networks"
	amove usr/bin/meshctl
}

obexd() {
	pkgdesc="Bluez OBEX daemon"
	provides="obexd"
	provider_priority=100
	amove \
		usr/lib/bluetooth/obexd \
		usr/share/dbus-1/services/org.bluez.obex.service
}

openrc() {
	case "$subpkgname" in
		"$pkgname"-deprecated-openrc)
			# Make this the same as deprecated()
			# the default_openrc function will add
			# the correct (OpenRC init scripts) suffix
			pkgdesc="Deprecated bluez tools"
			;;
	esac

	default_openrc

	case "$subpkgname" in
		"$pkgname"-openrc)
			# Move the rfcomm .initd and .confd back to the
			# mainpkg so the -deprecated-openrc subpackage
			# can move them later
			mkdir -p "$pkgdir"/etc/init.d "$pkgdir"/etc/conf.d
			mv "$subpkgdir"/etc/init.d/rfcomm "$pkgdir"/etc/init.d
			mv "$subpkgdir"/etc/conf.d/rfcomm "$pkgdir"/etc/conf.d
			rmdir "$subpkgdir"/etc/conf.d # Only rfcomm was here
			;;
	esac
}

sha512sums="
8efbef24849f122cfe1b1b0dcedbc5369f97741603497099a673ff7be87af7935b8e0c8c58e10f6969372c8af932165d38a0c39e518501ba0d7e0c2fffb70bad  bluez-5.82.tar.xz
5442f4f489718e51c50611c143803f2cc99e540b55a72af20ea2921b256774a6c7c5e273f2bedb745753d8c67d3fb7c938750fb48feac7460b32bd1cca029a28  bluetooth.initd
8d7b7c8938a2316ce0a855e9bdf1ef8fcdf33d23f4011df828270a088b88b140a19c432e83fef15355d0829e3c86be05b63e7718fef88563254ea239b8dc12ac  rfcomm.initd
a70aa0dbbabe7e29ee81540a6f98bf191a850da55a28f678975635caf34b363cf4d461a801b3484120ee28fdd21240bd456a4f5d706262700924bd2e9a0972fb  rfcomm.confd
d6766a4992ed4141569d6d82a802a771a5cb4c08873bfb0fdbedeea4d738bf9b56d9e0452ec19b7635418b1af4ab9b1735692043d629cbed3ce0eda6f51e1c6f  org.bluez.obex.service
72f9bc6cafe910ed7d105d4f3a537b16cd897622b2391ea545e6a302fcce2ed79e490e2841c6290aa1290489870a67638d71b0de5bc57f9d650e2248d9e4f0a4  mpris-proxy.desktop
73202915fda01d420b2864da77b1c25af5a55c815e9be6546400a0940bfb6097d83322790bc22a80ec0fcd557144fdd1877e243a79285a7f040ff96ba3600b94  001-bcm43xx-Add-bcm43xx-3wire-variant.patch
d5fd1c962bd846eaa6fff879bab85f753eb367d514f82d133b5d3242e1da989af5eddd942c60a87d5b67783e060f91bfa0f74fb1e8e6699cdee6e5bbe6a431ea  002-bcm43xx-The-UART-speed-must-be-reset-after-the-firmw.patch
784e9644c8de4e2693e2eeed988a245608b8cb14e1fc0dff8795c60c527b2e8d0c87862cfbfd6b850b47ae80cdf993a5ed3f477078ea1068fd7374899c7a1a77  003-Increase-firmware-load-timeout-to-30s.patch
6d864d893aaf08d7a04f5cb27a6b2767c361cd41e479f27ed84d9fbbd2677298c15e31161a614af098df8faf3da54b71cf315fe8e9a9a2f671e4720c7b8b457b  004-Move-the-43xx-firmware-into-lib-firmware.patch
ac635f9bca0e983835940572eb1b96ad70cf60fb84d5b0fde38c76ea6d1b13ef7d9adf81468b9fed779c890ab69dd5dfabf21970bff018466115c424668b82fb  005-hostname-Use-phone-class-for-handhelds.patch
04c4889372c8e790bb338dde7ffa76dc32fcf7370025c71b9184fcf17fd01ade4a6613d84d648303af3bbc54043ad489f29fc0cd4679ec8c9029dcb846d7e026  disable-lock-test.patch
2f54da5e77893d1d8b7164ddac5561a9e536c2b93b1d33dcbd97e74c0fd45588f1f50dc1d9d8519297871e3a376948082a2e45e27d823ec81cdedecd8dba3f0c  fix-endianness.patch
b5d6f7d2df755a9b8cffaeef13d232ba1bab27544bc59e2299bbd6a8017768cf7781f3ca65e430a149a26f0b30ae74b8510529ce161705bb6f41ae512cc2dbac  test-mesh-crypto.patch
e7a07f26d92caaf11a457a8504219973da0aa80f2c97b36af2135aa36f7f4b52978f632c9c5123d66d71b4b65a780710dea802ca0dcaabc5c051f7b7d21763cf  disable-test-vcp.patch
946e7abe25fcafab2b0051eeed811b61f16d0d222da1420389076451a8a363aaf8decdf0f18f8125cbc138307d61ceedd67fd105765351301db9f2f880fbfefa  modules-load.conf
"
