1 # Do not create provides from emulator .so files because the main package
2 # should anchor any reverse-dependencies
3 %global __provides_exclude_from ^(.*\\.emulator)$
6 %define _dumpdir /opt/etc/dump.d/module.d
7 %define _varlibdir /opt/var/lib
8 %define _meshdir /opt/usr/mesh
11 Summary: Bluetooth framework for BlueZ and Obexd. This package is Bluetooth framework based on BlueZ and Obexd stack.
14 Group: Network & Connectivity/Bluetooth
16 Source0: %{name}-%{version}.tar.gz
17 Source1001: bluetooth-frwk.manifest
19 Requires: bluetooth-tools
21 %define bt_bluez_hal ENABLED
22 %define bt_gatt_client_fd ENABLED
23 %define bt_permanent_log DISABLED
24 %define bt_http_proxy DISABLED
25 %define bt_factory_mode DISABLED
26 %define bt_vendor_operation DISABLED
28 BuildRequires: pkgconfig(aul)
29 %if %{bt_factory_mode} == ENABLED
30 BuildRequires: pkgconfig(bincfg)
32 BuildRequires: pkgconfig(dlog)
33 BuildRequires: pkgconfig(glib-2.0)
34 BuildRequires: pkgconfig(gio-2.0)
35 BuildRequires: pkgconfig(gio-unix-2.0)
36 BuildRequires: pkgconfig(syspopup-caller)
37 BuildRequires: pkgconfig(vconf)
38 BuildRequires: pkgconfig(libxml-2.0)
39 BuildRequires: pkgconfig(capi-network-connection)
40 BuildRequires: pkgconfig(alarm-service)
41 BuildRequires: pkgconfig(capi-content-mime-type)
42 BuildRequires: pkgconfig(eventsystem)
43 %if %{bt_http_proxy} == ENABLED
44 BuildRequires: pkgconfig(libsoup-2.4)
46 BuildRequires: pkgconfig(capi-network-tethering)
48 BuildRequires: pkgconfig(cynara-client)
49 BuildRequires: pkgconfig(cynara-creds-gdbus)
50 BuildRequires: pkgconfig(libtzplatform-config)
51 BuildRequires: pkgconfig(json-c)
52 BuildRequires: pkgconfig(ell)
53 BuildRequires: pkgconfig(storage)
54 BuildRequires: pkgconfig(capi-system-info)
55 BuildRequires: pkgconfig(capi-appfw-app-control)
56 BuildRequires: pkgconfig(gmock)
57 BuildRequires: pkgconfig(libactd)
58 BuildRequires: pkgconfig(libsystemd-daemon)
59 BuildRequires: pkgconfig(hal-api-bluetooth)
61 Requires(post): /usr/bin/vconftool
62 Requires(post): /sbin/ldconfig
63 Requires(postun): /sbin/ldconfig
66 Bluetooth framework for BlueZ and Obexd. This package is Bluetooth framework based on BlueZ and Obexd stack.
67 This package contains API set for BT GAP, BT SDP, BT RFCOMM and BLE Mesh.
69 %package profile_common
70 Summary: bluetooth-frwk service and conf files for common profile
71 Requires: %{name} = %{version}-%{release}
72 Conflicts: %{name}-profile_mobile
73 Conflicts: %{name}-profile_wearable
74 Conflicts: %{name}-profile_tv
75 Conflicts: %{name}-profile_ivi
76 %description profile_common
77 Bluetooth framework configuration and service files for Tizen common profile
79 %package profile_mobile
80 Summary: bluetooth-frwk service and conf files for mobile profile
81 Requires: %{name} = %{version}-%{release}
82 Conflicts: %{name}-profile_common
83 Conflicts: %{name}-profile_wearable
84 Conflicts: %{name}-profile_tv
85 Conflicts: %{name}-profile_ivi
86 %description profile_mobile
87 Bluetooth framework configuration and service files for Tizen mobile profile
90 %ifarch %{ix86} || %{arm}
91 %package extension-TM1
92 Summary: bluetooth-frwk service and conf files for mobile TM1
93 Requires: %{name}-profile_mobile = %{version}-%{release}
94 %description extension-TM1
95 Bluetooth framework configuration and service files for Tizen mobile TM1
98 %package profile_wearable
99 Summary: bluetooth-frwk service and conf files for wearable profile
100 Requires: %{name} = %{version}-%{release}
101 Conflicts: %{name}-profile_mobile
102 Conflicts: %{name}-profile_common
103 Conflicts: %{name}-profile_tv
104 Conflicts: %{name}-profile_ivi
105 %description profile_wearable
106 Bluetooth framework configuration and service files for Tizen wearable profile
109 Summary: bluetooth-frwk service and conf files for tv profile
110 Requires: %{name} = %{version}-%{release}
111 Conflicts: %{name}-profile_mobile
112 Conflicts: %{name}-profile_wearable
113 Conflicts: %{name}-profile_common
114 Conflicts: %{name}-profile_ivi
115 %description profile_tv
116 Bluetooth framework configuration and service files for Tizen tv profile
119 Summary: bluetooth-frwk service and conf files for ivi profile
120 Requires: %{name} = %{version}-%{release}
121 Conflicts: %{name}-profile_mobile
122 Conflicts: %{name}-profile_wearable
123 Conflicts: %{name}-profile_tv
124 Conflicts: %{name}-profile_common
125 %description profile_ivi
126 Bluetooth framework configuration and service files for Tizen ivi profile
128 %ifarch %{ix86} x86_64
129 %package extension-emulator
130 Summary: bluetooth-frwk service and conf files for emulator
131 Requires: %{name} = %{version}-%{release}
132 %description extension-emulator
133 bluetooth-frwk service and conf files for emulator
134 %endif // ifarch %{ix86} x86_64
137 Summary: Bluetooth framework for BlueZ and Obexd
138 Group: Development/Libraries
139 Requires: %{name} = %{version}-%{release}
142 This package is development files for Bluetooth framework based on BlueZ and Obexd stack.
143 This package contains API set for BT GAP, BT SDP, and BT RFCOMM.
146 Summary: Bluetooth Service daemon
147 Group: Network & Connectivity/Bluetooth
148 Requires: %{name} = %{version}-%{release}
151 This package is Bluetooth Service daemon to manage BT services.
153 %if %{bt_http_proxy} == ENABLED
155 Summary: Bluetooth HTTP Proxy Service daemon
156 Group: Network & Connectivity/Bluetooth
157 Requires: %{name} = %{version}-%{release}
159 %description httpproxy
160 This package is Bluetooth HTTP Proxy Service daemon
164 Summary: Bluetooth OTP Service daemon
165 Group: Network & Connectivity/Bluetooth
166 Requires: %{name} = %{version}-%{release}
169 This package is Bluetooth OTP Service daemon
172 Summary: Bluetooth Core daemon
173 Group: Network & Connectivity/Bluetooth
174 Requires: %{name} = %{version}-%{release}
177 This package is Bluetooth core daemon to manage activation / deactivation.
180 Summary: Bluetooth test application
181 Group: Network & Connectivity/Bluetooth
182 Requires: %{name} = %{version}-%{release}
185 This package is Bluetooth test application.
188 Summary: Bluetooth OAL
189 Group: Network & Connectivity/Bluetooth
190 Requires: %{name} = %{version}-%{release}
193 This package is BT stack common interface.
195 %package plugin-headed
196 Summary: Bluetooth plugin Headed
197 Group: Network & Connectivity/Bluetooth
198 Requires: %{name} = %{version}-%{release}
200 %description plugin-headed
201 This package is Bluetooth plugin to manage UI and syspopup
203 %package -n bluetooth-haltests
204 Summary: HAL Test package for bluetooth OAL
206 Requires: %{name} = %{version}-%{release}
208 %description -n bluetooth-haltests
209 This package is C-API test application.
217 export CFLAGS="$CFLAGS -DTIZEN_DEBUG_ENABLE"
218 export CFLAGS="$CFLAGS -DTIZEN_FEATURE_BT_OBEX"
219 export CFLAGS="$CFLAGS -DTIZEN_FEATURE_BT_PAN_NAP"
220 export CFLAGS="$CFLAGS -DTIZEN_FEATURE_BT_IPSP"
221 export CXXFLAGS="$CXXFLAGS -DTIZEN_DEBUG_ENABLE"
222 export FFLAGS="$FFLAGS -DTIZEN_DEBUG_ENABLE"
224 %define _servicefile packaging/bluetooth-frwk-common.service
225 %define _servicedir starter.target.wants
227 %if "%{?profile}" == "mobile"
228 export CFLAGS="$CFLAGS -DTIZEN_FEATURE_NETWORK_TETHERING_ENABLE -DTIZEN_FEATURE_FLIGHTMODE_ENABLED -DTIZEN_PROFILE_MOBILE -DTIZEN_FEATURE_TELEPHONY_ENABLED"
229 %if "%{?tizen_target_name}" == "TM1"
230 %define _servicefile packaging/bluetooth-frwk-mobile-sprd.service
232 %define _servicefile packaging/bluetooth-frwk-mobile.service
234 %define _servicedir multi-user.target.wants
237 %if "%{?profile}" == "wearable"
238 export CFLAGS="$CFLAGS -DTIZEN_PROFILE_WEARABLE -DTIZEN_FEATURE_FLIGHTMODE_ENABLED"
239 %define _servicefile packaging/bluetooth-frwk-wearable.service
240 %define _servicedir multi-user.target.wants
243 %if "%{?profile}" == "tv"
244 export CFLAGS="$CFLAGS -DUSB_BLUETOOTH -DTIZEN_TV -DAUTO_ACCEPT"
245 %define _servicefile packaging/bluetooth-frwk-tv.service
246 %define _servicedir multi-user.target.wants
249 %if "%{?profile}" == "ivi"
250 export CFLAGS="$CFLAGS -DTIZEN_PROFILE_IVI"
251 %define _servicefile packaging/bluetooth-frwk-wearable.service
252 %define _servicedir multi-user.target.wants
256 #export CFLAGS="$CFLAGS -Wall -g -fvisibility=hidden -fPIC"
257 export CFLAGS="$CFLAGS -fpie"
258 export CFLAGS+=" -DARCH64"
259 export CXXFLAGS+=" -DARCH64"
260 export FFLAGS+=" -DARCH64"
262 export CFLAGS="$CFLAGS -fpie"
263 export LDFLAGS="$CFLAGS -pie"
266 %if %{bt_bluez_hal} == ENABLED
267 export CFLAGS="$CFLAGS -DTIZEN_FEATURE_BT_RFCOMM_DIRECT -DTIZEN_BT_HAL"
269 export CFLAGS="$CFLAGS -DTIZEN_FEATURE_BT_RFCOMM_DIRECT"
271 export LDFLAGS="$CFLAGS -Wl,--rpath=%{_libdir} -Wl,--as-needed -Wl,--unresolved-symbols=ignore-in-shared-libs"
273 %if %{bt_gatt_client_fd} == DISABLED
274 export CFLAGS="$CFLAGS -DTIZEN_FEATURE_BT_GATT_CLIENT_FD_DISABLE"
277 %if %{bt_permanent_log} == ENABLED
278 export CFLAGS="$CFLAGS -DTIZEN_FEATURE_BT_PERMANENT_LOG"
281 %if %{bt_http_proxy} == ENABLED
282 export CFLAGS="$CFLAGS -DTIZEN_FEATURE_BT_HTTP_PROXY"
285 %if %{bt_factory_mode} == ENABLED
286 export CFLAGS="$CFLAGS -DTIZEN_FEATURE_BT_FACTORY_MODE"
289 %if %{bt_vendor_operation} == ENABLED
290 export CFLAGS="$CFLAGS -DTIZEN_FEATURE_BT_VENDOR_OPERATION"
293 %if %{bt_bluez_hal} == ENABLED
294 export BT_INCLUDE_OAL_BLUEZ=ENABLED
295 export CFLAGS="$CFLAGS -DTIZEN_BT_INCLUDE_OAL_BLUEZ"
297 export BT_INCLUDE_OAL_BLUEZ=DISABLED
300 export CFLAGS_DEFAULT="$CFLAGS"
301 export CXXFLAGS_DEFAULT="$CXXFLAGS"
302 export FFLAGS_DEFAULT="$FFLAGS"
305 %ifarch %{ix86} || %{arm}
307 export CFLAGS="$CFLAGS_DEFAULT -DTIZEN_FEATURE_BT_RFCOMM_DIRECT"
308 export CXXFLAGS="$CXXFLAGS_DEFAULT -DTIZEN_FEATURE_BT_RFCOMM_DIRECT"
309 export FFLAGS="$FFLAGS_DEFAULT -DTIZEN_FEATURE_BT_RFCOMM_DIRECT"
311 cmake . -DCMAKE_INSTALL_PREFIX=/usr \
312 -DCMAKE_LIB_DIR=%{_libdir} \
313 -DTZ_SYS_USER_GROUP=%TZ_SYS_USER_GROUP \
314 -DTZ_SYS_DEFAULT_USER=%TZ_SYS_DEFAULT_USER \
315 -DLIBNOTIFY_SUPPORT=Off \
316 -DLIBNOTIFICATION_SUPPORT=Off
322 cp %{buildroot}%{_bindir}/bt-core tm1/bt-core.tm1
326 %ifarch %{ix86} x86_64
327 export CFLAGS="${CFLAGS} -DTIZEN_FEATURE_BT_RFCOMM_DIRECT"
328 export CXXFLAGS="${CXXFLAGS} -DTIZEN_FEATURE_BT_RFCOMM_DIRECT"
329 export FFLAGS="${FFLAGS} -DTIZEN_FEATURE_BT_RFCOMM_DIRECT"
331 mkdir -p build_emulator
333 cmake . -DCMAKE_INSTALL_PREFIX=/usr \
334 -DCMAKE_LIB_DIR=%{_libdir} \
335 -DTZ_SYS_USER_GROUP=%TZ_SYS_USER_GROUP \
336 -DTZ_SYS_DEFAULT_USER=%TZ_SYS_DEFAULT_USER \
337 -DLIBNOTIFY_SUPPORT=Off \
338 -DLIBNOTIFICATION_SUPPORT=Off
344 cp %{buildroot}%{_libdir}/libbluetooth-api.so* build_emulator/
345 pushd build_emulator/
346 for FILE in libbluetooth-api.so*; do mv "${FILE}" "${FILE}.emulator"; done
350 # non-extension-TM1 / non-extension-emulator
352 export CFLAGS="$CFLAGS_DEFAULT -DTIZEN_FEATURE_BT_RFCOMM_DIRECT"
353 export CXXFLAGS="$CXXFLAGS_DEFAULT -DTIZEN_FEATURE_BT_RFCOMM_DIRECT"
354 export FFLAGS="$FFLAGS_DEFAULT -DTIZEN_FEATURE_BT_RFCOMM_DIRECT"
358 export CFLAGS+=" -DARCH64"
359 export CXXFLAGS+=" -DARCH64"
360 export FFLAGS+=" -DARCH64"
363 cmake . -DCMAKE_INSTALL_PREFIX=/usr \
364 -DCMAKE_LIB_DIR=%{_libdir} \
365 -DTZ_SYS_USER_GROUP=%TZ_SYS_USER_GROUP \
366 -DTZ_SYS_DEFAULT_USER=%TZ_SYS_DEFAULT_USER \
367 -DLIBNOTIFY_SUPPORT=Off \
368 -DLIBNOTIFICATION_SUPPORT=Off
377 mkdir -p %{buildroot}%{_unitdir}/starter.target.wants
378 mkdir -p %{buildroot}%{_unitdir}/delayed.target.wants
379 mkdir -p %{buildroot}%{_unitdir}/multi-user.target.wants
380 mkdir -p %{buildroot}/%{_prefix}/lib/udev/rules.d
381 mkdir -p %{buildroot}%{_meshdir}
383 cp packaging/99-bluetooth-rfkill.rules %{buildroot}/%{_prefix}/lib/udev/rules.d/99-bluetooth-rfkill.rules
386 %ifarch %{ix86} x86_64
387 cp build_emulator/libbluetooth-api.so*.emulator %{buildroot}%{_libdir}/
388 #mv %{buildroot}/%{_bindir}/bt-service-emul %{buildroot}/%{_bindir}/bt-service
391 # Rename the postfix (.mobile, .tv, ..) at post script
393 install -m 0644 packaging/bluetooth-frwk-mobile.service %{buildroot}%{_unitdir}/bluetooth-frwk.service.mobile
396 %ifarch %{ix86} || %{arm}
397 cp tm1/bt-core.tm1 %{buildroot}%{_bindir}/
398 install -m 0644 packaging/bluetooth-frwk-mobile-sprd.service %{buildroot}%{_unitdir}/bluetooth-frwk.service.tm1
402 install -m 0644 packaging/bluetooth-frwk-wearable.service %{buildroot}%{_unitdir}/bluetooth-frwk.service.wearable
403 # On IVI bt-service needs to be run as 'app' even if there is a 'guest' user.
404 cp %{buildroot}%{_datadir}/dbus-1/system-services/org.projectx.bt.service %{buildroot}%{_datadir}/dbus-1/system-services/org.projectx.bt.service.ivi
405 sed -i 's/%TZ_SYS_DEFAULT_USER/app/' %{buildroot}%{_datadir}/dbus-1/system-services/org.projectx.bt.service.ivi
408 install -m 0644 packaging/bluetooth-frwk-tv.service %{buildroot}%{_unitdir}/bluetooth-frwk.service.tv
411 install -m 0644 packaging/bluetooth-frwk-common.service %{buildroot}%{_unitdir}/bluetooth-frwk.service.common
414 install -m 0644 bt-core/bluetooth-frwk-core.service %{buildroot}%{_unitdir}/bluetooth-frwk-core.service
416 ln -s ../bluetooth-frwk.service %{buildroot}%{_unitdir}/multi-user.target.wants/bluetooth-frwk.service
417 ln -s ../bluetooth-frwk.service %{buildroot}%{_unitdir}/starter.target.wants/bluetooth-frwk.service
419 %postun -p /sbin/ldconfig
422 /usr/bin/chsmack -a '_' %{_varlibdir}/bluetooth/auto-pair-blacklist
423 /usr/bin/chown network_fw:network_fw %{_varlibdir}/bluetooth/auto-pair-blacklist
424 /usr/bin/chown network_fw:network_fw %{_meshdir}
427 %manifest %{name}.manifest
429 %defattr(-, root, root)
430 %{_libdir}/libbluetooth-api.so.*
431 %exclude %{_libdir}/libbluetooth-api.so*.emulator
434 %defattr(-, root, root)
435 %{_includedir}/bt-service/bluetooth-api.h
436 %{_includedir}/bt-service/bluetooth-hid-api.h
437 %{_includedir}/bt-service/bluetooth-audio-api.h
438 %{_includedir}/bt-service/bluetooth-telephony-api.h
439 %{_includedir}/bt-service/bluetooth-media-control.h
440 %{_includedir}/bt-service/bluetooth-scmst-api.h
441 %{_includedir}/bt-service/bluetooth-ipsp-api.h
442 %{_includedir}/bt-service/bluetooth-gatt-server-api.h
443 %{_includedir}/bt-service/bluetooth-gatt-client-api.h
444 %{_includedir}/bt-service/bluetooth-mesh-api.h
445 %{_libdir}/pkgconfig/bluetooth-api.pc
446 %{_libdir}/libbluetooth-api.so
449 %ifarch %{ix86} x86_64
450 %post extension-emulator
452 for FILE in libbluetooth-api.so*.emulator; do mv "${FILE}" "${FILE%.emulator}"; done
454 %preun extension-emulator
456 for FILE in libbluetooth-api.so*; do mv "${FILE}" "${FILE}.emulator"; done
458 %files extension-emulator
459 %manifest %{name}.manifest
460 %defattr(-, root, root)
461 %{_libdir}/libbluetooth-api.so.*.emulator
462 %{_libdir}/libbluetooth-api.so.emulator
466 %manifest %{name}.manifest
468 %defattr(-, root, root)
469 %{_bindir}/bt-service
470 %{_sysconfdir}/dbus-1/system.d/bluetooth-frwk-service.conf
471 %{_bindir}/bluetooth-frwk-test
472 %{_varlibdir}/bluetooth
473 %{_prefix}/etc/bluetooth
475 %attr(-,network_fw,network_fw) %{_varlibdir}/bluetooth/auto-pair-blacklist
477 %if %{bt_http_proxy} == ENABLED
479 %manifest %{name}.manifest
481 %defattr(-, root, root)
482 %{_bindir}/bt-httpproxy
483 %{_datadir}/dbus-1/system-services/org.projectx.httpproxy.service
484 %{_sysconfdir}/dbus-1/system.d/bluetooth-frwk-httpproxy.conf
488 %manifest %{name}.manifest
490 %defattr(-, root, root)
492 %{_datadir}/dbus-1/system-services/org.projectx.otp.service
493 %{_sysconfdir}/dbus-1/system.d/bluetooth-frwk-otp.conf
496 %manifest %{name}.manifest
498 %defattr(-, root, root)
499 %{_unitdir}/bluetooth-frwk-core.service
500 %{_datadir}/dbus-1/system-services/org.projectx.bt_core.service
502 %{_sysconfdir}/dbus-1/system.d/bluetooth-frwk-core.conf
503 %{_prefix}/lib/udev/rules.d/99-bluetooth-rfkill.rules
506 %manifest %{name}.manifest
508 %defattr(-, root, root)
509 %{_bindir}/bluetooth-frwk-test
510 #%{_bindir}/bluetooth-gatt-test
511 #%{_bindir}/bluetooth-advertising-test
514 %manifest %{name}.manifest
516 %defattr(-, root, root)
517 %{_libdir}/bt-plugin-headed.so
521 mv bluetooth-frwk.service.common bluetooth-frwk.service
523 %preun profile_common
525 mv bluetooth-frwk.service bluetooth-frwk.service.common
527 %files profile_common
529 %{_unitdir}/multi-user.target.wants/bluetooth-frwk.service
530 %exclude %{_unitdir}/starter.target.wants/bluetooth-frwk.service
531 %{_unitdir}/bluetooth-frwk.service.common
532 %{_datadir}/dbus-1/system-services/org.projectx.bt.service
536 mv bluetooth-frwk.service.mobile bluetooth-frwk.service
538 %preun profile_mobile
540 mv bluetooth-frwk.service bluetooth-frwk.service.mobile
542 %files profile_mobile
544 %{_unitdir}/multi-user.target.wants/bluetooth-frwk.service
545 %{_unitdir}/bluetooth-frwk.service.mobile
546 %{_datadir}/dbus-1/system-services/org.projectx.bt.service
549 %ifarch %{ix86} || %{arm}
552 mv bluetooth-frwk.service.tm1 bluetooth-frwk.service
555 mv bt-core.tm1 bt-core
559 mv bluetooth-frwk.service bluetooth-frwk.service.tm1
562 mv bt-core bt-core.tm1
565 %{_unitdir}/bluetooth-frwk.service.tm1
567 %defattr(-, root, root)
568 %{_bindir}/bt-core.tm1
571 %post profile_wearable
573 mv bluetooth-frwk.service.wearable bluetooth-frwk.service
575 %preun profile_wearable
577 mv bluetooth-frwk.service bluetooth-frwk.service.wearable
579 %files profile_wearable
581 %{_unitdir}/multi-user.target.wants/bluetooth-frwk.service
582 %{_unitdir}/bluetooth-frwk.service.wearable
583 %{_datadir}/dbus-1/system-services/org.projectx.bt.service
587 mv bluetooth-frwk.service.tv bluetooth-frwk.service
591 mv bluetooth-frwk.service bluetooth-frwk.service.tv
595 %{_unitdir}/multi-user.target.wants/bluetooth-frwk.service
596 %{_unitdir}/bluetooth-frwk.service.tv
597 %{_datadir}/dbus-1/system-services/org.projectx.bt.service
599 # Note: ivi reuses bluetooth-frwk.service.wearable
602 mv bluetooth-frwk.service.wearable bluetooth-frwk.service
604 pushd %{_datadir}/dbus-1/system-services
605 mv org.projectx.bt.service.ivi org.projectx.bt.service
609 mv bluetooth-frwk.service bluetooth-frwk.service.wearable
611 pushd %{_datadir}/dbus-1/system-services
612 mv org.projectx.bt.service org.projectx.bt.service.ivi
616 %{_unitdir}/multi-user.target.wants/bluetooth-frwk.service
617 %{_unitdir}/bluetooth-frwk.service.wearable
618 %{_datadir}/dbus-1/system-services/org.projectx.bt.service.ivi
621 %manifest %{name}.manifest
622 %defattr(-, root, root)
623 %{_libdir}/libbt-oal.so*
624 %{_sysconfdir}/dbus-1/system.d/bluetooth-frwk-gap-agent.conf
626 %if %{bt_bluez_hal} == ENABLED
627 %{_libdir}/libbluetooth.default.so*
630 %files -n bluetooth-haltests
631 %manifest %{name}.manifest
632 %{_bindir}/bluetooth-haltests