aboutsummaryrefslogtreecommitdiffstats
path: root/meta-app-framework/recipes-config/agl-session
diff options
context:
space:
mode:
authorArnaud Ferraris <arnaud.ferraris@collabora.com>2021-12-07 18:31:37 +0100
committerJan-Simon Moeller <jsmoeller@linuxfoundation.org>2021-12-17 21:15:26 +0000
commita4df51435a0683cb54a2101fb9ac44717a663cca (patch)
tree59bf0448d1a6f568a62966016dcfd0813b7a77db /meta-app-framework/recipes-config/agl-session
parent0fef32c4a58a7e3f5c0ceb656a8662da26d4e267 (diff)
meta-app-framework: add new agl-session recipe
For the new App FW, we want to create a systemd user session, to be started on boot, which will be used to start the compositor and all user background services. This commit adds the corresponding target and service file (enabled by default) so the session is started on boot. Bug-AGL: SPEC-4161 Signed-off-by: Arnaud Ferraris <arnaud.ferraris@collabora.com> Change-Id: I51ca7e0c1a994c6798b20b2592bec56a07f41c98 Reviewed-on: https://gerrit.automotivelinux.org/gerrit/c/AGL/meta-agl/+/26974 ci-image-build: Jenkins Job builder account Tested-by: Jenkins Job builder account ci-image-boot-test: Jenkins Job builder account Reviewed-by: Jan-Simon Moeller <jsmoeller@linuxfoundation.org>
Diffstat (limited to 'meta-app-framework/recipes-config/agl-session')
-rw-r--r--meta-app-framework/recipes-config/agl-session/agl-session_0.1.bb35
-rw-r--r--meta-app-framework/recipes-config/agl-session/files/agl-session.target5
-rw-r--r--meta-app-framework/recipes-config/agl-session/files/agl-session@.service24
3 files changed, 64 insertions, 0 deletions
diff --git a/meta-app-framework/recipes-config/agl-session/agl-session_0.1.bb b/meta-app-framework/recipes-config/agl-session/agl-session_0.1.bb
new file mode 100644
index 000000000..abde287ac
--- /dev/null
+++ b/meta-app-framework/recipes-config/agl-session/agl-session_0.1.bb
@@ -0,0 +1,35 @@
+SUMMARY = "AGL user session"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"
+
+SRC_URI = "\
+ file://agl-session@.service \
+ file://agl-session.target \
+"
+
+inherit systemd allarch useradd
+
+USERADD_PACKAGES = "${PN}"
+USERADDEXTENSION = "useradd-staticids"
+GROUPADD_PARAM:${PN} = "\
+ -g 1001 agl-driver ; \
+"
+USERADD_PARAM:${PN} = "\
+ -g 1001 -u 1001 -o -d /home/agl-driver -m -K PASS_MAX_DAYS=-1 agl-driver ; \
+"
+
+SYSTEMD_PACKAGES = "${PN}"
+# Instantiate session for the 'agl-driver' user, so we don't have to hardcode
+# the user name/ID in the service file itself
+SYSTEMD_SERVICE:${PN} = "agl-session@agl-driver.service"
+SYSTEMD_AUTO_ENABLE:${PN} = "enable"
+
+do_install() {
+ install -d ${D}${systemd_system_unitdir}
+ install -m 0644 ${WORKDIR}/agl-session@.service ${D}${systemd_system_unitdir}
+
+ install -d ${D}${systemd_user_unitdir}
+ install -m 0644 ${WORKDIR}/agl-session.target ${D}${systemd_user_unitdir}
+}
+
+FILES:${PN} += "${systemd_system_unitdir} ${systemd_user_unitdir}"
diff --git a/meta-app-framework/recipes-config/agl-session/files/agl-session.target b/meta-app-framework/recipes-config/agl-session/files/agl-session.target
new file mode 100644
index 000000000..84d9daa5b
--- /dev/null
+++ b/meta-app-framework/recipes-config/agl-session/files/agl-session.target
@@ -0,0 +1,5 @@
+[Unit]
+Description=AGL user session
+
+BindsTo=graphical-session.target
+Before=graphical-session.target
diff --git a/meta-app-framework/recipes-config/agl-session/files/agl-session@.service b/meta-app-framework/recipes-config/agl-session/files/agl-session@.service
new file mode 100644
index 000000000..61afa4141
--- /dev/null
+++ b/meta-app-framework/recipes-config/agl-session/files/agl-session@.service
@@ -0,0 +1,24 @@
+[Unit]
+Description=AGL user session
+After=systemd-user-sessions.service
+Wants=dbus.socket
+After=dbus.socket
+After=session-c1.scope
+Before=multi-user.target
+
+[Service]
+Environment=XDG_SESSION_TYPE=wayland
+ExecStart=/bin/systemctl --wait --user start agl-session.target
+TimeoutStartSec=30
+# This is a template service, instantiate for desired user's name or uid
+User=%i
+PAMName=login
+WorkingDirectory=~
+StandardInput=tty-fail
+StandardOutput=journal
+StandardError=journal
+Restart=always
+RestartSec=3s
+
+[Install]
+WantedBy=multi-user.target