Remove some package dependencies for the headless image
[platform/core/connectivity/bluetooth-frwk.git] / packaging / bluetooth-frwk.spec
index cc6563e..00b16d0 100644 (file)
+# 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.2.148
+Version:    0.2.158
 Release:    1
 Group:      Network & Connectivity/Bluetooth
 License:    Apache-2.0
 Source0:    %{name}-%{version}.tar.gz
 Source1001: bluetooth-frwk.manifest
-%if %{with bluetooth_frwk_libnotify} || %{with bluetooth_frwk_libnotification}
-Source1002: bt-icon.png
-%endif
 
-Requires: sys-assert
-Requires: dbus
-Requires: syspopup
 %if "%{?profile}" != "mobile"
 Requires: bluetooth-tools
 %endif
 BuildRequires:  pkgconfig(aul)
-BuildRequires:  pkgconfig(dbus-glib-1)
 BuildRequires:  pkgconfig(dlog)
 BuildRequires:  pkgconfig(glib-2.0)
 BuildRequires:  pkgconfig(gio-2.0)
 BuildRequires:  pkgconfig(gio-unix-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(syspopup-caller)
-Requires:       syspopup
-%else
 BuildRequires:  pkgconfig(syspopup-caller)
-%endif
 BuildRequires:  pkgconfig(vconf)
 BuildRequires:  pkgconfig(libxml-2.0)
-BuildRequires:  pkgconfig(dbus-1)
-%if %{with x}
-BuildRequires:  pkgconfig(utilX)
-%endif
 BuildRequires:  pkgconfig(capi-network-connection)
 BuildRequires:  pkgconfig(alarm-service)
 BuildRequires:  pkgconfig(capi-content-mime-type)
-BuildRequires:  pkgconfig(appcore-efl)
 BuildRequires:  pkgconfig(pkgmgr)
 #BuildRequires:  pkgconfig(journal)
-#BuildRequires:  pkgconfig(eventsystem)
-%if "%{?profile}" == "mobile"
+BuildRequires:  pkgconfig(eventsystem)
+BuildRequires: pkgconfig(libsoup-2.4)
 BuildRequires:  pkgconfig(capi-network-tethering)
-%endif
 BuildRequires:  cmake
-BuildRequires:  pkgconfig(libprivilege-control)
 BuildRequires:  pkgconfig(cynara-client)
 BuildRequires:  pkgconfig(cynara-creds-gdbus)
+BuildRequires:  pkgconfig(libtzplatform-config)
+BuildRequires:  pkgconfig(storage)
+BuildRequires:  pkgconfig(capi-system-info)
 
 Requires(post): /usr/bin/vconftool
 Requires(post): /sbin/ldconfig
 Requires(postun): /sbin/ldconfig
-Requires: psmisc
 
 %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
@@ -84,6 +133,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:      TO_BE/FILLED
+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
@@ -100,6 +165,14 @@ Requires:   %{name} = %{version}-%{release}
 %description test
 This package is Bluetooth test application.
 
+%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
+
 %prep
 %setup -q
 cp %{SOURCE1001} .
@@ -110,114 +183,144 @@ export CFLAGS="$CFLAGS -DTIZEN_DEBUG_ENABLE"
 export CXXFLAGS="$CXXFLAGS -DTIZEN_DEBUG_ENABLE"
 export FFLAGS="$FFLAGS -DTIZEN_DEBUG_ENABLE"
 
-%if "%{?profile}" == "mobile"
-echo mobile
-export CFLAGS="$CFLAGS -DTIZEN_NETWORK_TETHERING_ENABLE -DTIZEN_BT_FLIGHTMODE_ENABLED -D__TIZEN_MOBILE__ -DTIZEN_TELEPHONY_ENABLED"
-%endif
-
-%if "%{?profile}" == "wearable"
-echo wearable
-export CFLAGS="$CFLAGS -DTIZEN_WEARABLE"
+%ifarch x86_64
+export CFLAGS="$CFLAGS -Wall -g -fvisibility=hidden -fPIC"
+export CFLAGS+=" -DARCH64"
+export CXXFLAGS+=" -DARCH64"
+export FFLAGS+=" -DARCH64"
+%else
+export CFLAGS="$CFLAGS -fpie"
+export LDFLAGS="$CFLAGS -pie"
 %endif
 
-%if "%{?profile}" == "tv"
-echo tv
-export CFLAGS="$CFLAGS -DUSB_BLUETOOTH -DTIZEN_TV"
+%ifarch %{ix86} x86_64
+export CFLAGS+=" -DTIZEN_TEST_EMUL"
+export CXXFLAGS+=" -DTIZEN_TEST_EMUL"
+export FFLAGS+=" -DTIZEN_TEST_EMUL"
 %endif
 
-%ifarch x86_64
-export CFLAGS="$CFLAGS -Wall -g -fvisibility=hidden -fPIC"
+export CFLAGS="$CFLAGS -DTIZEN_FEATURE_BT_RFCOMM_DIRECT"
 export LDFLAGS="$CFLAGS -Wl,--rpath=%{_libdir} -Wl,--as-needed -Wl,--unresolved-symbols=ignore-in-shared-libs"
-%else
-export CFLAGS="$CFLAGS -fpie -DRFCOMM_DIRECT "
-export LDFLAGS="$CFLAGS -Wl,--rpath=%{_libdir} -Wl,--as-needed -Wl,--unresolved-symbols=ignore-in-shared-libs -pie"
+
+%ifarch aarch64
+echo arch64
+export CFLAGS+=" -DARCH64"
+export CXXFLAGS+=" -DARCH64"
+export FFLAGS+=" -DARCH64"
 %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 \
-%if %{with bluetooth_frwk_libnotify}
-       -DLIBNOTIFY_SUPPORT=On \
-%else
        -DLIBNOTIFY_SUPPORT=Off \
-%endif
-%if %{with bluetooth_frwk_libnotification}
-       -DLIBNOTIFICATION_SUPPORT=On
-%else
        -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_BASE} -DTIZEN_TEST_EMUL -DTIZEN_FEATURE_BT_RFCOMM_DIRECT"
