Modify the package name for bluetooth-haltests
[platform/core/connectivity/bluetooth-frwk.git] / packaging / bluetooth-frwk.spec
index 4959ee9..4503076 100644 (file)
@@ -1,47 +1,48 @@
-%bcond_with bluetooth_frwk_libnotify
-%bcond_with bluetooth_frwk_libnotification
+# 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
-Version:    0.2.55
-Release:    2
+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
-Source1002: bt-icon.png
-URL:        https://review.tizen.org/git/?p=platform/core/connectivity/bluetooth-frwk.git;a=summary
-Requires: dbus
+
 Requires: bluetooth-tools
+
+%define bt_bluez_hal ENABLED
+
 BuildRequires:  pkgconfig(aul)
-BuildRequires:  pkgconfig(dbus-glib-1)
 BuildRequires:  pkgconfig(dlog)
 BuildRequires:  pkgconfig(glib-2.0)
-%if %{with bluetooth_frwk_libnotify}
-BuildRequires:  pkgconfig(libnotify)
-BuildRequires:  pkgconfig(gdk-pixbuf-2.0)
-BuildRequires:  pkgconfig(gtk+-3.0)
-%elif %{without bluetooth_frwk_libnotification}
+BuildRequires:  pkgconfig(gio-2.0)
+BuildRequires:  pkgconfig(gio-unix-2.0)
 BuildRequires:  pkgconfig(syspopup-caller)
-Requires:       syspopup
-%endif
 BuildRequires:  pkgconfig(vconf)
 BuildRequires:  pkgconfig(libxml-2.0)
-BuildRequires:  pkgconfig(dbus-1)
-%if %{with x}
-BuildRequires:  pkgconfig(utilX)
-%endif
-BuildRequires:  pkgconfig(capi-network-tethering)
-BuildRequires:  pkgconfig(libprivilege-control)
-BuildRequires:  pkgconfig(status)
+BuildRequires:  pkgconfig(capi-network-connection)
 BuildRequires:  pkgconfig(alarm-service)
-BuildRequires:  pkgconfig(notification)
-BuildRequires:  pkgconfig(security-server)
+BuildRequires:  pkgconfig(capi-content-mime-type)
+BuildRequires:  pkgconfig(eventsystem)
+BuildRequires: pkgconfig(libsoup-2.4)
+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)
 
-Requires(post): vconf
+Requires(post): /usr/bin/vconftool
 Requires(post): /sbin/ldconfig
 Requires(postun): /sbin/ldconfig
 
@@ -49,6 +50,72 @@ Requires(postun): /sbin/ldconfig
 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
@@ -67,6 +134,22 @@ Requires:   %{name} = %{version}-%{release}
 %description service
 This package is Bluetooth Service daemon to manage BT services.
 
+%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
+
+%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
@@ -75,99 +158,445 @@ 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"
+
+%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+="   -Wall -g -fvisibility=hidden -fPIC"
-export LDFLAGS+=" -Wl,--rpath=%{_libdir} -Wl,--as-needed -Wl,--unresolved-symbols=ignore-in-shared-libs"
+#export CFLAGS="$CFLAGS -Wall -g -fvisibility=hidden -fPIC"
+export CFLAGS="$CFLAGS -fpie"
+export CFLAGS+=" -DARCH64"
+export CXXFLAGS+=" -DARCH64"
+export FFLAGS+=" -DARCH64"
 %else
-export CFLAGS+=" -fpie"
-export LDFLAGS+=" -Wl,--rpath=%{_libdir} -Wl,--as-needed -Wl,--unresolved-symbols=ignore-in-shared-libs -pie"
+export CFLAGS="$CFLAGS -fpie"
+export LDFLAGS="$CFLAGS -pie"
 %endif
 
-%cmake . \
--DTZ_SYS_USER_GROUP=%TZ_SYS_USER_GROUP \
--DTZ_SYS_DEFAULT_USER=%TZ_SYS_DEFAULT_USER \
-%if %{with bluetooth_frwk_libnotify}
- -DLIBNOTIFY_SUPPORT=On \
+%if %{bt_bluez_hal} == ENABLED
+export CFLAGS="$CFLAGS -DTIZEN_FEATURE_BT_RFCOMM_DIRECT -DTIZEN_BT_HAL"
 %else
