summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJosé Bollo <jose.bollo@iot.bzh>2019-09-05 16:38:20 +0200
committerJan-Simon Moeller <jsmoeller@linuxfoundation.org>2019-09-16 12:07:56 +0000
commita9b74e1c7c7f2d5ad03a7b7675bbef8d241dd47e (patch)
treef457fe13b8dfb98aa2aae5d5eec544946068e48e
parent57b6d0f437ef19fb6030d7d126aebea2ffeabb93 (diff)
weston-init: Refactor, simplify, fix
The recipe weston-init was setting smack labels of input devices to ^. This had the effect to enforce processes that wanted to read /dev/input/eventXX to have the Smack label System. I changed the label to * and keep the protection of groups. At the same time, a refactoring of the recipe make it cleaner to maintain. Bug-AGL: SPEC-2796 Change-Id: I3e2345d48a40b15254e68e25bbfcd9b22fcd8629 Signed-off-by: José Bollo <jose.bollo@iot.bzh>
-rw-r--r--meta-agl-profile-graphical/recipes-graphics/wayland/weston-init.bbappend119
-rw-r--r--meta-agl-profile-graphical/recipes-graphics/wayland/weston-init/tmpfiles.conf.in (renamed from meta-agl-profile-graphical/recipes-graphics/wayland/weston-init/weston_tmpfiles.conf)0
-rw-r--r--meta-agl-profile-graphical/recipes-graphics/wayland/weston-init/weston.conf.in (renamed from meta-agl-profile-graphical/recipes-graphics/wayland/weston-init/weston.service.add)6
-rw-r--r--meta-agl-profile-graphical/recipes-graphics/wayland/weston-init/zz-dri-imx.rules.in2
-rw-r--r--meta-agl-profile-graphical/recipes-graphics/wayland/weston-init/zz-dri.rules.in1
-rw-r--r--meta-agl-profile-graphical/recipes-graphics/wayland/weston-init/zz-input.rules1
-rw-r--r--meta-agl-profile-graphical/recipes-graphics/wayland/weston-init/zz-tty.rules.in1
7 files changed, 66 insertions, 64 deletions
diff --git a/meta-agl-profile-graphical/recipes-graphics/wayland/weston-init.bbappend b/meta-agl-profile-graphical/recipes-graphics/wayland/weston-init.bbappend
index 910cf5a67..398cd1c55 100644
--- a/meta-agl-profile-graphical/recipes-graphics/wayland/weston-init.bbappend
+++ b/meta-agl-profile-graphical/recipes-graphics/wayland/weston-init.bbappend
@@ -6,76 +6,67 @@ inherit agl-graphical
WESTONSTART ??= "/usr/bin/weston ${WESTONARGS}"
WESTONSTART_append = " ${@bb.utils.contains("IMAGE_FEATURES", "debug-tweaks", " --log=${DISPLAY_XDG_RUNTIME_DIR}/weston.log", "",d)}"
-SRC_URI += " \
- file://weston_tmpfiles.conf \
- file://weston.service.add \
+DROPIN_NAME = "weston-init"
+
+WIFILES = " \
+ file://weston.conf.in \
+ file://tmpfiles.conf.in \
+ file://zz-dri.rules.in \
+ file://zz-input.rules \
+ file://zz-tty.rules.in \
"
-do_install_append() {
- sed -i "/\[Unit\]/aConflicts=getty@tty${WESTONTTY}.service" \
- ${D}${systemd_system_unitdir}/weston.service
-
- sed -i "/\[Service\]/r ${S}/weston.service.add" \
- ${D}${systemd_system_unitdir}/weston.service
-
- if ! grep -q '^Group=' ${D}${systemd_system_unitdir}/weston.service; then
- sed -i "/\[Service\]/aGroup=root" ${D}${systemd_system_unitdir}/weston.service
- fi
- if ! grep -q '^User=' ${D}${systemd_system_unitdir}/weston.service; then
- sed -i "/\[Service\]/aUser=root" ${D}${systemd_system_unitdir}/weston.service
- fi
-
- sed -e 's,User=root,User=${WESTONUSER},g' \
- -e 's,Group=root,Group=${WESTONGROUP},g' \
- -e 's,ExecStart=.*,ExecStart=${WESTONSTART},g' \
- -e 's,@WESTONTTY@,${WESTONTTY},g' \
- -e 's,@XDG_RUNTIME_DIR@,${DISPLAY_XDG_RUNTIME_DIR},g' \
- -e '/PAMName=/d' \
- -i ${D}${systemd_system_unitdir}/weston.service
-
- # Add a rule to ensure the 'display' user has permissions to
- # open the graphics device
- install -d ${D}${sysconfdir}/init.d
- install -d ${D}${sysconfdir}/udev/rules.d
- cat >${D}${sysconfdir}/udev/rules.d/zz-dri.rules <<'EOF'
-SUBSYSTEM=="drm", MODE="0660", GROUP="${WESTONGROUP}", SECLABEL{smack}="*", TAG+="systemd", ENV{SYSTEMD_WANTS}="weston.service"
-EOF
-
- # user 'display' must own /dev/tty${WESTONTTY} for weston to start correctly
- cat >${D}${sysconfdir}/udev/rules.d/zz-tty.rules <<'EOF'
-SUBSYSTEM=="tty", KERNEL=="tty${WESTONTTY}", OWNER="${WESTONUSER}", SECLABEL{smack}="^", TAG+="systemd", ENV{SYSTEMD_WANTS}="weston.service"
-EOF
-
- # user 'display' must also be able to access /dev/input/*
- cat >${D}${sysconfdir}/udev/rules.d/zz-input.rules <<'EOF'
-SUBSYSTEM=="input", MODE="0660", GROUP="input", SECLABEL{smack}="^", TAG+="systemd", ENV{SYSTEMD_WANTS}="weston.service"
-EOF
-
- # user 'display' must also be able to access /dev/media*, etc.
- cat >${D}${sysconfdir}/udev/rules.d/zz-remote-display.rules <<'EOF'
-SUBSYSTEM=="media", MODE="0660", GROUP="display", SECLABEL{smack}="*", TAG+="systemd", ENV{SYSTEMD_WANTS}="weston.service"
-SUBSYSTEM=="video4linux", MODE="0660", GROUP="display", SECLABEL{smack}="*", TAG+="systemd", ENV{SYSTEMD_WANTS}="weston.service"
-KERNEL=="uvcs", SUBSYSTEM=="misc", MODE="0660", GROUP="display", SECLABEL{smack}="*"
-KERNEL=="rgnmm", SUBSYSTEM=="misc", MODE="0660", GROUP="display", SECLABEL{smack}="*"
-EOF
-
- install -d ${D}${sysconfdir}/tmpfiles.d
- install -Dm755 ${WORKDIR}/weston_tmpfiles.conf ${D}/${libdir}/tmpfiles.d/weston.conf
-
- sed -e 's,@WESTONUSER@,${WESTONUSER},g' \
- -e 's,@WESTONGROUP@,${WESTONGROUP},g' \
- -i ${D}/${libdir}/tmpfiles.d/weston.conf
-}
+WIFILES_append_imx = " \
+ file://zz-dri-imx.rules.in \
+"
-do_install_append_imx() {
+SRC_URI_append = " ${WIFILES}"
- install -d ${D}${sysconfdir}/udev/rules.d
- cat >>${D}${sysconfdir}/udev/rules.d/zz-dri.rules <<'EOF'
-SUBSYSTEM=="gpu_class", MODE="0660", GROUP="${WESTONGROUP}", SECLABEL{smack}="*"
-EOF
+do_install_append() {
+ # files
+ files=$(echo ${WIFILES} | sed s,file://,,g)
+
+ # process ".in" files
+ for f in ${files}; do
+ g=${f%.in}
+ if [ "${f}" != "${g}" ]; then
+ sed -e "s,@WESTONUSER@,${WESTONUSER},g" \
+ -e "s,@WESTONGROUP@,${WESTONGROUP},g" \
+ -e "s,@XDG_RUNTIME_DIR@,${DISPLAY_XDG_RUNTIME_DIR},g" \
+ -e "s,@WESTONTTY@,${WESTONTTY},g" \
+ -e "s,@WESTONSTART@,${WESTONSTART},g" \
+ ${WORKDIR}/${f} > ${WORKDIR}/${g}
+ fi
+ done
+
+ # removes any unexpected entry from weston.service
+ for x in Group User ExecStart PAMName; do
+ sed -i "/^ *$x *=/d" ${D}${systemd_system_unitdir}/weston.service
+ done
+
+ # install weston drop-in
+ install -d ${D}${systemd_system_unitdir}/weston.service.d
+ install -m644 ${WORKDIR}/weston.conf ${D}/${systemd_system_unitdir}/weston.service.d/${DROPIN_NAME}.conf
+
+ # install tmpfiles drop-in
+ install -d ${D}${libdir}/tmpfiles.d
+ install -m644 ${WORKDIR}/tmpfiles.conf ${D}${libdir}/tmpfiles.d/${DROPIN_NAME}.conf
+
+ # install udev rules
+ install -d ${D}${sysconfdir}/udev/rules.d
+ for f in ${files}; do
+ g=${f%.in}
+ h=${g%.rules}
+ if [ "${g}" != "${h}" ]; then
+ install -m644 ${WORKDIR}/${g} ${D}${sysconfdir}/udev/rules.d
+ fi
+ done
}
-FILES_${PN} += "${libdir}/tmpfiles.d/*.conf"
+FILES_${PN} += " \
+ ${libdir}/tmpfiles.d/*.conf \
+ ${systemd_system_unitdir}/weston.service.d/${DROPIN_NAME}.conf \
+"
diff --git a/meta-agl-profile-graphical/recipes-graphics/wayland/weston-init/weston_tmpfiles.conf b/meta-agl-profile-graphical/recipes-graphics/wayland/weston-init/tmpfiles.conf.in
index c4b302faf..c4b302faf 100644
--- a/meta-agl-profile-graphical/recipes-graphics/wayland/weston-init/weston_tmpfiles.conf
+++ b/meta-agl-profile-graphical/recipes-graphics/wayland/weston-init/tmpfiles.conf.in
diff --git a/meta-agl-profile-graphical/recipes-graphics/wayland/weston-init/weston.service.add b/meta-agl-profile-graphical/recipes-graphics/wayland/weston-init/weston.conf.in
index d24a8eb23..89c436695 100644
--- a/meta-agl-profile-graphical/recipes-graphics/wayland/weston-init/weston.service.add
+++ b/meta-agl-profile-graphical/recipes-graphics/wayland/weston-init/weston.conf.in
@@ -1,8 +1,14 @@
+[Unit]
+Conflicts=getty@tty@WESTONTTY@.service
+[Service]
Type=notify
+User=@WESTONUSER@
+Group=@WESTONGROUP@
Environment="XDG_RUNTIME_DIR=@XDG_RUNTIME_DIR@"
Environment="XDG_RUNTIMESHARE_DIR=@XDG_RUNTIME_DIR@/share"
ExecStartPre=/bin/mkdir -p @XDG_RUNTIME_DIR@/share
ExecStartPre=+/usr/bin/chsmack -a User::App-Shared -t @XDG_RUNTIME_DIR@/share
+ExecStart=@WESTONSTART@
TTYPath=/dev/tty@WESTONTTY@
StandardInput=tty
TTYReset=yes
diff --git a/meta-agl-profile-graphical/recipes-graphics/wayland/weston-init/zz-dri-imx.rules.in b/meta-agl-profile-graphical/recipes-graphics/wayland/weston-init/zz-dri-imx.rules.in
new file mode 100644
index 000000000..585db6be8
--- /dev/null
+++ b/meta-agl-profile-graphical/recipes-graphics/wayland/weston-init/zz-dri-imx.rules.in
@@ -0,0 +1,2 @@
+SUBSYSTEM=="gpu_class", MODE="0660", GROUP="@WESTONGROUP@", SECLABEL{smack}="*"
+
diff --git a/meta-agl-profile-graphical/recipes-graphics/wayland/weston-init/zz-dri.rules.in b/meta-agl-profile-graphical/recipes-graphics/wayland/weston-init/zz-dri.rules.in
new file mode 100644
index 000000000..707d12e28
--- /dev/null
+++ b/meta-agl-profile-graphical/recipes-graphics/wayland/weston-init/zz-dri.rules.in
@@ -0,0 +1 @@
+SUBSYSTEM=="drm", MODE="0660", GROUP="@WESTONGROUP@", SECLABEL{smack}="*", TAG+="systemd", ENV{SYSTEMD_WANTS}="weston.service"
diff --git a/meta-agl-profile-graphical/recipes-graphics/wayland/weston-init/zz-input.rules b/meta-agl-profile-graphical/recipes-graphics/wayland/weston-init/zz-input.rules
new file mode 100644
index 000000000..c0842135a
--- /dev/null
+++ b/meta-agl-profile-graphical/recipes-graphics/wayland/weston-init/zz-input.rules
@@ -0,0 +1 @@
+SUBSYSTEM=="input", MODE="0660", GROUP="input", SECLABEL{smack}="*", TAG+="systemd", ENV{SYSTEMD_WANTS}="weston.service"
diff --git a/meta-agl-profile-graphical/recipes-graphics/wayland/weston-init/zz-tty.rules.in b/meta-agl-profile-graphical/recipes-graphics/wayland/weston-init/zz-tty.rules.in
new file mode 100644
index 000000000..bfdf55b81
--- /dev/null
+++ b/meta-agl-profile-graphical/recipes-graphics/wayland/weston-init/zz-tty.rules.in
@@ -0,0 +1 @@
+SUBSYSTEM=="tty", KERNEL=="tty@WESTONTTY@", OWNER="@WESTONUSER@", SECLABEL{smack}="*", TAG+="systemd", ENV{SYSTEMD_WANTS}="weston.service"