In order for the systemd notification to succeed, sd_notify() needs the value of the NOTIFY_SOCKET environment variable, but the environment was cleared before entering the launcher's main loop.
Work around this by only clearing the environment of the child process. --- src/weston-launch.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/weston-launch.c b/src/weston-launch.c index f93fe01..5de6d33 100644 --- a/src/weston-launch.c +++ b/src/weston-launch.c @@ -608,14 +608,6 @@ main(int argc, char *argv[]) child_argv[5 + i] = argv[optind + i]; child_argv[5 + i] = NULL; - term = getenv("TERM"); - clearenv(); - setenv("TERM", term, 1); - setenv("USER", wl.pw->pw_name, 1); - setenv("LOGNAME", wl.pw->pw_name, 1); - setenv("HOME", wl.pw->pw_dir, 1); - setenv("SHELL", wl.pw->pw_shell, 1); - if (!weston_launch_allowed(&wl)) error(1, 0, "Permission denied. You should either:\n" #ifdef HAVE_SYSTEMD_LOGIN @@ -646,6 +638,14 @@ main(int argc, char *argv[]) error(1, errno, "fork failed"); break; case 0: + term = getenv("TERM"); + clearenv(); + setenv("TERM", term, 1); + setenv("USER", wl.pw->pw_name, 1); + setenv("LOGNAME", wl.pw->pw_name, 1); + setenv("HOME", wl.pw->pw_dir, 1); + setenv("SHELL", wl.pw->pw_shell, 1); + if (wl.verbose) printf("weston-launch: spawned weston with pid: %d\n", getpid()); if (wl.tty != STDIN_FILENO) { -- 1.7.10.4 _______________________________________________ wayland-devel mailing list wayland-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/wayland-devel