bluez/bluez.spec
Your Name 468d2f5e15
Some checks failed
Run CI/CD... / main (push) Has been cancelled
Add .gitignore and .gitea/workflows/ci.yml
2025-01-31 18:42:18 +00:00

303 lines
8.7 KiB
RPMSpec

%define major 3
%define libname %mklibname %{name} %{major}
%define devname %mklibname %{name} -d
%define mesh 0
Summary: Official Linux Bluetooth protocol stack
Name: bluez
Version: 5.73
Release: 1
Epoch: 2
License: GPLv2+
Group: Communications
URL: https://www.bluez.org
Source0: http://www.kernel.org/pub/linux/bluetooth/%{name}-%{version}.tar.xz
Source1: pand.conf
Source2: dund.conf
Source3: hidd.conf
Source4: rfcomm.conf
Source5: 97-bluetooth.rules
Source10: bluez-uinput.modules
# Revert this commit, it leads to huge delay on boot in Plasma 5
Patch0: bluez-5.36-systemd-conditional.patch
## Ubuntu patches
Patch1: 0001-work-around-Logitech-diNovo-Edge-keyboard-firmware-i.patch
# Non-upstream
Patch2: 0001-Allow-using-obexd-without-systemd-in-the-user-sessio.patch
Patch3: 0001-obex-Use-GLib-helper-function-to-manipulate-paths.patch
Patch4: 0004-agent-Assert-possible-infinite-loop.patch
BuildRequires: bison
BuildRequires: flex
BuildRequires: cups-devel
BuildRequires: elfutils-devel
BuildRequires: readline-devel
BuildRequires: sbc-devel
BuildRequires: speexdsp-devel
BuildRequires: json-c-devel
BuildRequires: python3-docutils
BuildRequires: pkgconfig(alsa)
BuildRequires: pkgconfig(dbus-1)
BuildRequires: pkgconfig(expat)
BuildRequires: pkgconfig(glib-2.0)
BuildRequires: pkgconfig(libcap-ng)
BuildRequires: pkgconfig(libical)
BuildRequires: pkgconfig(libusb)
BuildRequires: pkgconfig(libusb-1.0)
BuildRequires: pkgconfig(systemd)
BuildRequires: pkgconfig(udev) >= 186
BuildRequires: pkgconfig(json-c) >= 0.13
Obsoletes: bluez-alsa < 5.0
Obsoletes: bluez-gstreamer < 5.0
%description
These are the official Bluetooth communication libraries for Linux.
%files
%{_bindir}/ciptool
#{_bindir}/bccmd
%{_bindir}/bluemoon
%{_bindir}/bluetoothctl
%{_bindir}/btattach
%{_bindir}/btmon
%{_bindir}/hciattach
%{_bindir}/hciconfig
%{_bindir}/hcidump
%{_bindir}/hcitool
%{_bindir}/hex2hcd
%{_bindir}/l2ping
%{_bindir}/mpris-proxy
%{_bindir}/rfcomm
%{_bindir}/sdptool
%{_libexecdir}/bluetooth/bluetoothd
%{_libexecdir}/bluetooth/obexd
%{_unitdir}/bluetooth.service
%{_unitdir}/dbus-org.bluez.service
%{_userunitdir}/obex.service
#{_mandir}/man1/bccmd.1*
%{_mandir}/man1/btattach.1*
%{_mandir}/man1/ciptool.1*
%{_mandir}/man1/hciattach.1*
%{_mandir}/man1/hciconfig.1*
%{_mandir}/man1/hcitool.1*
%{_mandir}/man1/hcidump.1*
%{_mandir}/man1/l2ping.1*
%{_mandir}/man1/rctest.1*
%{_mandir}/man1/rfcomm.1*
%{_mandir}/man1/sdptool.1*
%{_mandir}/man1/btmon.1*
%{_mandir}/man8/*
%config(noreplace) %{_sysconfdir}/sysconfig/*
%config(noreplace) %{_sysconfdir}/dbus-1/system.d/*.conf
%config(noreplace) %{_sysconfdir}/bluetooth
%{_datadir}/dbus-1/system-services/org.bluez.service
%{_datadir}/dbus-1/services/org.bluez.obex.service
%{_datadir}/zsh/site-functions/_bluetoothctl
%{_localstatedir}/lib/bluetooth
%dir %{_libdir}/bluetooth
%dir %{_libdir}/bluetooth/plugins
%{_libdir}/bluetooth/plugins/sixaxis.so
%{_udevrulesdir}/97-bluetooth.rules
%post
%systemd_post bluetooth.service
%postun
%systemd_post bluetooth.service
#----------------------------------------------------------------------------
%package cups
Summary: CUPS printer backend for Bluetooth printers
Group: System/Servers
Requires: cups
%description cups
This package contains the CUPS backend for Bluetooth printers.
%files cups
%{_libdir}/cups/backend/bluetooth
#----------------------------------------------------------------------------
%package -n %{libname}
Summary: Official Linux Bluetooth protocol stack
Group: System/Libraries
%description -n %{libname}
These are the official Bluetooth communication libraries for Linux.
%files -n %{libname}
%{_libdir}/libbluetooth.so.%{major}*
#----------------------------------------------------------------------------
%package -n %{devname}
Summary: Headers for developing programs that will use %{name}
Group: Development/C++
Requires: %{libname} = %{EVRD}
Provides: %{name}-devel = %{EVRD}
%description -n %{devname}
This package contains the headers that programmers will need to develop
applications which will use libraries from %{name}.
%files -n %{devname}
%doc AUTHORS ChangeLog README
%dir %{_includedir}/bluetooth
%{_includedir}/bluetooth/*.h
%{_libdir}/*.so
%{_libdir}/pkgconfig/bluez.pc
#----------------------------------------------------------------------------
%package hid2hci
Summary: Put HID proxying bluetooth HCI's into HCI mode
Group: Communications
Requires(post): udev
%description hid2hci
Most allinone PC's and bluetooth keyboard / mouse sets which include a
bluetooth dongle, ship with a so called HID proxying bluetooth HCI.
The HID proxying makes the keyboard / mouse show up as regular USB HID
devices (after connecting using the connect button on the device + keyboard),
which makes them work without requiring any manual configuration.
The bluez-hid2hci package contains the hid2hci utility and udev rules to
automatically switch supported Bluetooth devices into regular HCI mode.
Install this package if you want to use the bluetooth function of the HCI
with other bluetooth devices like for example a mobile phone.
Note that after installing this package you will first need to pair your
bluetooth keyboard and mouse with the bluetooth adapter before you can use
them again. Since you cannot use your bluetooth keyboard and mouse until
they are paired, this will require the use of a regular (wired) USB keyboard
and mouse.
%files hid2hci
/lib/udev/hid2hci
%{_mandir}/man1/hid2hci.1*
/lib/udev/rules.d/97-hid2hci.rules
%post hid2hci
%{_bindir}/udevadm trigger --subsystem-match=usb
#----------------------------------------------------------------------------
%if %{mesh}
%package mesh
Summary: Bluetooth MESH
Group: Communications
%description mesh
Bluetooth MESH
%files mesh
%{_unitdir}/bluetooth-mesh.service
%{_bindir}/mesh-cfgclient
%{_bindir}/meshctl
%{_libdir}/bluetooth/bluetooth-meshd
%{_datadir}/dbus-1/system-services/org.bluez.mesh.service
%endif
#----------------------------------------------------------------------------
%package test
Summary: Tools for testing of various Bluetooth-functions
Group: System/Servers
Requires: python-dbus
Requires: python-gobject
%description test
Contains a few tools for testing various bluetooth functions. The
BLUETOOTH trademarks are owned by Bluetooth SIG, Inc., U.S.A.
%files test
%{_bindir}/simple-agent
%{_bindir}/l2test
%{_bindir}/rctest
%{_bindir}/test-*
%{_bindir}/isotest
%{_mandir}/man1/isotest.1*
#----------------------------------------------------------------------------
%prep
%setup -q
%patch0 -p1 -R
%patch1 -p1
#patch2 -p1
#patch3 -p1
%patch4 -p1
libtoolize -f -c
autoreconf -fi
%build
%configure2_5x \
--with-systemdsystemunitdir=%{_unitdir} \
--with-systemduserunitdir=%{_userunitdir} \
--with-udevdir=/lib/udev \
--enable-hid2hci \
--enable-tools \
--enable-cups \
--enable-datafiles \
--enable-debug \
--enable-library \
--enable-monitor \
--enable-udev \
--enable-obex \
--enable-client \
--enable-systemd \
--enable-threads \
--enable-sixaxis \
--enable-nfc \
--enable-sap \
--enable-a2dp \
--enable-health \
--enable-midi \
--enable-avrcp \
--enable-network \
--enable-hid \
--enable-hog \
--enable-experimental \
--enable-deprecated \
--enable-testing \
--disable-mesh \
--enable-manpages
%make
%install
%makeinstall_std rulesdir=%{_sysconfdir}/udev/rules.d udevdir=/lib/udev
mkdir -p %{buildroot}%{_sysconfdir}/bluetooth
echo "1234" > %{buildroot}%{_sysconfdir}/bluetooth/pin
chmod 600 %{buildroot}%{_sysconfdir}/bluetooth/pin
install -m644 %{SOURCE1} -D %{buildroot}%{_sysconfdir}/sysconfig/pand
install -m644 %{SOURCE2} -D %{buildroot}%{_sysconfdir}/sysconfig/dund
install -m644 %{SOURCE3} -D %{buildroot}%{_sysconfdir}/sysconfig/hidd
install -m644 %{SOURCE4} -D %{buildroot}%{_sysconfdir}/sysconfig/rfcomm
cp test/test-* %{buildroot}%{_bindir}
cp test/simple-agent %{buildroot}%{_bindir}/simple-agent
rm %{buildroot}%{_sysconfdir}/udev/rules.d/*.rules
install -p -m644 tools/hid2hci.rules -D %{buildroot}/lib/udev/rules.d/97-hid2hci.rules
install -m644 %{SOURCE5} -D %{buildroot}%{_udevrulesdir}/97-bluetooth.rules
sed s,"/usr/bin/bluetoothd","%{_libexecdir}/bluetooth/bluetoothd",g -i %{buildroot}%{_udevrulesdir}/97-bluetooth.rules
sed s,"@libexecdir@","%{_libexecdir}/bluetooth",g -i %{buildroot}%{_datadir}/dbus-1/services/org.bluez.obex.service
#install more config files
install -m0644 profiles/network/network.conf %{buildroot}%{_sysconfdir}/bluetooth/
install -m0644 src/main.conf %{buildroot}%{_sysconfdir}/bluetooth/
install -m0644 profiles/input/input.conf %{buildroot}%{_sysconfdir}/bluetooth/
install -d -m0755 %{buildroot}%{_localstatedir}/lib/bluetooth
ln -s bluetooth.service %{buildroot}%{_unitdir}/dbus-org.bluez.service
sed 's|#AutoEnable=false|AutoEnable=true|' -i %{buildroot}%{_sysconfdir}/bluetooth/main.conf