Launch SDL HMIs via xwalk-launcher.
[profile/ivi/smartdevicelink.git] / packaging / smartdevicelink.spec
index 64d7315..6f673b7 100644 (file)
@@ -1,22 +1,30 @@
+%define WIDGET_INSTALL_DIR /opt/usr/apps/.preinstallWidgets
+%define WIDGET_PATH %{WIDGET_INSTALL_DIR}/%{name}.wgt
+
 Name:          smartdevicelink
 Summary:       GENIVI SmartDeviceLink (SDL)
-Version:       0.1
+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(glib-2.0)
+BuildRequires: pkgconfig(liblog4cxx)
+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
 
@@ -58,41 +66,56 @@ make %{?_smp_mflags}
 %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/TransportManager/libTransportManager.so %{buildroot}%{_libdir}
-install -m 0755 SDL_Core/src/components/AppMgr/libAppMgr.so %{buildroot}%{_libdir}
-install -m 0755 SDL_Core/src/components/ConnectionHandler/libconnectionHandler.so %{buildroot}%{_libdir}
-install -m 0755 SDL_Core/src/components/JSONHandler/libJSONHandler.so %{buildroot}%{_libdir}
-install -m 0755 SDL_Core/src/components/ProtocolHandler/libProtocolHandler.so %{buildroot}%{_libdir}
-install -m 0755 SDL_Core/src/components/Utils/libUtils.so %{buildroot}%{_libdir}
+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/logger/log4cplus-1.1.0/src/liblog4cplus.so.1.1.0 %{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/log4cplus.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}
-
-pushd %{buildroot}%{_libdir}
-ln -s liblog4cplus.so.1.1.0 liblog4cplus.so.0
-popd
-
-%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
 
@@ -100,19 +123,23 @@ ln -sf %{_datadir}/%{name}/HMI/images/sdl/devices.png %{buildroot}%{_datadir}/ic
 
 %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}/log4cplus.properties
-%{_datadir}/%{name}/audio.8bit.wav
+%config %{_sysconfdir}/%{name}/log4cxx.properties
 
 %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