From 476ff4b5fde794e5ccd8809b95d5978f8e78d2f1 Mon Sep 17 00:00:00 2001 From: Baptiste DURAND Date: Thu, 25 Jul 2013 11:44:36 +0200 Subject: [PATCH] Add build Option for multi-user support Change-Id: I87e7bb02948c1b59f5ce9a2bea7c8870fd6b5380 Signed-off-by: Baptiste DURAND --- CMakeLists.txt | 8 ++++++ packaging/wrt.spec | 43 ++++++++++++++++++++++++++++- packaging/wrt_launchpad_daemon_user.service | 10 +++++++ src/wrt-launcher/wrt-launcher.cpp | 3 +- src/wrt-launchpad-daemon/include/config.h | 3 +- 5 files changed, 63 insertions(+), 4 deletions(-) create mode 100644 packaging/wrt_launchpad_daemon_user.service diff --git a/CMakeLists.txt b/CMakeLists.txt index 640d527..48a67fe 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -49,6 +49,14 @@ OPTION(CORS_WHITELISTING_SUPPORT "CORS white listing for access positions" OFF) OPTION(MULTIPROCESS_SERVICE_SUPPORT "Process per service" OFF) OPTION(MULTIPROCESS_SERVICE_SUPPORT_INLINE "Process per service - inline mode support" OFF) OPTION(DECRYPT_SUPPORT "Enable appmanager capabilities" ON) +OPTION(MULTI_USER_SUPPORT "Enable multi-user support" OFF) + +IF(MULTI_USER_SUPPORT) + ADD_DEFINITIONS("-DMULTI_USER_SUPPORT") +ELSE() + ADD_DEFINITIONS("-DDAC_ACTIVATE") +ENDIF(MULTI_USER_SUPPORT) + IF(DECRYPT_SUPPORT) ADD_DEFINITIONS("-DDECRYPT") ENDIF(DECRYPT_SUPPORT) diff --git a/packaging/wrt.spec b/packaging/wrt.spec index 36117a8..756f857 100644 --- a/packaging/wrt.spec +++ b/packaging/wrt.spec @@ -1,5 +1,7 @@ %bcond_with wayland %bcond_with decrypt +%bcond_with multi_user + Name: wrt Summary: Web runtime Version: 0.8.198.3 @@ -9,7 +11,10 @@ License: Apache-2.0 URL: N/A Source0: %{name}-%{version}.tar.gz ## wrt-launchpad-daemon ####################################################### +### systemd service for mono-user mode Source101: wrt_launchpad_daemon@.service +### systemd service for multi-user mode +Source102: wrt_launchpad_daemon_user.service Source1001: wrt.manifest ############################################################################### @@ -104,6 +109,11 @@ export LDFLAGS+="-Wl,--rpath=%{_libdir}" %else -DDECRYPT_SUPPORT=Off \ %endif +%if %{with multi_user} + -DMULTI_USER_SUPPORT=On \ +%else + -DMULTI_USER_SUPPORT=Off \ +%endif %{?WITH_TESTS:-DWITH_TESTS=%WITH_TESTS} @@ -124,16 +134,35 @@ ln -sf ../../init.d/wrt_launchpad_run.sh %{buildroot}/%{_sysconfdir}/rc.d/rc3.d/ ln -sf ../../init.d/wrt_launchpad_run.sh %{buildroot}/%{_sysconfdir}/rc.d/rc4.d/S80wrt_launchpad_run #systemd + +%if %{with multi_user} +mkdir -p %{buildroot}%{_unitdir_user}/tizen-middleware.target.wants/ +install -m 0644 %SOURCE102 %{buildroot}%{_unitdir_user}/wrt_launchpad_daemon.service +ln -s ../wrt_launchpad_daemon.service %{buildroot}%{_unitdir_user}/tizen-middleware.target.wants/wrt_launchpad_daemon.service +%else mkdir -p %{buildroot}%{_unitdir}/graphical.target.wants install -m 0644 %SOURCE101 %{buildroot}%{_unitdir}/wrt_launchpad_daemon@.service ln -s ../wrt_launchpad_daemon@.service %{buildroot}%{_unitdir}/graphical.target.wants/wrt_launchpad_daemon@app.service +%endif %preun if [ $1 == 0 ]; then - systemctl stop wrt_launchpad_daemon@app.service +%if %{with multi_user} + systemctl --user stop wrt_launchpad_daemon.service +%else + systemctl stop wrt_launchpad_daemon@app.service +%endif + fi + + + + ############################################################################### + + + %clean rm -rf %{buildroot} @@ -146,7 +175,13 @@ chmod +s /usr/bin/wrt-launcher /sbin/ldconfig systemctl daemon-reload if [ $1 == 1 ]; then +%if %{with multi_user} + systemctl --user restart wrt_launchpad_daemon.service +%else systemctl restart wrt_launchpad_daemon@app.service +%endif + + fi ############################################################################### @@ -187,8 +222,14 @@ systemctl daemon-reload /etc/smack/accesses2.d/wrt_launchpad_daemon.rule /opt/etc/smack/accesses.d/wrt_launchpad_daemon.rule #systemd +%if %{with multi_user} +%{_unitdir_user}/tizen-middleware.target.wants/wrt_launchpad_daemon.service +%{_unitdir_user}/wrt_launchpad_daemon.service +%else %{_unitdir}/graphical.target.wants/wrt_launchpad_daemon@app.service %{_unitdir}/wrt_launchpad_daemon@.service +%endif + ############################################################################### %files devel diff --git a/packaging/wrt_launchpad_daemon_user.service b/packaging/wrt_launchpad_daemon_user.service new file mode 100644 index 0000000..f87c788 --- /dev/null +++ b/packaging/wrt_launchpad_daemon_user.service @@ -0,0 +1,10 @@ +[Unit] +Description=Start the wrt_launchpad_daemon +After=ac.service + +[Service] +ExecStart=/usr/bin/wrt_launchpad_daemon " " +KillSignal=SIGKILL + +[Install] +WantedBy=tizen-middleware.target diff --git a/src/wrt-launcher/wrt-launcher.cpp b/src/wrt-launcher/wrt-launcher.cpp index b97a30b..a3f5efe 100644 --- a/src/wrt-launcher/wrt-launcher.cpp +++ b/src/wrt-launcher/wrt-launcher.cpp @@ -417,6 +417,7 @@ int main(int argc, char* argv[]) } if (strlen(applicationId) > 0) { +#ifndef MULTI_USER_SUPPORT // do setuid to '5000' uid to communicate //with webapp using RT signal. gid_t group_list[1]; @@ -431,7 +432,7 @@ int main(int argc, char* argv[]) printf("result: %s\n", "failed"); return -1; } - +#endif // set package ret = service_set_package(serviceHandle, applicationId); if (SERVICE_ERROR_NONE != ret) { diff --git a/src/wrt-launchpad-daemon/include/config.h b/src/wrt-launchpad-daemon/include/config.h index dd2b4c5..a23c039 100644 --- a/src/wrt-launchpad-daemon/include/config.h +++ b/src/wrt-launchpad-daemon/include/config.h @@ -18,11 +18,10 @@ #define __LAUNCHPAD_CONFIG_H_ #define LAUNCHPAD_LOG -#define DAC_ACTIVATE #define PRELOAD_ACTIVATE #define PREEXEC_ACTIVATE /*#define GL_ACTIVATE*/ /*#define HEAPDGB_ACTIVATE*/ /*#define PERF_ACTIVATE*/ -#endif // __LAUNCHPAD_CONFIG_H_ \ No newline at end of file +#endif // __LAUNCHPAD_CONFIG_H_ -- 2.7.4