From: José Bollo Date: Tue, 27 Feb 2018 18:15:28 +0000 (+0100) Subject: afm-user-session: Start target from user session X-Git-Tag: flounder_5.99.1~10 X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?p=src%2Fapp-framework-main.git;a=commitdiff_plain;h=b5c4862abfe8d72efa094ee498c50a7af8a2830b afm-user-session: Start target from user session Start the afm-user-session@%i.target from the user session after pam_sytemd session started. Change-Id: I5aeb8f01426b3cee2cbfad6ba30ecf37fe21abca Signed-off-by: José Bollo --- diff --git a/conf/system/afm-system-setup.service b/conf/system/afm-system-setup.service new file mode 100644 index 0000000..260975c --- /dev/null +++ b/conf/system/afm-system-setup.service @@ -0,0 +1,9 @@ +[Unit] +Description=Initiate afm-system-setup +Before=weston.service +[Service] +Type=one-shot +ExecStart=-/bin/sh -c "/bin/mkdir -m 755 -Z '*' /run/platform" +ExecStart=-/bin/sh -c "/bin/mkdir -m 755 -Z '*' /run/platform/display" +ExecStart=-/bin/sh -c "/bin/mkdir -m 755 -Z '*' /run/platform/apis" +ExecStart=-/bin/sh -c "/bin/mkdir -m 755 -Z '*' /run/platform/apis/ws" diff --git a/conf/system/afm-user-setup@.service b/conf/system/afm-user-setup@.service new file mode 100644 index 0000000..2cc4214 --- /dev/null +++ b/conf/system/afm-user-setup@.service @@ -0,0 +1,8 @@ +[Unit] +Description=Initiate afm-user-setup %i +After=user@%i.service +[Service] +Type=one-shot +ExecStart=-/bin/sh -c "/bin/mkdir -Z '*' /run/user/%i && /bin/chown %i:%i /run/user/%i" +ExecStart=-/bin/sh -c "/bin/mkdir -Z '*' /run/user/%i/apis && /bin/chown %i:%i /run/user/%i/apis" +ExecStart=-/bin/sh -c "/bin/mkdir -Z '*' /run/user/%i/apis/ws && /bin/chown %i:%i /run/user/%i/apis/ws" diff --git a/conf/user/afm-user-session.service b/conf/user/afm-user-session.service new file mode 100644 index 0000000..6896ecd --- /dev/null +++ b/conf/user/afm-user-session.service @@ -0,0 +1,10 @@ +[Unit] +Description=Application Framework Master, User session setup + +[Service] +Type=notify +ExecStart=/usr/bin/afm-user-session + +[Install] +WantedBy=default.target + diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 6a1b497..6aff23e 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -177,7 +177,7 @@ if(libsystemd_FOUND AND AFB_FOUND) install(TARGETS afm-binding LIBRARY DESTINATION ${CMAKE_INSTALL_LIBEXECDIR}/afm) add_executable(afm-user-session afm-user-session.c) - install(TARGETS afm-user-session DESTINATION ${CMAKE_INSTALL_BINDIR}) + install(TARGETS afm-user-session DESTINATION ${CMAKE_INSTALL_BINDIR} PERMISSIONS SETUID OWNER_EXECUTE GROUP_EXECUTE WORLD_EXECUTE) else() MESSAGE(STATUS "Not creating daemons") endif() diff --git a/src/afm-user-session.c b/src/afm-user-session.c index 51acafe..445db91 100644 --- a/src/afm-user-session.c +++ b/src/afm-user-session.c @@ -16,23 +16,20 @@ limitations under the License. */ -#include +#include +#include #include +extern char **environ; + int main() { - sigset_t ass, bss; - - sigemptyset(&ass); - sigaddset(&ass, SIGTERM); - - sigfillset(&bss); - sigdelset(&bss, SIGTERM); + char buffer[100]; + char *args[] = { "/bin/systemctl", "--wait", "start", buffer, 0 }; + sprintf(buffer, "afm-user-session@%d.target", (int)getuid()); sd_notify(0, "READY=1"); - sigprocmask(SIG_SETMASK, &bss, 0); - sigwaitinfo(&ass, 0); - - return 0; + execve(args[0], args, environ); + return 1; }