aboutsummaryrefslogtreecommitdiffstats
path: root/meta-agl-profile-graphical/recipes-graphics/wayland/weston-init.bbappend
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 /meta-agl-profile-graphical/recipes-graphics/wayland/weston-init.bbappend
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>
Diffstat (limited to 'meta-agl-profile-graphical/recipes-graphics/wayland/weston-init.bbappend')
-rw-r--r--meta-agl-profile-graphical/recipes-graphics/wayland/weston-init.bbappend119
1 files changed, 55 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 \
+"