+export CXXFLAGS="${CXXFLAGS_BASE} -DTIZEN_TEST_EMUL -DTIZEN_FEATURE_BT_RFCOMM_DIRECT"
+export FFLAGS="${FFLAGS_BASE} -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 \
-%if "%{?profile}" == "wearable"
-       -DTIZEN_WEARABLE=YES \
-%else
-       -DTIZEN_WEARABLE=NO \
-%endif
-%if "%{?profile}" == "common"
-        -DTIZEN_WEARABLE=NO \
+%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"
+
+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
 
-install -D -m 0644 LICENSE %{buildroot}%{_datadir}/license/bluetooth-frwk
-install -D -m 0644 LICENSE %{buildroot}%{_datadir}/license/bluetooth-frwk-service
-install -D -m 0644 LICENSE %{buildroot}%{_datadir}/license/bluetooth-frwk-devel
+mkdir -p %{buildroot}%{_unitdir}/starter.target.wants
+mkdir -p %{buildroot}%{_unitdir}/multi-user.target.wants
 
-mkdir -p %{buildroot}%{_libdir}/systemd/user
-install -m 0644 bt-service/bluetooth-frwk-service.service %{buildroot}%{_libdir}/systemd/user
-
-%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
-%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
+# 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
 
-%post
-/sbin/ldconfig
-%if "%{?profile}" == "wearable"
-vconftool set -f -t int db/bluetooth/status "1" -g 6520
-%endif
-%if "%{?profile}" == "mobile"
-vconftool set -f -t int db/bluetooth/status "0" -g 6520
-%endif
-%if "%{?profile}" == "common"
-vconftool set -f -t int db/bluetooth/status "0" -g 6520
+# 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
 
-vconftool set -f -t int db/bluetooth/status "0" -s User
-vconftool set -f -t int db/bluetooth/lestatus "0" -s User
-vconftool set -f -t int file/private/bt-core/flight_mode_deactivated "0" -s User
-vconftool set -f -t int file/private/bt-core/powersaving_mode_deactivated "0" -s User
-vconftool set -f -t int file/private/bt-service/bt_off_due_to_timeout "0" -s User
-vconftool set -f -t string memory/bluetooth/sco_headset_name "" -g 6520 -i
-vconftool set -f -t int memory/bluetooth/device "0" -g 6520 -i
-vconftool set -f -t bool memory/bluetooth/btsco "0" -g 6520 -i
-vconftool set -f -t bool memory/bluetooth/dutmode "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
 
-#%post service
-#mkdir -p %{_sysconfdir}/systemd/default-extra-dependencies/ignore-units.d/
-#ln -sf %{_libdir}/systemd/user/bluetooth-frwk.service %{_sysconfdir}/systemd/default-extra-dependencies/ignore-units.d/
+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
 
 %files
 %manifest %{name}.manifest
+%license LICENSE
 %defattr(-, root, root)
 %{_libdir}/libbluetooth-api.so.*
-%{_datadir}/license/bluetooth-frwk
-#%{_libdir}/systemd/system/%{_servicedir}/bluetooth-frwk.service
-#%{_libdir}/systemd/system/bluetooth-frwk.service
+%exclude %{_libdir}/libbluetooth-api.so*.emulator
 
 %files devel
 %defattr(-, root, root)
@@ -227,33 +330,57 @@ vconftool set -f -t bool memory/bluetooth/dutmode "0" -g 6520 -i
 %{_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
 %{_libdir}/pkgconfig/bluetooth-api.pc
 %{_libdir}/libbluetooth-api.so
-%{_datadir}/license/bluetooth-frwk-devel
 
-%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
-%{_libdir}/systemd/user/bluetooth-frwk-service.service
 %{_sysconfdir}/dbus-1/system.d/bluetooth-frwk-service.conf
 %{_bindir}/bluetooth-frwk-test
-#%{_bindir}/bluetooth-gatt-test
-#%{_bindir}/bluetooth-advertising-test
 %{_varlibdir}/bluetooth
 %{_prefix}/etc/bluetooth
-#%attr(0666,-,-) %{_varlibdir}/bluetooth/auto-pair-blacklist
-#%attr(0666,-,-) %{_prefix}/etc/bluetooth/stack_info
-#%{_dumpdir}/bluetooth_log_dump.sh
-%{_datadir}/license/bluetooth-frwk-service
-%if %{with bluetooth_frwk_libnotify} || %{with bluetooth_frwk_libnotification}
-%{_datadir}/icons/default/bt-icon.png
-%endif
+
+%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)
 %{_datadir}/dbus-1/system-services/org.projectx.bt_core.service
 %{_bindir}/bt-core
@@ -261,7 +388,118 @@ vconftool set -f -t bool memory/bluetooth/dutmode "0" -g 6520 -i
 
 %files test
 %manifest %{name}.manifest
+%license LICENSE
 %defattr(-, root, root)
 %{_bindir}/bluetooth-frwk-test
-%{_bindir}/bluetooth-gatt-test
-%{_bindir}/bluetooth-advertising-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}/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
+
+### added /usr/etc/bluetooth/wearable/stack_info (others: /usr/etc/bluetooth/stack_info))
+# (for PROFILE WEARABLE)
+