meta-agl-profile-graphical: update weston and weston-init 77/23677/1
authorScott Murray <scott.murray@konsulko.com>
Mon, 27 Jan 2020 17:36:33 +0000 (12:36 -0500)
committerScott Murray <scott.murray@konsulko.com>
Mon, 27 Jan 2020 17:56:27 +0000 (12:56 -0500)
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 <scott.murray@konsulko.com>
13 files changed:
meta-agl-profile-graphical/classes/agl-graphical.bbclass
meta-agl-profile-graphical/recipes-graphics/wayland/weston-init.bbappend
meta-agl-profile-graphical/recipes-graphics/wayland/weston-init/weston.conf.in
meta-agl-profile-graphical/recipes-graphics/wayland/weston-init/zz-dri.rules.in
meta-agl-profile-graphical/recipes-graphics/wayland/weston-init/zz-input.rules [deleted file]
meta-agl-profile-graphical/recipes-graphics/wayland/weston-init/zz-input.rules.in [new file with mode: 0644]
meta-agl-profile-graphical/recipes-graphics/wayland/weston-init/zz-tty.rules.in
meta-agl-profile-graphical/recipes-graphics/wayland/weston/0001-Allow-regular-users-to-launch-Weston_2.0.0.patch [deleted file]
meta-agl-profile-graphical/recipes-graphics/wayland/weston/0001-Allow-regular-users-to-launch-Weston_7.0.0.patch [new file with mode: 0644]
meta-agl-profile-graphical/recipes-graphics/wayland/weston/0002-ivi-shell-Fix-crash-due-no-transmitter-screen.patch
meta-agl-profile-graphical/recipes-graphics/wayland/weston_%.bbappend [deleted file]
meta-agl-profile-graphical/recipes-graphics/wayland/weston_6.0.0.bbappend [deleted file]
meta-agl-profile-graphical/recipes-graphics/wayland/weston_7.0.0.bbappend [new file with mode: 0644]

index e99a441..65106db 100644 (file)
@@ -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}"
 
index 247aeee..c71402f 100644 (file)
@@ -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"
 
index 89c4366..211136c 100644 (file)
@@ -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@
index 707d12e..51c68c3 100644 (file)
@@ -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 (file)
index c084213..0000000
+++ /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 (file)
index 0000000..fb3e677
--- /dev/null
@@ -0,0 +1 @@
+SUBSYSTEM=="input", MODE="0660", GROUP="input", SECLABEL{smack}="*", TAG+="systemd", ENV{SYSTEMD_WANTS}="weston@@WESTONUSER@.service"
index bfdf55b..e5ce4b5 100644 (file)
@@ -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 (file)
index 3a59ba0..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-From 6c145cea35f0b77613d6e3f48679c976b9839d7c Mon Sep 17 00:00:00 2001
-From: Ronan Le Martret <ronan.lemartret@iot.bzh>
-Date: Wed, 31 May 2017 22:48:18 +0000
-Subject: [PATCH] Allow regular users to launch Weston
-
-Signed-off-by: Ronan Le Martret <ronan.lemartret@iot.bzh>
-
-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 (file)
index 0000000..362f6b0
--- /dev/null
@@ -0,0 +1,51 @@
+Allow regular users to launch Weston
+
+Signed-off-by: Ronan Le Martret <ronan.lemartret@iot.bzh>
+[Reworked for Weston 7.0.0 switch to meson]
+Signed-off-by: Scott Murray <scott.murray@konsulko.com>
+
+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_%.bbappend b/meta-agl-profile-graphical/recipes-graphics/wayland/weston_%.bbappend
deleted file mode 100644 (file)
index bcfe11b..0000000
+++ /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 (file)
index 67442bd..0000000
+++ /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 (file)
index 0000000..c2e5279
--- /dev/null
@@ -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"