From a9b74e1c7c7f2d5ad03a7b7675bbef8d241dd47e Mon Sep 17 00:00:00 2001 From: José Bollo Date: Thu, 5 Sep 2019 16:38:20 +0200 Subject: weston-init: Refactor, simplify, fix MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- .../recipes-graphics/wayland/weston-init.bbappend | 119 ++++++++++----------- .../wayland/weston-init/tmpfiles.conf.in | 6 ++ .../wayland/weston-init/weston.conf.in | 17 +++ .../wayland/weston-init/weston.service.add | 11 -- .../wayland/weston-init/weston_tmpfiles.conf | 6 -- .../wayland/weston-init/zz-dri-imx.rules.in | 2 + .../wayland/weston-init/zz-dri.rules.in | 1 + .../wayland/weston-init/zz-input.rules | 1 + .../wayland/weston-init/zz-tty.rules.in | 1 + 9 files changed, 83 insertions(+), 81 deletions(-) create mode 100644 meta-agl-profile-graphical/recipes-graphics/wayland/weston-init/tmpfiles.conf.in create mode 100644 meta-agl-profile-graphical/recipes-graphics/wayland/weston-init/weston.conf.in delete mode 100644 meta-agl-profile-graphical/recipes-graphics/wayland/weston-init/weston.service.add delete mode 100644 meta-agl-profile-graphical/recipes-graphics/wayland/weston-init/weston_tmpfiles.conf create mode 100644 meta-agl-profile-graphical/recipes-graphics/wayland/weston-init/zz-dri-imx.rules.in create mode 100644 meta-agl-profile-graphical/recipes-graphics/wayland/weston-init/zz-dri.rules.in create mode 100644 meta-agl-profile-graphical/recipes-graphics/wayland/weston-init/zz-input.rules create mode 100644 meta-agl-profile-graphical/recipes-graphics/wayland/weston-init/zz-tty.rules.in 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/tmpfiles.conf.in b/meta-agl-profile-graphical/recipes-graphics/wayland/weston-init/tmpfiles.conf.in new file mode 100644 index 000000000..c4b302faf --- /dev/null +++ b/meta-agl-profile-graphical/recipes-graphics/wayland/weston-init/tmpfiles.conf.in @@ -0,0 +1,6 @@ +# This file is distributed to create weston XDG_RUNTIME_DIR (/run/deamon/@WESTONUSER@) +# +# See tmpfiles.d(5) for details + +d /run/platform/ 0775 root root - +d /run/platform/@WESTONUSER@ 0770 @WESTONUSER@ @WESTONGROUP@ - diff --git a/meta-agl-profile-graphical/recipes-graphics/wayland/weston-init/weston.conf.in b/meta-agl-profile-graphical/recipes-graphics/wayland/weston-init/weston.conf.in new file mode 100644 index 000000000..89c436695 --- /dev/null +++ b/meta-agl-profile-graphical/recipes-graphics/wayland/weston-init/weston.conf.in @@ -0,0 +1,17 @@ +[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 +TTYVHangup=yes +TTYVTDisallocate=yes +UtmpIdentifier=tty@WESTONTTY@ 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.service.add deleted file mode 100644 index d24a8eb23..000000000 --- a/meta-agl-profile-graphical/recipes-graphics/wayland/weston-init/weston.service.add +++ /dev/null @@ -1,11 +0,0 @@ -Type=notify -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 -TTYPath=/dev/tty@WESTONTTY@ -StandardInput=tty -TTYReset=yes -TTYVHangup=yes -TTYVTDisallocate=yes -UtmpIdentifier=tty@WESTONTTY@ 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/weston_tmpfiles.conf deleted file mode 100644 index c4b302faf..000000000 --- a/meta-agl-profile-graphical/recipes-graphics/wayland/weston-init/weston_tmpfiles.conf +++ /dev/null @@ -1,6 +0,0 @@ -# This file is distributed to create weston XDG_RUNTIME_DIR (/run/deamon/@WESTONUSER@) -# -# See tmpfiles.d(5) for details - -d /run/platform/ 0775 root root - -d /run/platform/@WESTONUSER@ 0770 @WESTONUSER@ @WESTONGROUP@ - 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" -- cgit 1.2.3-korg