- -DLIBNOTIFY_SUPPORT=Off \
+export CFLAGS="$CFLAGS -DTIZEN_FEATURE_BT_RFCOMM_DIRECT"
 %endif
-%if %{with bluetooth_frwk_libnotification}
- -DLIBNOTIFICATION_SUPPORT=On
+export LDFLAGS="$CFLAGS -Wl,--rpath=%{_libdir} -Wl,--as-needed -Wl,--unresolved-symbols=ignore-in-shared-libs"
+
+%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
- -DLIBNOTIFICATION_SUPPORT=Off
+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
 
+%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
+
+%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
+
+%cmake
+
 %install
 rm -rf %{buildroot}
 %make_install
 
-mkdir -p %{buildroot}%{_unitdir_user}
-mkdir -p %{buildroot}%{_unitdir_user}/tizen-middleware.target.wants
-install -m 0644 bt-service/bluetooth-frwk-service.service %{buildroot}%{_unitdir_user}
-ln -s ../bluetooth-frwk-service.service %{buildroot}%{_unitdir_user}/tizen-middleware.target.wants/bluetooth-frwk-service.service
+mkdir -p %{buildroot}%{_unitdir}/starter.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
 
-%if %{with bluetooth_frwk_libnotify} || %{with bluetooth_frwk_libnotification}
-mkdir -p %{buildroot}%{_datadir}/icons/default
-install -m 0644 %{SOURCE1002} %{buildroot}%{_datadir}/icons/default/bt-icon.png
+# 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
 
-# On IVI bt-service needs to be run as 'app' even if there is a 'guest' user.
-%if "%{profile}"=="ivi"
-sed -i 's/%TZ_SYS_DEFAULT_USER/app/' %{buildroot}%{_datadir}/dbus-1/system-services/org.projectx.bt.service
+# 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
 
-%post
-/sbin/ldconfig
-vconftool set -tf int db/bluetooth/status "0" -g 6520
-vconftool set -tf int file/private/bt-service/flight_mode_deactivated "0" -g 6520 -i
-vconftool set -tf string memory/bluetooth/sco_headset_name "" -g 6520 -i
-vconftool set -tf int memory/bluetooth/device "0" -g 6520 -i
-vconftool set -tf int memory/bluetooth/btsco "0" -g 6520 -i
+# 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
+
+%post core
+mkdir -p %{_sysconfdir}/systemd/default-extra-dependencies/ignore-units.d
+ln -sf %{_libdir}/systemd/system/bluetooth-frwk-core.service %{_libdir}/systemd/system/multi-user.target.wants/bluetooth-frwk-core.service
+ln -sf %{_libdir}/systemd/system/bluetooth-frwk-core.service %{_sysconfdir}/systemd/default-extra-dependencies/ignore-units.d/
+
 
 %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
-%manifest %{name}.manifest
 %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
 
-%files service
+# 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)
-%{_datadir}/dbus-1/system-services/org.projectx.bt.service
+%{_libdir}/libbluetooth-api.so.*.emulator
+%{_libdir}/libbluetooth-api.so.emulator
+%endif
 
+%files service
+%manifest %{name}.manifest
+%license LICENSE
+%defattr(-, root, root)
 %{_bindir}/bt-service
-%{_unitdir_user}/tizen-middleware.target.wants/bluetooth-frwk-service.service
-%{_unitdir_user}/bluetooth-frwk-service.service
-%attr(0666,-,-) /opt/var/lib/bluetooth/auto-pair-blacklist
 %{_sysconfdir}/dbus-1/system.d/bluetooth-frwk-service.conf
-%if %{with bluetooth_frwk_libnotify} || %{with bluetooth_frwk_libnotification}
-%{_datadir}/icons/default/bt-icon.png
-%endif
+%{_bindir}/bluetooth-frwk-test
+%{_varlibdir}/bluetooth
+%{_prefix}/etc/bluetooth
+%attr(-,network_fw,network_fw) %{_varlibdir}/bluetooth/auto-pair-blacklist
+
+%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
+
+
+%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