diff options
author | José Bollo <jose.bollo@iot.bzh> | 2019-09-05 16:38:20 +0200 |
---|---|---|
committer | Jan-Simon Moeller <jsmoeller@linuxfoundation.org> | 2019-09-16 12:07:56 +0000 |
commit | a9b74e1c7c7f2d5ad03a7b7675bbef8d241dd47e (patch) | |
tree | f457fe13b8dfb98aa2aae5d5eec544946068e48e | |
parent | 57b6d0f437ef19fb6030d7d126aebea2ffeabb93 (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.bbappend | 119 | ||||
-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.in | 2 | ||||
-rw-r--r-- | meta-agl-profile-graphical/recipes-graphics/wayland/weston-init/zz-dri.rules.in | 1 | ||||
-rw-r--r-- | meta-agl-profile-graphical/recipes-graphics/wayland/weston-init/zz-input.rules | 1 | ||||
-rw-r--r-- | meta-agl-profile-graphical/recipes-graphics/wayland/weston-init/zz-tty.rules.in | 1 |
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" |