Add build Option for multi-user support 42/6042/2
authorBaptiste DURAND <baptiste.durand@eurogiciel.fr>
Thu, 25 Jul 2013 09:44:36 +0000 (11:44 +0200)
committerRusty Lynch <rusty.lynch@intel.com>
Thu, 1 Aug 2013 17:01:31 +0000 (10:01 -0700)
Change-Id: I87e7bb02948c1b59f5ce9a2bea7c8870fd6b5380
Signed-off-by: Baptiste DURAND <baptiste.durand@eurogiciel.fr>
CMakeLists.txt
packaging/wrt.spec
packaging/wrt_launchpad_daemon_user.service [new file with mode: 0644]
src/wrt-launcher/wrt-launcher.cpp
src/wrt-launchpad-daemon/include/config.h

index 640d527..48a67fe 100644 (file)
@@ -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)
index 36117a8..756f857 100644 (file)
@@ -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 (file)
index 0000000..f87c788
--- /dev/null
@@ -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
index b97a30b..a3f5efe 100644 (file)
@@ -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) {
index dd2b4c5..a23c039 100644 (file)
 #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_