+%define WIDGET_INSTALL_DIR /opt/usr/apps/.preinstallWidgets
+%define WIDGET_PATH %{WIDGET_INSTALL_DIR}/%{name}.wgt
+
Name: smartdevicelink
Summary: GENIVI SmartDeviceLink (SDL)
Version: 2.0
Release: 1
-Group: Network & Connectivity/Connection Management
+Group: Automotive/GENIVI
License: BSD-3-Clause
URL: http://projects.genivi.org/smartdevicelink/
Source: %{name}-%{version}.tar.gz
Source1: %{name}.xml
Source1001: %{name}.manifest
+Source2001: config.xml
+Source2002: manifest.json
BuildRequires: cmake
BuildRequires: pkgconfig(bluez)
BuildRequires: pkgconfig(gstreamer-1.0)
BuildRequires: pkgconfig(avahi-client)
BuildRequires: pkgconfig(libpulse-simple)
BuildRequires: doxygen
-BuildRequires: fdupes
+BuildRequires: zip
+Requires: crosswalk
Requires(post): /usr/bin/pkg_initdb
-# For MiniBrowser
-Requires: webkit2-efl-test
-
# Custom SDL-enabled HMIs should "Provide" this virtual package.
Requires: smartdevicelink-hmi
%install
# Don't run "make install". We only care about the core SDL related
# binaries, and HMI related files.
+mkdir -p %{buildroot}%{_sysconfdir}/%{name}
+install -m 0644 SDL_Core/src/appMain/log4cxx.properties %{buildroot}%{_sysconfdir}/%{name}
+
mkdir -p %{buildroot}%{_bindir} %{buildroot}%{_libdir}
-mkdir -p %{buildroot}%{_sysconfdir}/%{name} %{buildroot}%{_datadir}/%{name}
install -m 0755 SDL_Core/src/appMain/smartDeviceLinkCore %{buildroot}%{_bindir}
-
+install -m 0755 SDL_Core/src/components/audio_manager/libAudioManager.so %{buildroot}%{_libdir}
+install -m 0755 SDL_Core/src/components/utils/libUtils.so %{buildroot}%{_libdir}
+install -m 0755 SDL_Core/src/components/connection_handler/libconnectionHandler.so %{buildroot}%{_libdir}
+install -m 0755 SDL_Core/src/components/request_watchdog/libRequestWatchdog.so %{buildroot}%{_libdir}
+install -m 0755 SDL_Core/src/components/mobile_message_handler/libMobileMessageHandler.so %{buildroot}%{_libdir}
+install -m 0755 SDL_Core/src/components/smart_objects/libSmartObjects.so %{buildroot}%{_libdir}
+install -m 0755 SDL_Core/src/components/transport_manager/libTransportManager.so %{buildroot}%{_libdir}
+install -m 0755 SDL_Core/src/components/protocol_handler/libProtocolHandler.so %{buildroot}%{_libdir}
+install -m 0755 SDL_Core/src/components/hmi_message_handler/libHMIMessageHandler.so %{buildroot}%{_libdir}
+install -m 0755 SDL_Core/src/components/config_profile/libConfigProfile.so %{buildroot}%{_libdir}
+install -m 0755 SDL_Core/src/components/interfaces/libMOBILE_API.so %{buildroot}%{_libdir}
+install -m 0755 SDL_Core/src/components/interfaces/libHMI_API.so %{buildroot}%{_libdir}
+install -m 0755 SDL_Core/src/components/application_manager/libApplicationManager.so %{buildroot}%{_libdir}
+install -m 0755 SDL_Core/src/components/formatters/libformatters.so %{buildroot}%{_libdir}
install -m 0755 SDL_Core/src/thirdPartyLibs/encryption/libencryption.so %{buildroot}%{_libdir}
install -m 0755 SDL_Core/src/thirdPartyLibs/MessageBroker/libMessageBrokerClient.so %{buildroot}%{_libdir}
install -m 0755 SDL_Core/src/thirdPartyLibs/MessageBroker/libMessageBrokerServer.so %{buildroot}%{_libdir}
install -m 0755 SDL_Core/src/thirdPartyLibs/MessageBroker/libMessageBroker.so %{buildroot}%{_libdir}
install -m 0755 SDL_Core/src/thirdPartyLibs/jsoncpp/libjsoncpp.so %{buildroot}%{_libdir}
-install -m 0644 SDL_Core/src/appMain/log4cxx.properties %{buildroot}%{_sysconfdir}/%{name}
-install -m 0644 SDL_Core/src/appMain/audio.8bit.wav %{buildroot}%{_datadir}/%{name}
-cp -R SDL_Core/src/components/HMI %{buildroot}%{_datadir}/%{name}
-
-%fdupes -s %{buildroot}%{_datadir}/%{name}
+# Sample HMI
+# The SDL HMI will be launched with xwalk-launcher so package it as a
+# Crosswalk widget.
+mkdir -p %{buildroot}/%{WIDGET_INSTALL_DIR}
+cd %{dirname:%SOURCE2001} \
+ && zip %{buildroot}%{WIDGET_PATH} config.xml manifest.json \
+ && cd -
+cd SDL_Core/src/components/HMI \
+ && zip -r %{buildroot}%{WIDGET_PATH} . \
+ && cd -
# Create the 'hmi_link' file with the location of the sample HMI.
-echo %{_datadir}/%{name}/HMI/index.html > %{buildroot}%{_sysconfdir}/%{name}/hmi_link
+# Normally this would be the path to the top-level index.html file for
+# the SDL HMI, e.g. %%{_datadir}/%%{name}/HMI/index.html. However,
+# since we are using xwalk-laucher to launch the HMI we must instead
+# provide the SDL Crosswalk application ID, i.s. SmartDeviceLink,
+# instead.
+echo SDL0000001.SmartDeviceLink > %{buildroot}%{_sysconfdir}/%{name}/hmi_link
# Install Tizen package metadata for smartdevicelink
mkdir -p %{buildroot}%{_datadir}/packages/
mkdir -p %{buildroot}%{_datadir}/icons/default/small
install -m 0644 %{SOURCE1} %{buildroot}%{_datadir}/packages/%{name}.xml
-ln -sf %{_datadir}/%{name}/HMI/images/sdl/devices.png %{buildroot}%{_datadir}/icons/default/small/
+install -m 0644 SDL_Core/src/components/HMI/images/sdl/devices.png \
+ %{buildroot}%{_datadir}/icons/default/small/
%clean
%post sample-hmi
/usr/bin/pkg_initdb
+su app -c "xwalkctl -i /opt/usr/apps/.preinstallWidgets/%{name}.wgt"
%postun -p /sbin/ldconfig
+%postun sample-hmi
+/usr/bin/pkg_initdb
+su app -c "xwalkctl -u $(su app -c "xwalkctl list | grep SmartDeviceLink | cut -c 1-32")"
+
%files
%manifest %{name}.manifest
%license LICENSE
%{_bindir}/smartDeviceLinkCore
%{_libdir}/*.so*
%config %{_sysconfdir}/%{name}/log4cxx.properties
-%{_datadir}/%{name}/audio.8bit.wav
%files sample-hmi
%config %{_sysconfdir}/%{name}/hmi_link
-%{_datadir}/%{name}/HMI/*
%{_datadir}/packages/%{name}.xml
%{_datadir}/icons/default/small/*.png
+/opt/usr/apps/.preinstallWidgets/%{name}.wgt