# Maintainer: Andreas Radke # Maintainer: Robin Candau # Contributor: Tom Gundersen # Contributor: Andrea Scarpino # Contributor: Geoffroy Carrier pkgbase=bluez pkgname=('bluez' 'bluez-utils' 'bluez-libs' 'bluez-cups' 'bluez-deprecated-tools' 'bluez-hid2hci' 'bluez-mesh' 'bluez-obex') pkgver=5.73 pkgrel=4 url="http://www.bluez.org/" arch=('x86_64') license=('GPL-2.0-only') makedepends=('dbus' 'libical' 'systemd' 'alsa-lib' 'json-c' 'ell' 'python-docutils' 'python-pygments' 'cups') source=(https://www.kernel.org/pub/linux/bluetooth/${pkgname}-${pkgver}.tar.{xz,sign} bluetooth.modprobe 0001_use_bt_uhid_functions.patch 0002_fix_not_handling_IdleTimeout_when_uhid_is_in_use.patch) # see https://www.kernel.org/pub/linux/bluetooth/sha256sums.asc sha256sums=('257e9075ce05c70d48c5defd254e78c418416f7584b45f9dddc884ff88e3fc53' 'SKIP' '46c021be659c9a1c4e55afd04df0c059af1f3d98a96338236412e449bf7477b4' '24780fc689dc4041ab0c5713c8f2cb09a7038d4936812310534762592d76e2f8' 'aaccd3e4cd64ad722d05c2de851644e73a16472ff47b09c6b42bb13576407819') validpgpkeys=('E932D120BC2AEC444E558F0106CA9F5D1DCF2659') # Marcel Holtmann prepare() { cd "${pkgname}"-${pkgver} # fix DualShock 3 connection - #6 # https://github.com/bluez/bluez/issues/771 patch -Np1 -i ../0001_use_bt_uhid_functions.patch # fix DualShock 4 / DualSense connection # https://github.com/bluez/bluez/issues/777 patch -Np1 -i ../0002_fix_not_handling_IdleTimeout_when_uhid_is_in_use.patch } build() { cd "${pkgname}"-${pkgver} ./configure \ --prefix=/usr \ --mandir=/usr/share/man \ --sysconfdir=/etc \ --localstatedir=/var \ --libexecdir=/usr/lib \ --with-dbusconfdir=/usr/share \ --enable-btpclient \ --enable-midi \ --enable-sixaxis \ --enable-mesh \ --enable-hid2hci \ --enable-experimental \ --enable-datafiles \ --enable-library --enable-deprecated # libraries and these tools are deprecated make # fake installation to be seperated into packages make DESTDIR="${srcdir}/fakeinstall" install # add missing tools FS#41132, FS#41687, FS#42716 for files in `find tools/ -type f -perm -755`; do filename=$(basename $files) install -Dm755 "${srcdir}"/"${pkgbase}"-${pkgver}/tools/$filename "${srcdir}/fakeinstall"/usr/bin/$filename done } _install() { local src f dir for src; do f="${src#fakeinstall/}" dir="${pkgdir}/${f%/*}" install -m755 -d "${dir}" # use copy so a new file is created and fakeroot can track properties such as setuid cp -av "${src}" "${dir}/" rm -rf "${src}" done } check() { cd "$pkgname"-$pkgver # fails test-vcp due to lto - https://github.com/bluez/bluez/issues/683 make check || /bin/true } package_bluez() { pkgdesc="Daemons for the bluetooth protocol stack" depends=('systemd' 'dbus' 'glib2' 'alsa-lib' 'glibc') backup=(etc/bluetooth/{main,input,network}.conf) _install fakeinstall/etc/bluetooth/main.conf _install fakeinstall/etc/bluetooth/input.conf _install fakeinstall/etc/bluetooth/network.conf _install fakeinstall/usr/lib/bluetooth/bluetoothd _install fakeinstall/usr/lib/systemd/system/bluetooth.service _install fakeinstall/usr/share/dbus-1/system-services/org.bluez.service _install fakeinstall/usr/share/dbus-1/system.d/bluetooth.conf _install fakeinstall/usr/share/man/man8/bluetoothd.8 # bluetooth.service wants ConfigurationDirectoryMode=0555 chmod -v 555 "${pkgdir}"/etc/bluetooth # add basic documention install -dm755 "${pkgdir}"/usr/share/doc/"${pkgbase}"/dbus-apis cp -a "${pkgbase}"-${pkgver}/doc/*.txt "${pkgdir}"/usr/share/doc/"${pkgbase}"/dbus-apis/ # fix module loading errors install -dm755 "${pkgdir}"/usr/lib/modprobe.d install -Dm644 "${srcdir}"/bluetooth.modprobe "${pkgdir}"/usr/lib/modprobe.d/bluetooth-usb.conf # load module at system start required by some functions # https://bugzilla.kernel.org/show_bug.cgi?id=196621 install -dm755 "$pkgdir"/usr/lib/modules-load.d echo "crypto_user" > "$pkgdir"/usr/lib/modules-load.d/bluez.conf } package_bluez-utils() { pkgdesc="Development and debugging utilities for the bluetooth protocol stack" depends=('dbus' 'systemd-libs' 'glib2' 'glibc' 'readline') optdepends=('ell: for btpclient') provides=('bluez-plugins') replaces=('bluez-plugins') _install fakeinstall/usr/bin/{advtest,amptest,avinfo,avtest,bcmfw,bdaddr,bluemoon,bluetoothctl,bluetooth-player,bneptest,btattach,btconfig,btgatt-client,btgatt-server,btinfo,btiotest,btmgmt,btmon,btpclient,btpclientctl,btproxy,btsnoop,check-selftest,cltest,create-image,eddystone,gatt-service,hcieventmask,hcisecfilter,hex2hcd,hid2hci,hwdb,ibeacon,isotest,l2ping,l2test,mcaptest,mpris-proxy,nokfw,oobtest,rctest,rtlfw,scotest,seq2bseq,test-runner} _install fakeinstall/usr/share/man/man1/bluetoothctl*.1 _install fakeinstall/usr/share/man/man1/{btattach,btmgmt,btmon,isotest,l2ping,rctest}.1 _install fakeinstall/usr/share/man/man5/org.bluez.{A,B,D,G,I,L,M,N,P}*.5 _install fakeinstall/usr/share/zsh/site-functions/_bluetoothctl } package_bluez-deprecated-tools() { pkgdesc="Deprecated tools that are no longer maintained" depends=('json-c' 'systemd-libs' 'glib2' 'dbus' 'readline' 'glibc') _install fakeinstall/usr/bin/{ciptool,hciattach,hciconfig,hcidump,hcitool,meshctl,rfcomm,sdptool} _install fakeinstall/usr/share/man/man1/{ciptool,hciattach,hciconfig,hcidump,hcitool,rfcomm,sdptool}.1 } package_bluez-libs() { pkgdesc="Deprecated libraries for the bluetooth protocol stack" depends=('glibc') provides=('libbluetooth.so') license=('LGPL-2.1-only') _install fakeinstall/usr/include/bluetooth/* _install fakeinstall/usr/lib/libbluetooth.so* _install fakeinstall/usr/lib/pkgconfig/* } package_bluez-cups() { pkgdesc="CUPS printer backend for Bluetooth printers" depends=('cups' 'glib2' 'glibc' 'dbus') _install fakeinstall/usr/lib/cups/backend/bluetooth } package_bluez-hid2hci() { pkgdesc="Put HID proxying bluetooth HCI's into HCI mode" depends=('systemd-libs' 'glibc') _install fakeinstall/usr/lib/udev/* _install fakeinstall/usr/share/man/man1/hid2hci.1 } package_bluez-mesh() { pkgdesc="Services for bluetooth mesh" depends=('systemd' 'json-c' 'readline' 'glibc') backup=('etc/bluetooth/mesh-main.conf') _install fakeinstall/etc/bluetooth/mesh-main.conf _install fakeinstall/usr/bin/{mesh-cfgclient,mesh-cfgtest} _install fakeinstall/usr/lib/bluetooth/bluetooth-meshd _install fakeinstall/usr/lib/systemd/system/bluetooth-mesh.service _install fakeinstall/usr/share/dbus-1/system-services/org.bluez.mesh.service _install fakeinstall/usr/share/dbus-1/system.d/bluetooth-mesh.conf _install fakeinstall/usr/share/man/man8/bluetooth-meshd.8 # bluetooth.service wants ConfigurationDirectoryMode=0555 chmod -v 555 "${pkgdir}"/etc/bluetooth } package_bluez-obex() { pkgdesc="Object Exchange daemon for sharing content" depends=('systemd' 'glib2' 'libical' 'dbus' 'readline' 'glibc') _install fakeinstall/usr/bin/{obexctl,obex-client-tool,obex-server-tool} _install fakeinstall/usr/lib/bluetooth/obexd _install fakeinstall/usr/lib/systemd/user/obex.service _install fakeinstall/usr/share/dbus-1/services/org.bluez.obex.service _install fakeinstall/usr/lib/systemd/user/dbus-org.bluez.obex.service _install fakeinstall/usr/share/man/man5/org.bluez.obex*.5 # make sure there are no files left to install rm fakeinstall/usr/lib/libbluetooth.la find fakeinstall -depth -print0 | xargs -0 rmdir }