File bluez.spec of Package bluez.25541
#
# spec file for package bluez
#
# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
# Copyright (c) 2010-2017 B1 Systems GmbH, Vohburg, Germany
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via http://bugs.opensuse.org/
#
Name: bluez
Version: 5.48
Release: 0
Summary: Bluetooth Stack for Linux
License: GPL-2.0+
Group: Hardware/Mobile
Url: http://www.bluez.org
Source: http://www.kernel.org/pub/linux/bluetooth/bluez-%{version}.tar.xz
Source5: baselibs.conf
Source7: bluetooth.modprobe
# fix some logitech HID devices, bnc#681049, bnc#850478 --seife+obs@b1-systems.com
Patch1: bluez-5.11-logitech-hid2hci.patch
Patch2: bluez-sdp-unix-path.patch
# PATCH-FIX-UPSTREAM: find the cups dir in libexec not in libdir
Patch3: bluez-cups-libexec.patch
# workaround for broken tests (reported upstream but not yet fixed)
Patch4: bluez-5.45-disable-broken-tests.diff
# PATCH-FIX-UPSTREAM: obexd not compiled with -fpie -- seife+obs@b1-systems.com
Patch5: 0001-obexd-use-AM_LDFLAGS-for-linking.patch
# disable tests for bypass boo#1078285
Patch6: disable_some_obex_tests.patch
# PATCH_FIX-UPSTREAM: bsc#1013721 CVE-2016-9800
Patch101: hcidump-fixed-hci-frame-dump-stack-buffer-overflow.patch
Patch102: CVE-2016-9804-tool-hcidump-Fix-memory-leak-with-malformed-packet.patch
# PATCH_FIX-UPSTREAM: bsc#1013732 CVE-2016-9801
Patch103: hcidump-Fix-set_ext_ctrl-global-buffer-overflow.patch
# bsc#1013708 CVE-2016-9797
Patch104: hcidump-Add-assoc-dump-function-assoc-date-length-ch.patch
# bsc#1015171 CVE-2016-9917
Patch105: hcidump-Fix-memory-leak-with-malformed-packet.patch
# bsc#1013712 CVE-2016-9798
Patch106: hcidump-Fixed-malformed-segment-frame-length.patch
# PATCH_FIX-UPSTREAM: btmon: multiple memory management vulnerabilities fixed bsc#1015173 CVE-2016-9918
Patch111: 0001-btmon-fix-segfault-caused-by-buffer-over-read.patch
Patch112: 0002-btmon-fix-segfault-caused-by-buffer-over-read.patch
Patch113: 0003-btmon-fix-segfault-caused-by-buffer-over-read.patch
Patch114: 0004-btmon-Fix-crash-caused-by-integer-underflow.patch
Patch115: 0005-btmon-fix-stack-buffer-overflow.patch
Patch116: 0006-btmon-fix-multiple-segfaults.patch
Patch117: 0007-btmon-fix-segfault-caused-by-integer-underflow.patch
Patch118: 0008-btmon-fix-segfault-caused-by-integer-undeflow.patch
Patch119: 0009-btmon-fix-segfault-caused-by-buffer-over-read.patch
Patch120: 0010-btmon-fix-segfault-caused-by-buffer-overflow.patch
Patch121: 0011-btmon-fix-segfault-caused-by-integer-underflow.patch
Patch122: 0012-btmon-fix-segfault-caused-by-buffer-over-read.patch
# PATCH-FIX-UPSTREAM: bsc#1156544
Patch123: tools-Fix-build-after-y2038-changes-in-glibc.patch
# PATCH-FIX-UPSTREAM: bsc#1166751 CVE-2020-0556
Patch124: HOGP-must-only-accept-data-from-bonded-devices.patch
Patch125: HID-accepts-bonded-device-connections-only.patch
Patch126: input-hog-Attempt-to-set-security-level-if-not-bonde.patch
Patch127: input-Add-LEAutoSecurity-setting-to-input.conf.patch
# PATCH-FIX-UPSTREAM: bsc#1177895 CVE-2020-27153
Patch128: shared-att-Fix-possible-crash-on-disconnect.patch
# Bug 1194704 CVE-2022-0204: bluez: heap-based buffer overflow in the implementation of the gatt protocol
Patch129: shared-gatt-server-Fix-heap-overflow-when-appending-.patch
# PATCH-FIX-UPSTREAM: bsc#1193237 CVE-2019-8921
Patch130: sdp-Fix-not-checking-if-cstate-length.patch
# PATCH-FIX-UPSTREAM: boo#1101119 -- seife+obs@b1-system.com
Patch200: 0001-core-Fixes-order-InterfaceAdded.patch
# RPi3 bluetooth support bsc#995059 bsc#1094902
Patch201: 0001-rpi3-bcm43xx-The-UART-speed-must-be-reset-after-the-firmw.patch
Patch202: 0002-rpi3-Move-the-43xx-firmware-into-lib-firmware.patch
BuildRequires: automake
BuildRequires: flex
BuildRequires: libtool
BuildRequires: pkgconfig
BuildRequires: readline-devel
BuildRequires: systemd-rpm-macros
BuildRequires: pkgconfig(alsa)
BuildRequires: pkgconfig(check)
BuildRequires: pkgconfig(dbus-1) >= 1.6
BuildRequires: pkgconfig(glib-2.0) >= 2.28
# json-c is needed for --enable-mesh
BuildRequires: pkgconfig(json-c)
BuildRequires: pkgconfig(libcap-ng)
BuildRequires: pkgconfig(libical)
BuildRequires: pkgconfig(libudev)
BuildRequires: pkgconfig(sndfile)
BuildRequires: pkgconfig(udev)
Requires(post): systemd
Recommends: sbc
Provides: bluez-utils = 3.36
Obsoletes: bluez-utils <= 3.36
Provides: bluez-audio = 3.36
Obsoletes: bluez-audio <= 3.36
Obsoletes: bluez-hcidump < 5.0
Provides: bluez-hcidump = %{version}
Obsoletes: obexd-client < 5.0
Provides: obexd-client = %{version}
BuildRoot: %{_tmppath}/%{name}-%{version}-build
%{?systemd_requires}
%description
BlueZ provides support for the core Bluetooth layers and protocols.
%package devel
Summary: Files needed for BlueZ development
License: GPL-2.0+
Group: Development/Languages/C and C++
Requires: libbluetooth3 = %{version}
%description devel
Files needed to develop applications for the BlueZ Bluetooth protocol
stack.
%package -n libbluetooth3
Summary: Bluetooth Libraries
License: GPL-2.0+
Group: System/Libraries
Provides: bluez-libs = 3.36
Obsoletes: bluez-libs <= 3.36
%description -n libbluetooth3
BlueZ provides support for the core Bluetooth layers and protocols.
It is uses a modular implementation. It has many interesting features:
* Multithreaded data processing
* Support for multiple Bluetooth devices
* Real hardware abstraction
* Standard socket interface to all layers
* Device and service level security support
%package cups
Summary: CUPS Driver for Bluetooth Printers
License: GPL-2.0+
Group: Hardware/Printing
%description cups
Contains the files required by CUPS for printing to Bluetooth-connected
printers.
%package test
Summary: Tools for testing of various Bluetooth-functions
License: GPL-2.0+ and MIT
Group: Development/Tools/Debuggers
Requires: dbus-1-python
Requires: python-gobject2
%description test
Contains a few tools for testing various bluetooth functions. The
BLUETOOTH trademarks are owned by Bluetooth SIG, Inc., U.S.A.
%package auto-enable-devices
Summary: Configuration that automatically enables all bluetooth devices
License: GPL-2.0+
Group: Hardware/Mobile
BuildArch: noarch
%description auto-enable-devices
Contains configuration that automatically enables all bluetooth devices
that are connected to the system if no other tool is handling them (e.g.
desktop specific applets like blueman or GNOME or KDE applets).
%post auto-enable-devices
{ systemctl status -n0 bluetooth.service > /dev/null && systemctl restart bluetooth.service ; } ||:
%postun auto-enable-devices
{ systemctl status -n0 bluetooth.service > /dev/null && systemctl restart bluetooth.service ; } ||:
%prep
%setup -q
%patch1 -p1
%patch2 -p1
%patch3 -p1
%patch4 -p1
%patch5 -p1
%ifarch ppc ppc64 ppc64le
%patch6 -p1
%endif
%patch101 -p1
%patch102 -p1
%patch103 -p1
%patch104 -p1
%patch105 -p1
%patch106 -p1
%patch111 -p1
%patch112 -p1
%patch113 -p1
%patch114 -p1
%patch115 -p1
%patch116 -p1
%patch117 -p1
%patch118 -p1
%patch119 -p1
%patch120 -p1
%patch121 -p1
%patch122 -p1
%patch123 -p1
%patch124 -p1
%patch125 -p1
%patch126 -p1
%patch127 -p1
%patch128 -p1
%patch129 -p1
%patch130 -p1
%patch200 -p1
%ifarch aarch64
%patch201 -p1
%patch202 -p1
%endif
mkdir dbus-apis
cp -a doc/*.txt dbus-apis/
# FIXME: Change the dbus service to be a real service, not systemd launched
sed -i "s:Exec=/bin/false:Exec=%{_libexecdir}/bluetooth/obexd:g" obexd/src/org.bluez.obex.service
sed -i "/SystemdService=.*/d" obexd/src/org.bluez.obex.service
# END FIXME
# for auto-enable subpackage
echo AutoEnable=true >> src/main.conf
%build
# because of patch4...
autoreconf -fi
# --enable-experimental is needed or btattach does not build (bug?)
%configure \
--disable-silent-rules \
--enable-pie \
--enable-library \
--enable-tools \
--enable-cups \
--enable-mesh \
--enable-midi \
--enable-test \
--enable-experimental \
--enable-deprecated \
--enable-datafiles \
--enable-sixaxis \
--with-systemdsystemunitdir=%{_unitdir} \
--with-systemduserunitdir=%{_userunitdir}
make %{?_smp_mflags} all
%install
%make_install
find %{buildroot} -type f -name "*.la" -delete -print
install --mode=0644 -D %{SOURCE7} %{buildroot}/%{_sysconfdir}/modprobe.d/50-bluetooth.conf
# no idea why this is suddenly necessary...
install --mode 0755 -d %{buildroot}%{_localstatedir}/lib/bluetooth
# FIXME: Do not delete the systemd service once we support systemd user/session services
rm %{buildroot}%{_userunitdir}/obex.service
# end FIXME
## same as in fedora...
# "make install" fails to install gatttool, used with Bluetooth Low Energy
install -m0755 attrib/gatttool %{buildroot}%{_bindir}
# for auto-enable subpackage
find . -name main.conf
install --mode 0644 -D src/main.conf %{buildroot}/%{_sysconfdir}/bluetooth/main.conf
# rpmlint warnings...
cd %{buildroot}%{_libdir}/bluez/test
chmod 0644 *.py *.xml *.dtd
%check
%if ! 0%{?qemu_user_space_build}
##make %%{?_smp_mflags} check
# deliberately not running parallel, as the test suite has spurious failures otherwise
make check V=0
%endif
%pre
%service_add_pre bluetooth.service
%post
%{?udev_rules_update:%udev_rules_update}
# todo: check if this is still obeyed / needed with systemd
%{fillup_only -n bluetooth}
# We need the bluez systemd service enabled at any time. It won't start up
# on it's own, as it is triggered by udev in the end (bnc#796671)
/bin/systemctl enable bluetooth.service 2>&1 || :
/bin/systemctl daemon-reload >/dev/null 2>&1 || :
%preun
%service_del_preun bluetooth.service
%postun
%service_del_postun bluetooth.service
%post -n libbluetooth3 -p /sbin/ldconfig
%postun -n libbluetooth3 -p /sbin/ldconfig
%files
%defattr(-, root, root)
%doc AUTHORS COPYING ChangeLog README dbus-apis
%{_bindir}/bluemoon
%{_bindir}/btattach
%{_bindir}/gatttool
%{_bindir}/hcitool
%{_bindir}/l2ping
%{_bindir}/rfcomm
%{_bindir}/sdptool
%{_bindir}/ciptool
%{_bindir}/hciattach
%{_bindir}/hciconfig
%{_bindir}/hex2hcd
%{_bindir}/mpris-proxy
%dir %{_libdir}/bluetooth
%dir %{_libdir}/bluetooth/plugins
%{_libdir}/bluetooth/plugins/sixaxis.so
%dir %{_libexecdir}/bluetooth
%{_libexecdir}/bluetooth/bluetoothd
%{_libexecdir}/bluetooth/obexd
%{_bindir}/bluetoothctl
%{_bindir}/btmon
%{_bindir}/meshctl
%{_bindir}/hcidump
%{_bindir}/bccmd
%{_libexecdir}/udev/
%{_mandir}/man1/btattach.1%{ext_man}
%{_mandir}/man1/hcidump.1%{ext_man}
%{_mandir}/man1/hciattach.1%{ext_man}
%{_mandir}/man1/hciconfig.1%{ext_man}
%{_mandir}/man8/bluetoothd.8%{ext_man}
%{_mandir}/man1/hid2hci.1%{ext_man}
%{_mandir}/man1/bccmd.1%{ext_man}
%{_mandir}/man1/l2ping.1%{ext_man}
%{_mandir}/man1/hcitool.1%{ext_man}
%{_mandir}/man1/sdptool.1%{ext_man}
%{_mandir}/man1/ciptool.1%{ext_man}
%{_mandir}/man1/rfcomm.1%{ext_man}
%{_mandir}/man1/rctest.1%{ext_man}
%config %{_sysconfdir}/dbus-1/system.d/bluetooth.conf
%dir %{_localstatedir}/lib/bluetooth
%dir %{_sysconfdir}/modprobe.d
%config(noreplace) %{_sysconfdir}/modprobe.d/50-bluetooth.conf
%{_unitdir}/bluetooth.service
%{_datadir}/dbus-1/system-services/org.bluez.service
%{_datadir}/dbus-1/services/org.bluez.obex.service
%files devel
%defattr(-, root, root)
%{_includedir}/bluetooth
%{_libdir}/libbluetooth.so
%{_libdir}/pkgconfig/bluez.pc
%files -n libbluetooth3
%defattr(-, root, root)
%{_libdir}/libbluetooth.so.*
%doc AUTHORS COPYING ChangeLog README
%files cups
%defattr(-,root,root)
%dir %{_libexecdir}/cups
%dir %{_libexecdir}/cups/backend
%{_libexecdir}/cups/backend/bluetooth
%files test
%defattr(-,root,root)
#{_bindir}/hciemu
%{_bindir}/l2test
%{_bindir}/rctest
%dir %{_libdir}/bluez
%{_libdir}/bluez/test
%files auto-enable-devices
%defattr(-,root,root)
%dir %{_sysconfdir}/bluetooth
%config(noreplace) %{_sysconfdir}/bluetooth/main.conf
%changelog