# Do not create provides from emulator .so files because the main package # should anchor any reverse-dependencies %global __provides_exclude_from ^(.*\\.emulator)$ %bcond_with x %define _dumpdir /opt/etc/dump.d/module.d %define _varlibdir /opt/var/lib Name: bluetooth-frwk Summary: Bluetooth framework for BlueZ and Obexd. This package is Bluetooth framework based on BlueZ and Obexd stack. Version: 0.3.0 Release: 1 Group: Network & Connectivity/Bluetooth License: Apache-2.0 Source0: %{name}-%{version}.tar.gz Source1001: bluetooth-frwk.manifest Requires: bluetooth-tools %define bt_bluez_hal ENABLED %define bt_gatt_client_fd ENABLED %define bt_permanent_log DISABLED %define bt_http_proxy DISABLED %define bt_factory_mode DISABLED %define bt_avc_target ENABLED BuildRequires: pkgconfig(aul) %if %{bt_factory_mode} == ENABLED BuildRequires: pkgconfig(bincfg) %endif BuildRequires: pkgconfig(dlog) BuildRequires: pkgconfig(glib-2.0) BuildRequires: pkgconfig(gio-2.0) BuildRequires: pkgconfig(gio-unix-2.0) BuildRequires: pkgconfig(syspopup-caller) BuildRequires: pkgconfig(vconf) BuildRequires: pkgconfig(libxml-2.0) BuildRequires: pkgconfig(capi-network-connection) BuildRequires: pkgconfig(alarm-service) BuildRequires: pkgconfig(capi-content-mime-type) BuildRequires: pkgconfig(eventsystem) %if %{bt_http_proxy} == ENABLED BuildRequires: pkgconfig(libsoup-2.4) %endif BuildRequires: pkgconfig(capi-network-tethering) BuildRequires: cmake BuildRequires: pkgconfig(cynara-client) BuildRequires: pkgconfig(cynara-creds-gdbus) BuildRequires: pkgconfig(libtzplatform-config) BuildRequires: pkgconfig(storage) BuildRequires: pkgconfig(capi-system-info) BuildRequires: pkgconfig(capi-appfw-app-control) BuildRequires: pkgconfig(gmock) BuildRequires: pkgconfig(libactd) BuildRequires: pkgconfig(libsystemd-daemon) Requires(post): /usr/bin/vconftool Requires(post): /sbin/ldconfig Requires(postun): /sbin/ldconfig %description Bluetooth framework for BlueZ and Obexd. This package is Bluetooth framework based on BlueZ and Obexd stack. This package contains API set for BT GAP, BT SDP, and BT RFCOMM. %package profile_common Summary: bluetooth-frwk service and conf files for common profile Requires: %{name} = %{version}-%{release} Conflicts: %{name}-profile_mobile Conflicts: %{name}-profile_wearable Conflicts: %{name}-profile_tv Conflicts: %{name}-profile_ivi %description profile_common Bluetooth framework configuration and service files for Tizen common profile %package profile_mobile Summary: bluetooth-frwk service and conf files for mobile profile Requires: %{name} = %{version}-%{release} Conflicts: %{name}-profile_common Conflicts: %{name}-profile_wearable Conflicts: %{name}-profile_tv Conflicts: %{name}-profile_ivi %description profile_mobile Bluetooth framework configuration and service files for Tizen mobile profile # extension-TM1 %ifarch %{ix86} || %{arm} %package extension-TM1 Summary: bluetooth-frwk service and conf files for mobile TM1 Requires: %{name}-profile_mobile = %{version}-%{release} %description extension-TM1 Bluetooth framework configuration and service files for Tizen mobile TM1 %endif %package profile_wearable Summary: bluetooth-frwk service and conf files for wearable profile Requires: %{name} = %{version}-%{release} Conflicts: %{name}-profile_mobile Conflicts: %{name}-profile_common Conflicts: %{name}-profile_tv Conflicts: %{name}-profile_ivi %description profile_wearable Bluetooth framework configuration and service files for Tizen wearable profile %package profile_tv Summary: bluetooth-frwk service and conf files for tv profile Requires: %{name} = %{version}-%{release} Conflicts: %{name}-profile_mobile Conflicts: %{name}-profile_wearable Conflicts: %{name}-profile_common Conflicts: %{name}-profile_ivi %description profile_tv Bluetooth framework configuration and service files for Tizen tv profile %package profile_ivi Summary: bluetooth-frwk service and conf files for ivi profile Requires: %{name} = %{version}-%{release} Conflicts: %{name}-profile_mobile Conflicts: %{name}-profile_wearable Conflicts: %{name}-profile_tv Conflicts: %{name}-profile_common %description profile_ivi Bluetooth framework configuration and service files for Tizen ivi profile %ifarch %{ix86} x86_64 %package extension-emulator Summary: bluetooth-frwk service and conf files for emulator Requires: %{name} = %{version}-%{release} %description extension-emulator bluetooth-frwk service and conf files for emulator %endif // ifarch %{ix86} x86_64 %package devel Summary: Bluetooth framework for BlueZ and Obexd Group: Development/Libraries Requires: %{name} = %{version}-%{release} %description devel This package is development files for Bluetooth framework based on BlueZ and Obexd stack. This package contains API set for BT GAP, BT SDP, and BT RFCOMM. %package service Summary: Bluetooth Service daemon Group: Network & Connectivity/Bluetooth Requires: %{name} = %{version}-%{release} %description service This package is Bluetooth Service daemon to manage BT services. %if %{bt_http_proxy} == ENABLED %package httpproxy Summary: Bluetooth HTTP Proxy Service daemon Group: Network & Connectivity/Bluetooth Requires: %{name} = %{version}-%{release} %description httpproxy This package is Bluetooth HTTP Proxy Service daemon %endif %package otp Summary: Bluetooth OTP Service daemon Group: Network & Connectivity/Bluetooth Requires: %{name} = %{version}-%{release} %description otp This package is Bluetooth OTP Service daemon %package core Summary: Bluetooth Core daemon Group: Network & Connectivity/Bluetooth Requires: %{name} = %{version}-%{release} %description core This package is Bluetooth core daemon to manage activation / deactivation. %package test Summary: Bluetooth test application Group: Network & Connectivity/Bluetooth Requires: %{name} = %{version}-%{release} %description test This package is Bluetooth test application. %package oal Summary: Bluetooth OAL Group: Network & Connectivity/Bluetooth Requires: %{name} = %{version}-%{release} %description oal This package is BT stack common interface. %package plugin-headed Summary: Bluetooth plugin Headed Group: Network & Connectivity/Bluetooth Requires: %{name} = %{version}-%{release} %description plugin-headed This package is Bluetooth plugin to manage UI and syspopup %package -n bluetooth-haltests Summary: HAL Test package for bluetooth OAL Group: TO_BE/FILLED Requires: %{name} = %{version}-%{release} %description -n bluetooth-haltests This package is C-API test application. %prep %setup -q cp %{SOURCE1001} . %build export CFLAGS="$CFLAGS -DTIZEN_DEBUG_ENABLE" export CFLAGS="$CFLAGS -DTIZEN_FEATURE_BT_OBEX" export CFLAGS="$CFLAGS -DTIZEN_FEATURE_BT_PAN_NAP" export CFLAGS="$CFLAGS -DTIZEN_FEATURE_BT_IPSP" export CXXFLAGS="$CXXFLAGS -DTIZEN_DEBUG_ENABLE" export FFLAGS="$FFLAGS -DTIZEN_DEBUG_ENABLE" export CFLAGS="$CFLAGS -DTIZEN_GATT_CLIENT" export CFLAGS="$CFLAGS -DTIZEN_FEATURE_ACTD" %define _servicefile packaging/bluetooth-frwk-common.service %define _servicedir starter.target.wants %if "%{?profile}" == "mobile" export CFLAGS="$CFLAGS -DTIZEN_FEATURE_NETWORK_TETHERING_ENABLE -DTIZEN_FEATURE_FLIGHTMODE_ENABLED -DTIZEN_PROFILE_MOBILE -DTIZEN_FEATURE_TELEPHONY_ENABLED" %if "%{?tizen_target_name}" == "TM1" %define _servicefile packaging/bluetooth-frwk-mobile-sprd.service %else %define _servicefile packaging/bluetooth-frwk-mobile.service %endif %define _servicedir multi-user.target.wants %endif %if "%{?profile}" == "wearable" export CFLAGS="$CFLAGS -DTIZEN_PROFILE_WEARABLE -DTIZEN_FEATURE_FLIGHTMODE_ENABLED" %define _servicefile packaging/bluetooth-frwk-wearable.service %define _servicedir multi-user.target.wants %endif %if "%{?profile}" == "tv" export CFLAGS="$CFLAGS -DUSB_BLUETOOTH -DTIZEN_TV -DAUTO_ACCEPT" %define _servicefile packaging/bluetooth-frwk-tv.service %define _servicedir multi-user.target.wants %endif %if "%{?profile}" == "ivi" export CFLAGS="$CFLAGS -DTIZEN_PROFILE_IVI" %define _servicefile packaging/bluetooth-frwk-wearable.service %define _servicedir multi-user.target.wants %endif %ifarch x86_64 #export CFLAGS="$CFLAGS -Wall -g -fvisibility=hidden -fPIC" export CFLAGS="$CFLAGS -fpie" export CFLAGS+=" -DARCH64" export CXXFLAGS+=" -DARCH64" export FFLAGS+=" -DARCH64" %else export CFLAGS="$CFLAGS -fpie" export LDFLAGS="$CFLAGS -pie" %endif %if %{bt_bluez_hal} == ENABLED export CFLAGS="$CFLAGS -DTIZEN_FEATURE_BT_RFCOMM_DIRECT -DTIZEN_BT_HAL" %else export CFLAGS="$CFLAGS -DTIZEN_FEATURE_BT_RFCOMM_DIRECT" %endif export LDFLAGS="$CFLAGS -Wl,--rpath=%{_libdir} -Wl,--as-needed -Wl,--unresolved-symbols=ignore-in-shared-libs" %if %{bt_gatt_client_fd} == DISABLED export CFLAGS="$CFLAGS -DTIZEN_FEATURE_BT_GATT_CLIENT_FD_DISABLE" %endif %if %{bt_permanent_log} == ENABLED export CFLAGS="$CFLAGS -DTIZEN_FEATURE_BT_PERMANENT_LOG" %endif %if %{bt_http_proxy} == ENABLED export CFLAGS="$CFLAGS -DTIZEN_FEATURE_BT_HTTP_PROXY" %endif %if %{bt_factory_mode} == ENABLED export CFLAGS="$CFLAGS -DTIZEN_FEATURE_BT_FACTORY_MODE" %endif %if %{bt_avc_target} == ENABLED export CFLAGS="$CFLAGS -DTIZEN_FEATURE_BT_AVC_TARGET" %endif %ifarch %{ix86} x86_64 export CFLAGS+=" -DTIZEN_TEST_EMUL" export CXXFLAGS+=" -DTIZEN_TEST_EMUL" export FFLAGS+=" -DTIZEN_TEST_EMUL" %endif %if %{bt_bluez_hal} == ENABLED export BT_INCLUDE_OAL_BLUEZ=ENABLED export CFLAGS="$CFLAGS -DTIZEN_BT_INCLUDE_OAL_BLUEZ" %else export BT_INCLUDE_OAL_BLUEZ=DISABLED %endif export CFLAGS_DEFAULT="$CFLAGS" export CXXFLAGS_DEFAULT="$CXXFLAGS" export FFLAGS_DEFAULT="$FFLAGS" # extension-TM1 %ifarch %{ix86} || %{arm} mkdir -p tm1 export CFLAGS="$CFLAGS_DEFAULT -DTIZEN_FEATURE_RADIO -DTIZEN_FEATURE_BT_RFCOMM_DIRECT" export CXXFLAGS="$CXXFLAGS_DEFAULT -DTIZEN_FEATURE_RADIO -DTIZEN_FEATURE_BT_RFCOMM_DIRECT" export FFLAGS="$FFLAGS_DEFAULT -DTIZEN_FEATURE_RADIO -DTIZEN_FEATURE_BT_RFCOMM_DIRECT" cmake . -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_LIB_DIR=%{_libdir} \ -DTZ_SYS_USER_GROUP=%TZ_SYS_USER_GROUP \ -DTZ_SYS_DEFAULT_USER=%TZ_SYS_DEFAULT_USER \ -DLIBNOTIFY_SUPPORT=Off \ -DLIBNOTIFICATION_SUPPORT=Off make %{?_smp_mflags} %cmake %make_install cp %{buildroot}%{_bindir}/bt-core tm1/bt-core.tm1 %endif # extension-emulator %ifarch %{ix86} x86_64 export CFLAGS="${CFLAGS} -DTIZEN_TEST_EMUL -DTIZEN_FEATURE_BT_RFCOMM_DIRECT" export CXXFLAGS="${CXXFLAGS} -DTIZEN_TEST_EMUL -DTIZEN_FEATURE_BT_RFCOMM_DIRECT" export FFLAGS="${FFLAGS} -DTIZEN_TEST_EMUL -DTIZEN_FEATURE_BT_RFCOMM_DIRECT" mkdir -p build_emulator cmake . -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_LIB_DIR=%{_libdir} \ -DTZ_SYS_USER_GROUP=%TZ_SYS_USER_GROUP \ -DTZ_SYS_DEFAULT_USER=%TZ_SYS_DEFAULT_USER \ -DLIBNOTIFY_SUPPORT=Off \ -DLIBNOTIFICATION_SUPPORT=Off make %{?_smp_mflags} %cmake %make_install cp %{buildroot}%{_libdir}/libbluetooth-api.so* build_emulator/ pushd build_emulator/ for FILE in libbluetooth-api.so*; do mv "${FILE}" "${FILE}.emulator"; done popd %endif # non-extension-TM1 / non-extension-emulator export CFLAGS="$CFLAGS_DEFAULT -DTIZEN_FEATURE_BT_RFCOMM_DIRECT" export CXXFLAGS="$CXXFLAGS_DEFAULT -DTIZEN_FEATURE_BT_RFCOMM_DIRECT" export FFLAGS="$FFLAGS_DEFAULT -DTIZEN_FEATURE_BT_RFCOMM_DIRECT" %ifarch aarch64 echo arch64 export CFLAGS+=" -DARCH64" export CXXFLAGS+=" -DARCH64" export FFLAGS+=" -DARCH64" %endif cmake . -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_LIB_DIR=%{_libdir} \ -DTZ_SYS_USER_GROUP=%TZ_SYS_USER_GROUP \ -DTZ_SYS_DEFAULT_USER=%TZ_SYS_DEFAULT_USER \ -DLIBNOTIFY_SUPPORT=Off \ -DLIBNOTIFICATION_SUPPORT=Off make %{?_smp_mflags} %cmake %install rm -rf %{buildroot} %make_install mkdir -p %{buildroot}%{_unitdir}/starter.target.wants mkdir -p %{buildroot}%{_unitdir}/delayed.target.wants mkdir -p %{buildroot}%{_unitdir}/multi-user.target.wants mkdir -p %{buildroot}/%{_prefix}/lib/udev/rules.d cp packaging/99-bluetooth-rfkill.rules %{buildroot}/%{_prefix}/lib/udev/rules.d/99-bluetooth-rfkill.rules # extension-emulator %ifarch %{ix86} x86_64 cp build_emulator/libbluetooth-api.so*.emulator %{buildroot}%{_libdir}/ #mv %{buildroot}/%{_bindir}/bt-service-emul %{buildroot}/%{_bindir}/bt-service %endif # Rename the postfix (.mobile, .tv, ..) at post script # mobile install -m 0644 packaging/bluetooth-frwk-mobile.service %{buildroot}%{_unitdir}/bluetooth-frwk.service.mobile # extension-TM1 %ifarch %{ix86} || %{arm} cp tm1/bt-core.tm1 %{buildroot}%{_bindir}/ install -m 0644 packaging/bluetooth-frwk-mobile-sprd.service %{buildroot}%{_unitdir}/bluetooth-frwk.service.tm1 %endif # wearable / ivi install -m 0644 packaging/bluetooth-frwk-wearable.service %{buildroot}%{_unitdir}/bluetooth-frwk.service.wearable # On IVI bt-service needs to be run as 'app' even if there is a 'guest' user. cp %{buildroot}%{_datadir}/dbus-1/system-services/org.projectx.bt.service %{buildroot}%{_datadir}/dbus-1/system-services/org.projectx.bt.service.ivi sed -i 's/%TZ_SYS_DEFAULT_USER/app/' %{buildroot}%{_datadir}/dbus-1/system-services/org.projectx.bt.service.ivi # tv install -m 0644 packaging/bluetooth-frwk-tv.service %{buildroot}%{_unitdir}/bluetooth-frwk.service.tv # common install -m 0644 packaging/bluetooth-frwk-common.service %{buildroot}%{_unitdir}/bluetooth-frwk.service.common # bt-core install -m 0644 bt-core/bluetooth-frwk-core.service %{buildroot}%{_unitdir}/bluetooth-frwk-core.service ln -s ../bluetooth-frwk.service %{buildroot}%{_unitdir}/multi-user.target.wants/bluetooth-frwk.service ln -s ../bluetooth-frwk.service %{buildroot}%{_unitdir}/starter.target.wants/bluetooth-frwk.service %postun -p /sbin/ldconfig %post service /usr/bin/chsmack -a '_' %{_varlibdir}/bluetooth/auto-pair-blacklist /usr/bin/chown network_fw:network_fw %{_varlibdir}/bluetooth/auto-pair-blacklist %files %manifest %{name}.manifest %license LICENSE %defattr(-, root, root) %{_libdir}/libbluetooth-api.so.* %exclude %{_libdir}/libbluetooth-api.so*.emulator %files devel %defattr(-, root, root) %{_includedir}/bt-service/bluetooth-api.h %{_includedir}/bt-service/bluetooth-hid-api.h %{_includedir}/bt-service/bluetooth-audio-api.h %{_includedir}/bt-service/bluetooth-telephony-api.h %{_includedir}/bt-service/bluetooth-media-control.h %{_includedir}/bt-service/bluetooth-scmst-api.h %{_includedir}/bt-service/bluetooth-ipsp-api.h %{_includedir}/bt-service/bluetooth-gatt-server-api.h %{_includedir}/bt-service/bluetooth-gatt-client-api.h %{_libdir}/pkgconfig/bluetooth-api.pc %{_libdir}/libbluetooth-api.so # extension-emulator %ifarch %{ix86} x86_64 %post extension-emulator pushd %{_libdir} for FILE in libbluetooth-api.so*.emulator; do mv "${FILE}" "${FILE%.emulator}"; done popd %preun extension-emulator pushd %{_libdir} for FILE in libbluetooth-api.so*; do mv "${FILE}" "${FILE}.emulator"; done popd %files extension-emulator %manifest %{name}.manifest %defattr(-, root, root) %{_libdir}/libbluetooth-api.so.*.emulator %{_libdir}/libbluetooth-api.so.emulator %endif %files service %manifest %{name}.manifest %license LICENSE %defattr(-, root, root) %{_bindir}/bt-service %{_sysconfdir}/dbus-1/system.d/bluetooth-frwk-service.conf %{_bindir}/bluetooth-frwk-test %{_varlibdir}/bluetooth %{_prefix}/etc/bluetooth %attr(-,network_fw,network_fw) %{_varlibdir}/bluetooth/auto-pair-blacklist %if %{bt_http_proxy} == ENABLED %files httpproxy %manifest %{name}.manifest %license LICENSE %defattr(-, root, root) %{_bindir}/bt-httpproxy %{_datadir}/dbus-1/system-services/org.projectx.httpproxy.service %{_sysconfdir}/dbus-1/system.d/bluetooth-frwk-httpproxy.conf %endif %files otp %manifest %{name}.manifest %license LICENSE %defattr(-, root, root) %{_bindir}/bt-otp %{_datadir}/dbus-1/system-services/org.projectx.otp.service %{_sysconfdir}/dbus-1/system.d/bluetooth-frwk-otp.conf %files core %manifest %{name}.manifest %license LICENSE %defattr(-, root, root) %{_unitdir}/bluetooth-frwk-core.service %{_datadir}/dbus-1/system-services/org.projectx.bt_core.service %{_bindir}/bt-core %{_sysconfdir}/dbus-1/system.d/bluetooth-frwk-core.conf %{_prefix}/lib/udev/rules.d/99-bluetooth-rfkill.rules %files test %manifest %{name}.manifest %license LICENSE %defattr(-, root, root) %{_bindir}/bluetooth-frwk-test #%{_bindir}/bluetooth-gatt-test #%{_bindir}/bluetooth-advertising-test %files plugin-headed %manifest %{name}.manifest %license LICENSE %defattr(-, root, root) %{_libdir}/bt-plugin-headed.so %post profile_common pushd %{_unitdir} mv bluetooth-frwk.service.common bluetooth-frwk.service popd %preun profile_common pushd %{_unitdir} mv bluetooth-frwk.service bluetooth-frwk.service.common popd %files profile_common %license LICENSE %{_unitdir}/multi-user.target.wants/bluetooth-frwk.service %exclude %{_unitdir}/starter.target.wants/bluetooth-frwk.service %{_unitdir}/bluetooth-frwk.service.common %{_datadir}/dbus-1/system-services/org.projectx.bt.service %post profile_mobile pushd %{_unitdir} mv bluetooth-frwk.service.mobile bluetooth-frwk.service popd %preun profile_mobile pushd %{_unitdir} mv bluetooth-frwk.service bluetooth-frwk.service.mobile popd %files profile_mobile %license LICENSE %{_unitdir}/multi-user.target.wants/bluetooth-frwk.service %{_unitdir}/bluetooth-frwk.service.mobile %{_datadir}/dbus-1/system-services/org.projectx.bt.service # extension-TM1 %ifarch %{ix86} || %{arm} %post extension-TM1 pushd %{_unitdir} mv bluetooth-frwk.service.tm1 bluetooth-frwk.service popd pushd %{_bindir} mv bt-core.tm1 bt-core popd %preun extension-TM1 pushd %{_unitdir} mv bluetooth-frwk.service bluetooth-frwk.service.tm1 popd pushd %{_bindir} mv bt-core bt-core.tm1 popd %files extension-TM1 %{_unitdir}/bluetooth-frwk.service.tm1 %license LICENSE %defattr(-, root, root) %{_bindir}/bt-core.tm1 %endif %post profile_wearable pushd %{_unitdir} mv bluetooth-frwk.service.wearable bluetooth-frwk.service popd %preun profile_wearable pushd %{_unitdir} mv bluetooth-frwk.service bluetooth-frwk.service.wearable popd %files profile_wearable %license LICENSE %{_unitdir}/multi-user.target.wants/bluetooth-frwk.service %{_unitdir}/bluetooth-frwk.service.wearable %{_datadir}/dbus-1/system-services/org.projectx.bt.service %post profile_tv pushd %{_unitdir} mv bluetooth-frwk.service.tv bluetooth-frwk.service popd %preun profile_tv pushd %{_unitdir} mv bluetooth-frwk.service bluetooth-frwk.service.tv popd %files profile_tv %license LICENSE %{_unitdir}/multi-user.target.wants/bluetooth-frwk.service %{_unitdir}/bluetooth-frwk.service.tv %{_datadir}/dbus-1/system-services/org.projectx.bt.service # Note: ivi reuses bluetooth-frwk.service.wearable %post profile_ivi pushd %{_unitdir} mv bluetooth-frwk.service.wearable bluetooth-frwk.service popd pushd %{_datadir}/dbus-1/system-services mv org.projectx.bt.service.ivi org.projectx.bt.service popd %preun profile_ivi pushd %{_unitdir} mv bluetooth-frwk.service bluetooth-frwk.service.wearable popd pushd %{_datadir}/dbus-1/system-services mv org.projectx.bt.service org.projectx.bt.service.ivi popd %files profile_ivi %license LICENSE %{_unitdir}/multi-user.target.wants/bluetooth-frwk.service %{_unitdir}/bluetooth-frwk.service.wearable %{_datadir}/dbus-1/system-services/org.projectx.bt.service.ivi %files oal %manifest %{name}.manifest %defattr(-, root, root) %{_libdir}/libbt-oal.so* %{_sysconfdir}/dbus-1/system.d/bluetooth-frwk-gap-agent.conf %if %{bt_bluez_hal} == ENABLED %{_libdir}/libbluetooth.default.so* %endif %files -n bluetooth-haltests %manifest %{name}.manifest %{_bindir}/bluetooth-haltests