From 4bc95c3f87907f918eec3b83c475054a5bdef376 Mon Sep 17 00:00:00 2001 From: Scott Murray Date: Mon, 27 Jan 2020 12:36:33 -0500 Subject: meta-agl-profile-graphical: update weston and weston-init Update weston and weston-init bbappends to handle weston 6.0.0 to 7.0.0 upgrade and other upstream changes: - weston 6.0.0 bbappend renamed for weston 7.0.0. - Wildcard weston_%.bbappend removed, as none of its changes are required with the latest upstream recipe. - Update weston patches for 7.0.0. Notable changes are that the patch to allow launching weston as a non-root user has been reworked for the switch to meson for weston builds, and the compositor backend patch for Waltham has been disabled until someone more familiar with the code can update it. - weston-init changes and udev rules updated to work with upstream support for running weston as non-root. The major rework is to simplify things such that all AGL configuration is done as an over-ride to the new upstream weston@.service file. The ability to specify which TTY to run weston on has been removed in favor of upstream's hard-coded tty7 as part of this change, to cut down on the amount of extra configuration required. Bug-AGL: SPEC-2932 Change-Id: I6f8b213bacb2de7526aa1a3c01b1482be78becef Signed-off-by: Scott Murray --- .../classes/agl-graphical.bbclass | 5 +-- .../recipes-graphics/wayland/weston-init.bbappend | 37 +++++++--------- .../wayland/weston-init/weston.conf.in | 17 +++----- .../wayland/weston-init/zz-dri.rules.in | 2 +- .../wayland/weston-init/zz-input.rules | 1 - .../wayland/weston-init/zz-input.rules.in | 1 + .../wayland/weston-init/zz-tty.rules.in | 2 +- ...llow-regular-users-to-launch-Weston_2.0.0.patch | 39 ----------------- ...llow-regular-users-to-launch-Weston_7.0.0.patch | 51 ++++++++++++++++++++++ ...shell-Fix-crash-due-no-transmitter-screen.patch | 2 +- .../recipes-graphics/wayland/weston_%.bbappend | 4 -- .../recipes-graphics/wayland/weston_6.0.0.bbappend | 10 ----- .../recipes-graphics/wayland/weston_7.0.0.bbappend | 14 ++++++ 13 files changed, 94 insertions(+), 91 deletions(-) delete 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-input.rules.in delete mode 100644 meta-agl-profile-graphical/recipes-graphics/wayland/weston/0001-Allow-regular-users-to-launch-Weston_2.0.0.patch create mode 100644 meta-agl-profile-graphical/recipes-graphics/wayland/weston/0001-Allow-regular-users-to-launch-Weston_7.0.0.patch delete mode 100644 meta-agl-profile-graphical/recipes-graphics/wayland/weston_%.bbappend delete mode 100644 meta-agl-profile-graphical/recipes-graphics/wayland/weston_6.0.0.bbappend create mode 100644 meta-agl-profile-graphical/recipes-graphics/wayland/weston_7.0.0.bbappend diff --git a/meta-agl-profile-graphical/classes/agl-graphical.bbclass b/meta-agl-profile-graphical/classes/agl-graphical.bbclass index e99a441b7..65106db18 100644 --- a/meta-agl-profile-graphical/classes/agl-graphical.bbclass +++ b/meta-agl-profile-graphical/classes/agl-graphical.bbclass @@ -1,7 +1,6 @@ -WESTONTTY ??= "1" WESTONUSER ??= "display" WESTONGROUP ??= "display" -WESTONARGS ?= "--idle-time=0 --tty=${WESTONTTY}" -WESTONLAUNCHARGS ??= "--tty /dev/tty${WESTONTTY} --user ${WESTONUSER}" +WESTONARGS ?= "--idle-time=0 --tty=7" +WESTONLAUNCHARGS ??= "--tty /dev/tty7 --user ${WESTONUSER}" DISPLAY_XDG_RUNTIME_DIR ??= "/run/platform/${WESTONUSER}" 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 247aeeee3..c71402fed 100644 --- a/meta-agl-profile-graphical/recipes-graphics/wayland/weston-init.bbappend +++ b/meta-agl-profile-graphical/recipes-graphics/wayland/weston-init.bbappend @@ -2,17 +2,14 @@ FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:" inherit agl-graphical - WESTONSTART ??= "${@bb.utils.contains("DISTRO_FEATURES", "agl-compositor", "/usr/bin/agl-compositor", "/usr/bin/weston",d)} ${WESTONARGS}" WESTONSTART_append = " ${@bb.utils.contains("IMAGE_FEATURES", "debug-tweaks", " --log=${DISPLAY_XDG_RUNTIME_DIR}/weston.log", "",d)}" -DROPIN_NAME = "weston-init" - WIFILES = " \ file://weston.conf.in \ file://tmpfiles.conf.in \ file://zz-dri.rules.in \ - file://zz-input.rules \ + file://zz-input.rules.in \ file://zz-tty.rules.in \ " @@ -23,37 +20,34 @@ WIFILES_append_imx = " \ SRC_URI_append = " ${WIFILES}" do_install_append() { + # Remove upstream weston.ini to avoid conflict with weston-ini-conf package + rm -f ${D}${sysconfdir}/xdg/weston/weston.ini - # files - files=$(echo ${WIFILES} | sed s,file://,,g) + # Remove upstream weston udev rules just to be safe + rm -f ${D}${sysconfdir}/udev/rules.d/71-weston-drm.rules - # process ".in" files + # Process ".in" files + files=$(echo ${WIFILES} | sed s,file://,,g) 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 weston drop-in + install -d ${D}${systemd_system_unitdir}/weston@.service.d + install -m644 ${WORKDIR}/weston.conf ${D}/${systemd_system_unitdir}/weston@.service.d/weston-init.conf - # install tmpfiles drop-in + # Install tmpfiles drop-in install -d ${D}${libdir}/tmpfiles.d - install -m644 ${WORKDIR}/tmpfiles.conf ${D}${libdir}/tmpfiles.d/${DROPIN_NAME}.conf + install -m644 ${WORKDIR}/tmpfiles.conf ${D}${libdir}/tmpfiles.d/weston-init.conf - # install udev rules + # Install udev rules install -d ${D}${sysconfdir}/udev/rules.d for f in ${files}; do g=${f%.in} @@ -65,8 +59,9 @@ do_install_append() { } FILES_${PN} += " \ - ${libdir}/tmpfiles.d/*.conf \ - ${systemd_system_unitdir}/weston.service.d/${DROPIN_NAME}.conf \ + ${libdir}/tmpfiles.d/ \ + ${systemd_system_unitdir}/weston@.service.d/ \ " +SYSTEMD_AUTO_ENABLE = "enable" 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 index 89c436695..211136cc9 100644 --- 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 @@ -1,17 +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 +# Note that clearing PAMName (thus not having PAMName=login) disables +# logind support for the session, which allows setting XDG_RUNTIME_DIR +# to something other than /run/user/% (as is done above). +# Without systemd-logind support, weston needs to be patched to allow +# its direct launcher to work for non-root users in this scenario. +PAMName= +ExecStart= 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/zz-dri.rules.in b/meta-agl-profile-graphical/recipes-graphics/wayland/weston-init/zz-dri.rules.in index 707d12e28..51c68c303 100644 --- 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 @@ -1 +1 @@ -SUBSYSTEM=="drm", MODE="0660", GROUP="@WESTONGROUP@", SECLABEL{smack}="*", TAG+="systemd", ENV{SYSTEMD_WANTS}="weston.service" +SUBSYSTEM=="drm", MODE="0660", GROUP="@WESTONGROUP@", SECLABEL{smack}="*", TAG+="systemd", ENV{SYSTEMD_WANTS}="weston@@WESTONUSER@.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 deleted file mode 100644 index c0842135a..000000000 --- a/meta-agl-profile-graphical/recipes-graphics/wayland/weston-init/zz-input.rules +++ /dev/null @@ -1 +0,0 @@ -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-input.rules.in b/meta-agl-profile-graphical/recipes-graphics/wayland/weston-init/zz-input.rules.in new file mode 100644 index 000000000..fb3e677f4 --- /dev/null +++ b/meta-agl-profile-graphical/recipes-graphics/wayland/weston-init/zz-input.rules.in @@ -0,0 +1 @@ +SUBSYSTEM=="input", MODE="0660", GROUP="input", SECLABEL{smack}="*", TAG+="systemd", ENV{SYSTEMD_WANTS}="weston@@WESTONUSER@.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 index bfdf55b81..e5ce4b553 100644 --- 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 @@ -1 +1 @@ -SUBSYSTEM=="tty", KERNEL=="tty@WESTONTTY@", OWNER="@WESTONUSER@", SECLABEL{smack}="*", TAG+="systemd", ENV{SYSTEMD_WANTS}="weston.service" +SUBSYSTEM=="tty", KERNEL=="tty7", OWNER="@WESTONUSER@", SECLABEL{smack}="*", TAG+="systemd", ENV{SYSTEMD_WANTS}="weston@@WESTONUSER@.service" diff --git a/meta-agl-profile-graphical/recipes-graphics/wayland/weston/0001-Allow-regular-users-to-launch-Weston_2.0.0.patch b/meta-agl-profile-graphical/recipes-graphics/wayland/weston/0001-Allow-regular-users-to-launch-Weston_2.0.0.patch deleted file mode 100644 index 3a59ba0c8..000000000 --- a/meta-agl-profile-graphical/recipes-graphics/wayland/weston/0001-Allow-regular-users-to-launch-Weston_2.0.0.patch +++ /dev/null @@ -1,39 +0,0 @@ -From 6c145cea35f0b77613d6e3f48679c976b9839d7c Mon Sep 17 00:00:00 2001 -From: Ronan Le Martret -Date: Wed, 31 May 2017 22:48:18 +0000 -Subject: [PATCH] Allow regular users to launch Weston - -Signed-off-by: Ronan Le Martret - -diff --git a/configure.ac b/configure.ac -index 50f8e013..2043b9b0 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -156,6 +156,12 @@ PKG_CHECK_MODULES(XKBCOMMON_COMPOSE, [xkbcommon >= 0.5.0], - [AC_DEFINE(HAVE_XKBCOMMON_COMPOSE, 1, - [Define if xkbcommon is 0.5.0 or newer])],true) - -+AC_ARG_ENABLE(sys-uid, [ --enable-sys-uid],, -+ enable_sys_uid=no) -+if test x$enable_sys_uid = xyes; then -+ AC_DEFINE(ENABLE_SYS_UID, [1], [Allow regular users to launch Weston]) -+fi -+ - AC_ARG_ENABLE(setuid-install, [ --enable-setuid-install],, - enable_setuid_install=yes) - AM_CONDITIONAL(ENABLE_SETUID_INSTALL, test x$enable_setuid_install = xyes) -diff --git a/libweston/launcher-direct.c b/libweston/launcher-direct.c -index e0ce6d63..d0db9bb5 100644 ---- a/libweston/launcher-direct.c -+++ b/libweston/launcher-direct.c -@@ -283,8 +283,10 @@ launcher_direct_connect(struct weston_launcher **out, struct weston_compositor * - { - struct launcher_direct *launcher; - -+#ifndef ENABLE_SYS_UID - if (geteuid() != 0) - return -EINVAL; -+#endif - - launcher = zalloc(sizeof(*launcher)); - if (launcher == NULL) diff --git a/meta-agl-profile-graphical/recipes-graphics/wayland/weston/0001-Allow-regular-users-to-launch-Weston_7.0.0.patch b/meta-agl-profile-graphical/recipes-graphics/wayland/weston/0001-Allow-regular-users-to-launch-Weston_7.0.0.patch new file mode 100644 index 000000000..362f6b064 --- /dev/null +++ b/meta-agl-profile-graphical/recipes-graphics/wayland/weston/0001-Allow-regular-users-to-launch-Weston_7.0.0.patch @@ -0,0 +1,51 @@ +Allow regular users to launch Weston + +Signed-off-by: Ronan Le Martret +[Reworked for Weston 7.0.0 switch to meson] +Signed-off-by: Scott Murray + +diff --git a/libweston/launcher-direct.c b/libweston/launcher-direct.c +index 9fa329b6..8e218804 100644 +--- a/libweston/launcher-direct.c ++++ b/libweston/launcher-direct.c +@@ -291,8 +291,10 @@ launcher_direct_connect(struct weston_launcher **out, struct weston_compositor * + { + struct launcher_direct *launcher; + ++#ifndef ENABLE_USER_START + if (geteuid() != 0) + return -EINVAL; ++#endif + + launcher = zalloc(sizeof(*launcher)); + if (launcher == NULL) +diff --git a/libweston/meson.build b/libweston/meson.build +index d8d3fc07..0d39ebf1 100644 +--- a/libweston/meson.build ++++ b/libweston/meson.build +@@ -216,6 +216,10 @@ if get_option('weston-launch') + meson.add_install_script('echo', 'REMINDER: You are installing weston-launch, please make it setuid-root.') + endif + ++if get_option('enable-user-start') ++ config_h.set('ENABLE_USER_START', '1') ++endif ++ + subdir('renderer-gl') + subdir('backend-drm') + subdir('backend-fbdev') +diff --git a/meson_options.txt b/meson_options.txt +index d5bf1d54..c93f31d1 100644 +--- a/meson_options.txt ++++ b/meson_options.txt +@@ -217,3 +217,10 @@ option( + value: false, + description: 'Generate documentation' + ) ++ ++option( ++ 'enable-user-start', ++ type: 'boolean', ++ value: true, ++ description: 'Tests: enable start as non-root user' ++) diff --git a/meta-agl-profile-graphical/recipes-graphics/wayland/weston/0002-ivi-shell-Fix-crash-due-no-transmitter-screen.patch b/meta-agl-profile-graphical/recipes-graphics/wayland/weston/0002-ivi-shell-Fix-crash-due-no-transmitter-screen.patch index 51779cf45..05ce7de30 100644 --- a/meta-agl-profile-graphical/recipes-graphics/wayland/weston/0002-ivi-shell-Fix-crash-due-no-transmitter-screen.patch +++ b/meta-agl-profile-graphical/recipes-graphics/wayland/weston/0002-ivi-shell-Fix-crash-due-no-transmitter-screen.patch @@ -40,7 +40,7 @@ index 2c450f3..1fbfeeb 100644 #include "ivi-layout-private.h" #include "ivi-layout-shell.h" - -+#include "plugin-registry.h" ++#include #include "shared/helpers.h" #include "shared/os-compatibility.h" diff --git a/meta-agl-profile-graphical/recipes-graphics/wayland/weston_%.bbappend b/meta-agl-profile-graphical/recipes-graphics/wayland/weston_%.bbappend deleted file mode 100644 index bcfe11b17..000000000 --- a/meta-agl-profile-graphical/recipes-graphics/wayland/weston_%.bbappend +++ /dev/null @@ -1,4 +0,0 @@ -PACKAGECONFIG[notify] = "--enable-systemd-notify,--disable-systemd-notify,systemd" -PACKAGECONFIG_append = " notify" - -RRECOMMENDS_${PN}_remove = "weston-conf" diff --git a/meta-agl-profile-graphical/recipes-graphics/wayland/weston_6.0.0.bbappend b/meta-agl-profile-graphical/recipes-graphics/wayland/weston_6.0.0.bbappend deleted file mode 100644 index 67442bd6b..000000000 --- a/meta-agl-profile-graphical/recipes-graphics/wayland/weston_6.0.0.bbappend +++ /dev/null @@ -1,10 +0,0 @@ -FILESEXTRAPATHS_append := ":${THISDIR}/${PN}" - -SRC_URI_append = "\ - file://0001-Allow-regular-users-to-launch-Weston_2.0.0.patch \ - file://use-XDG_RUNTIMESHARE_DIR.patch \ - file://0002-ivi-shell-Fix-crash-due-no-transmitter-screen.patch \ - file://0003-compositor-drm-introduce-drm_get_dmafd_from_view.patch \ - file://0001-config-parser-Export-get_full_path-and-destroy.patch \ - " -EXTRA_OECONF_append = " --enable-sys-uid" diff --git a/meta-agl-profile-graphical/recipes-graphics/wayland/weston_7.0.0.bbappend b/meta-agl-profile-graphical/recipes-graphics/wayland/weston_7.0.0.bbappend new file mode 100644 index 000000000..c2e52798d --- /dev/null +++ b/meta-agl-profile-graphical/recipes-graphics/wayland/weston_7.0.0.bbappend @@ -0,0 +1,14 @@ +FILESEXTRAPATHS_append := ":${THISDIR}/${PN}" + +# NOTE: +# file://0003-compositor-drm-introduce-drm_get_dmafd_from_view.patch +# has been removed until someone more familiar with weston internals +# and waltham can take a look and update it. +SRC_URI_append = "\ + file://0001-Allow-regular-users-to-launch-Weston_7.0.0.patch \ + file://use-XDG_RUNTIMESHARE_DIR.patch \ + file://0002-ivi-shell-Fix-crash-due-no-transmitter-screen.patch \ + file://0001-config-parser-Export-get_full_path-and-destroy.patch \ + " + +EXTRA_OEMESON_append = " -Denable-user-start=true" -- cgit 1.2.3-korg