# TODO:
# - verify/update bluetooth init script
# - separate obex?
+#
+# Conditional build:
+%bcond_without deprecated # deprecated tools (ciptool,hciattach,hciconfig,hcidump,hcitool,rfcomm,sdptool)
+#
Summary: Bluetooth utilities
Summary(pl.UTF-8): Narzędzia Bluetooth
Name: bluez
-Version: 5.30
-Release: 1
+Version: 5.61
+Release: 2
License: GPL v2+
Group: Applications/System
Source0: https://www.kernel.org/pub/linux/bluetooth/%{name}-%{version}.tar.xz
-# Source0-md5: 24ba1d1e8e7ef5b8f4033a3059d7600e
+# Source0-md5: a4c98b6bd2411880cba5930e7f10a1c4
Source1: %{name}.init
Source2: %{name}.sysconfig
+# Scripts for automatically btattach-ing serial ports connected to Broadcom HCIs
+# as found on some Atom based x86 hardware
+Source3: 69-btattach-bcm.rules
+Source4: btattach-bcm@.service
+Source5: btattach-bcm-service.sh
+Patch0: 0001-obex-Use-GLib-helper-function-to-manipulate-paths.patch
+Patch1: glibc2.34.patch
URL: http://www.bluez.org/
+BuildRequires: alsa-lib-devel >= 1.0
BuildRequires: autoconf >= 2.60
BuildRequires: automake
BuildRequires: check-devel >= 0.9.6
+BuildRequires: cups-devel
BuildRequires: dbus-devel >= 1.6
+BuildRequires: docutils
+BuildRequires: ell-devel >= 0.39
BuildRequires: glib2-devel >= 1:2.28
+BuildRequires: json-c-devel >= 0.13
BuildRequires: libical-devel
BuildRequires: libtool
BuildRequires: pkgconfig >= 1:0.9.0
BuildRequires: readline-devel
BuildRequires: rpmbuild(macros) >= 1.682
+BuildRequires: systemd-devel
BuildRequires: tar >= 1:1.22
BuildRequires: udev-devel >= 1:172
BuildRequires: xz
Requires(post,preun,postun): systemd-units >= 38
Requires: %{name}-libs = %{version}-%{release}
Requires: dbus-libs >= 1.6
+Requires: ell >= 0.39
Requires: glib2 >= 1:2.28
Requires: hwdata >= 0.225
+Requires: json-c >= 0.13
Requires: rc-scripts
Requires: systemd-units >= 38
Requires: udev >= 1:172
Summary: Bluetooth backend for CUPS
Summary(pl.UTF-8): Backend Bluetooth dla CUPS-a
Group: Applications/Printing
-Requires: bluez-libs >= %{version}-%{release}
+Requires: %{name}-libs = %{version}-%{release}
Requires: cups
%description -n cups-backend-bluetooth
%description -n cups-backend-bluetooth -l pl.UTF-8
Backend Bluetooth dla CUPS-a.
+%package -n zsh-completion-bluez
+Summary: Zsh completion for bluez commands
+Summary(pl.UTF-8): Dopełnianie parametrów w zsh dla poleceń z pakietu bluez
+Group: Applications/Shells
+Requires: %{name} = %{version}-%{release}
+Requires: zsh
+
+%description -n zsh-completion-bluez
+Zsh completion for bluez commands (bluezctl utility).
+
+%description -n zsh-completion-bluez -l pl.UTF-8
+Dopełnianie parametrów w zsh dla poleceń z pakietu bluez (narzędzia
+bluezctl).
+
%package libs
Summary: Bluetooth libraries
Summary(pl.UTF-8): Biblioteki Bluetooth
%prep
%setup -q
+%patch0 -p1
+%patch1 -p1
+
+# external ell is broken if ell/ell.h is in place due to deps generation and Makefile.am rules
+%{__rm} -r ell
%build
%{__libtoolize}
%{__automake}
%configure \
--disable-silent-rules \
+ --enable-btpclient \
+ %{?with_deprecated:--enable-deprecated} \
--enable-experimental \
+ --enable-external-ell \
+ --enable-health \
+ --enable-hid2hci \
--enable-library \
+ --enable-tools \
+ --enable-cups \
+ --enable-testing \
+ --enable-mesh \
+ --enable-midi \
+ --enable-nfc \
+ --enable-sap \
--enable-sixaxis \
--enable-static \
+ --with-udevdir=%{udevdir} \
--with-systemdsystemunitdir=%{systemdunitdir} \
--with-systemduserunitdir=%{systemduserunitdir}
%{__make} \
- cupsdir=%{cupsdir} \
- rulesdir=%{udevdir}/rules.d \
- udevdir=%{udevdir}
+ cupsdir=%{cupsdir}
%install
rm -rf $RPM_BUILD_ROOT
rulesdir=%{udevdir}/rules.d \
udevdir=%{udevdir}
-%{__rm} $RPM_BUILD_ROOT%{_libdir}/bluetooth/plugins/*.{la,a}
-
install %{SOURCE1} $RPM_BUILD_ROOT/etc/rc.d/init.d/bluetooth
install %{SOURCE2} $RPM_BUILD_ROOT/etc/sysconfig/bluetooth
install profiles/input/*.conf $RPM_BUILD_ROOT%{_sysconfdir}/bluetooth
install profiles/network/*.conf $RPM_BUILD_ROOT%{_sysconfdir}/bluetooth
-install profiles/proximity/*.conf $RPM_BUILD_ROOT%{_sysconfdir}/bluetooth
+
+#serial port connected Broadcom HCIs scripts
+install %{SOURCE3} $RPM_BUILD_ROOT%{udevdir}/rules.d
+install %{SOURCE4} $RPM_BUILD_ROOT%{systemdunitdir}
+install %{SOURCE5} $RPM_BUILD_ROOT%{_libexecdir}/bluetooth
+
+# Install the HCI emulator, useful for testing
+install emulator/btvirt $RPM_BUILD_ROOT%{_libexecdir}/bluetooth
%{__rm} $RPM_BUILD_ROOT%{_libdir}/libbluetooth.la
+%{__rm} $RPM_BUILD_ROOT%{_libdir}/bluetooth/plugins/*.{la,a}
%clean
rm -rf $RPM_BUILD_ROOT
%files
%defattr(644,root,root,755)
%doc AUTHORS ChangeLog README
-%attr(755,root,root) %{_bindir}/bccmd
%attr(755,root,root) %{_bindir}/bluemoon
%attr(755,root,root) %{_bindir}/bluetoothctl
+%attr(755,root,root) %{_bindir}/btattach
%attr(755,root,root) %{_bindir}/btmon
-%attr(755,root,root) %{_bindir}/ciptool
-%attr(755,root,root) %{_bindir}/hciattach
-%attr(755,root,root) %{_bindir}/hciconfig
-%attr(755,root,root) %{_bindir}/hcidump
-%attr(755,root,root) %{_bindir}/hcitool
%attr(755,root,root) %{_bindir}/hex2hcd
%attr(755,root,root) %{_bindir}/l2ping
%attr(755,root,root) %{_bindir}/l2test
+%attr(755,root,root) %{_bindir}/mesh-cfgclient
+%attr(755,root,root) %{_bindir}/mesh-cfgtest
+%attr(755,root,root) %{_bindir}/meshctl
%attr(755,root,root) %{_bindir}/mpris-proxy
%attr(755,root,root) %{_bindir}/rctest
+%if %{with deprecated}
+%attr(755,root,root) %{_bindir}/ciptool
+%attr(755,root,root) %{_bindir}/hciattach
+%attr(755,root,root) %{_bindir}/hciconfig
+%attr(755,root,root) %{_bindir}/hcidump
+%attr(755,root,root) %{_bindir}/hcitool
%attr(755,root,root) %{_bindir}/rfcomm
%attr(755,root,root) %{_bindir}/sdptool
+%endif
+%if "%{_libexecdir}" != "%{_libdir}"
+%dir %{_libexecdir}/bluetooth
+%endif
+%attr(755,root,root) %{_libexecdir}/bluetooth/bluetooth-meshd
+%attr(755,root,root) %{_libexecdir}/bluetooth/bluetoothd
+%attr(755,root,root) %{_libexecdir}/bluetooth/btattach-bcm-service.sh
+%attr(755,root,root) %{_libexecdir}/bluetooth/btvirt
+%attr(755,root,root) %{_libexecdir}/bluetooth/obexd
%dir %{_libdir}/bluetooth
-%attr(755,root,root) %{_libdir}/bluetooth/bluetoothd
-%attr(755,root,root) %{_libdir}/bluetooth/obexd
%dir %{_libdir}/bluetooth/plugins
%attr(755,root,root) %{_libdir}/bluetooth/plugins/sixaxis.so
%dir %{_libdir}/obex
%dir %{_sysconfdir}/bluetooth
%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/bluetooth/input.conf
%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/bluetooth/network.conf
-%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/bluetooth/proximity.conf
%attr(754,root,root) /etc/rc.d/init.d/bluetooth
%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/bluetooth
%config(noreplace) %verify(not md5 mtime size) /etc/dbus-1/system.d/bluetooth.conf
+%config(noreplace) %verify(not md5 mtime size) /etc/dbus-1/system.d/bluetooth-mesh.conf
%{systemdunitdir}/bluetooth.service
+%{systemdunitdir}/bluetooth-mesh.service
+%{systemdunitdir}/btattach-bcm@.service
%{systemduserunitdir}/obex.service
%{_datadir}/dbus-1/services/org.bluez.obex.service
%{_datadir}/dbus-1/system-services/org.bluez.service
+%{_datadir}/dbus-1/system-services/org.bluez.mesh.service
%attr(755,root,root) %{udevdir}/hid2hci
+%{udevdir}/rules.d/69-btattach-bcm.rules
%{udevdir}/rules.d/97-hid2hci.rules
-%{_mandir}/man1/bccmd.1*
+%{_mandir}/man1/btattach.1*
+%{_mandir}/man1/btmon.1*
+%{_mandir}/man1/hid2hci.1*
+%{_mandir}/man1/l2ping.1*
+%{_mandir}/man1/rctest.1*
+%if %{with deprecated}
%{_mandir}/man1/ciptool.1*
%{_mandir}/man1/hciattach.1*
%{_mandir}/man1/hciconfig.1*
%{_mandir}/man1/hcidump.1*
%{_mandir}/man1/hcitool.1*
-%{_mandir}/man1/hid2hci.1*
-%{_mandir}/man1/l2ping.1*
-%{_mandir}/man1/rctest.1*
%{_mandir}/man1/rfcomm.1*
%{_mandir}/man1/sdptool.1*
+%endif
+%{_mandir}/man8/bluetooth-meshd.8*
%{_mandir}/man8/bluetoothd.8*
%files -n cups-backend-bluetooth
%defattr(644,root,root,755)
%attr(755,root,root) %{_prefix}/lib/cups/backend/bluetooth
+%files -n zsh-completion-bluez
+%defattr(644,root,root,755)
+%{zsh_compdir}/_bluetoothctl
+
%files libs
%defattr(644,root,root,755)
%attr(755,root,root) %{_libdir}/libbluetooth.so.*.*.*