summaryrefslogtreecommitdiff
path: root/poky/meta/recipes-graphics/wayland
diff options
context:
space:
mode:
Diffstat (limited to 'poky/meta/recipes-graphics/wayland')
-rw-r--r--poky/meta/recipes-graphics/wayland/libinput_1.16.1.bb (renamed from poky/meta/recipes-graphics/wayland/libinput_1.16.0.bb)3
-rw-r--r--poky/meta/recipes-graphics/wayland/weston-init.bb25
-rw-r--r--poky/meta/recipes-graphics/wayland/weston-init/qemuall/weston.ini2
-rw-r--r--poky/meta/recipes-graphics/wayland/weston-init/qemux86-64/weston.ini0
-rw-r--r--poky/meta/recipes-graphics/wayland/weston-init/qemux86/weston.ini0
-rw-r--r--poky/meta/recipes-graphics/wayland/weston-init/weston-autologin11
-rw-r--r--poky/meta/recipes-graphics/wayland/weston-init/weston.ini4
-rw-r--r--poky/meta/recipes-graphics/wayland/weston-init/weston@.service69
-rw-r--r--poky/meta/recipes-graphics/wayland/weston-init/weston@.socket10
-rw-r--r--poky/meta/recipes-graphics/wayland/weston/0001-tests-include-fcntl.h-for-open-O_RDWR-O_CLOEXEC-and-.patch47
-rw-r--r--poky/meta/recipes-graphics/wayland/weston/0001-weston-launch-Provide-a-default-version-that-doesn-t.patch27
-rw-r--r--poky/meta/recipes-graphics/wayland/weston/dont-use-plane-add-prop.patch23
-rw-r--r--poky/meta/recipes-graphics/wayland/weston_9.0.0.bb (renamed from poky/meta/recipes-graphics/wayland/weston_8.0.0.bb)7
13 files changed, 188 insertions, 40 deletions
diff --git a/poky/meta/recipes-graphics/wayland/libinput_1.16.0.bb b/poky/meta/recipes-graphics/wayland/libinput_1.16.1.bb
index baf5c1d16..149760918 100644
--- a/poky/meta/recipes-graphics/wayland/libinput_1.16.0.bb
+++ b/poky/meta/recipes-graphics/wayland/libinput_1.16.1.bb
@@ -16,8 +16,7 @@ SRC_URI = "http://www.freedesktop.org/software/${BPN}/${BP}.tar.xz \
file://run-ptest \
file://determinism.patch \
"
-SRC_URI[md5sum] = "b518dae7f603040872739216971ee97b"
-SRC_URI[sha256sum] = "83f6d0c94e5e0dd87094ce73f0edb631919617d24a60ee0ab9bd9197411d76e8"
+SRC_URI[sha256sum] = "7ba7d1aeedd15168bb21d17e9e628aa1c27957963a423a3fea3938a501758539"
UPSTREAM_CHECK_REGEX = "libinput-(?P<pver>\d+\.\d+\.(?!9\d+)\d+)"
diff --git a/poky/meta/recipes-graphics/wayland/weston-init.bb b/poky/meta/recipes-graphics/wayland/weston-init.bb
index 40aa76295..07cec75fb 100644
--- a/poky/meta/recipes-graphics/wayland/weston-init.bb
+++ b/poky/meta/recipes-graphics/wayland/weston-init.bb
@@ -8,11 +8,19 @@ SRC_URI = "file://init \
file://weston.env \
file://weston.ini \
file://weston@.service \
+ file://weston@.socket \
file://71-weston-drm.rules \
+ file://weston-autologin \
file://weston-start"
S = "${WORKDIR}"
+DEFAULTBACKEND ??= ""
+DEFAULTBACKEND_qemuall ?= "fbdev"
+DEFAULTBACKEND_qemuarm64 = "drm"
+DEFAULTBACKEND_qemux86 = "drm"
+DEFAULTBACKEND_qemux86-64 = "drm"
+
do_install() {
install -Dm755 ${WORKDIR}/init ${D}/${sysconfdir}/init.d/weston
install -D -p -m0644 ${WORKDIR}/weston.ini ${D}${sysconfdir}/xdg/weston/weston.ini
@@ -20,6 +28,10 @@ do_install() {
# Install Weston systemd service and accompanying udev rule
install -D -p -m0644 ${WORKDIR}/weston@.service ${D}${systemd_system_unitdir}/weston@.service
+ install -D -p -m0644 ${WORKDIR}/weston@.socket ${D}${systemd_system_unitdir}/weston@.socket
+ if [ "${@bb.utils.filter('DISTRO_FEATURES', 'pam', d)}" ]; then
+ install -D -p -m0644 ${WORKDIR}/weston-autologin ${D}${sysconfdir}/pam.d/weston-autologin
+ fi
sed -i -e s:/etc:${sysconfdir}:g \
-e s:/usr/bin:${bindir}:g \
-e s:/var:${localstatedir}:g \
@@ -30,14 +42,9 @@ do_install() {
install -Dm755 ${WORKDIR}/weston-start ${D}${bindir}/weston-start
sed -i 's,@DATADIR@,${datadir},g' ${D}${bindir}/weston-start
sed -i 's,@LOCALSTATEDIR@,${localstatedir},g' ${D}${bindir}/weston-start
-}
-
-do_install_append_libc-musl_qemux86() {
- echo "WESTON_DISABLE_ATOMIC=Y" >> ${D}${sysconfdir}/default/weston
-}
-
-do_install_append_libc-musl_qemux86-64() {
- echo "WESTON_DISABLE_ATOMIC=Y" >> ${D}${sysconfdir}/default/weston
+ if [ -n "${DEFAULTBACKEND}" ]; then
+ sed -i -e "/^\[core\]/a backend=${DEFAULTBACKEND}-backend.so" ${D}${sysconfdir}/xdg/weston/weston.ini
+ fi
}
inherit update-rc.d features_check systemd
@@ -50,7 +57,7 @@ RDEPENDS_${PN} = "weston kbd"
INITSCRIPT_NAME = "weston"
INITSCRIPT_PARAMS = "start 9 5 2 . stop 20 0 1 6 ."
-FILES_${PN} += "${sysconfdir}/xdg/weston/weston.ini ${systemd_system_unitdir}/weston@.service ${sysconfdir}/default/weston"
+FILES_${PN} += "${sysconfdir}/xdg/weston/weston.ini ${systemd_system_unitdir}/weston@.service ${systemd_system_unitdir}/weston@.socket ${sysconfdir}/default/weston ${sysconfdir}/pam.d/"
CONFFILES_${PN} += "${sysconfdir}/xdg/weston/weston.ini ${sysconfdir}/default/weston"
diff --git a/poky/meta/recipes-graphics/wayland/weston-init/qemuall/weston.ini b/poky/meta/recipes-graphics/wayland/weston-init/qemuall/weston.ini
deleted file mode 100644
index 17ebd7fda..000000000
--- a/poky/meta/recipes-graphics/wayland/weston-init/qemuall/weston.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[core]
-backend=fbdev-backend.so
diff --git a/poky/meta/recipes-graphics/wayland/weston-init/qemux86-64/weston.ini b/poky/meta/recipes-graphics/wayland/weston-init/qemux86-64/weston.ini
deleted file mode 100644
index e69de29bb..000000000
--- a/poky/meta/recipes-graphics/wayland/weston-init/qemux86-64/weston.ini
+++ /dev/null
diff --git a/poky/meta/recipes-graphics/wayland/weston-init/qemux86/weston.ini b/poky/meta/recipes-graphics/wayland/weston-init/qemux86/weston.ini
deleted file mode 100644
index e69de29bb..000000000
--- a/poky/meta/recipes-graphics/wayland/weston-init/qemux86/weston.ini
+++ /dev/null
diff --git a/poky/meta/recipes-graphics/wayland/weston-init/weston-autologin b/poky/meta/recipes-graphics/wayland/weston-init/weston-autologin
new file mode 100644
index 000000000..f6e6d106d
--- /dev/null
+++ b/poky/meta/recipes-graphics/wayland/weston-init/weston-autologin
@@ -0,0 +1,11 @@
+auth required pam_nologin.so
+auth required pam_unix.so try_first_pass nullok
+
+account required pam_nologin.so
+account required pam_unix.so
+
+session required pam_env.so
+session required pam_unix.so
+-session optional pam_systemd.so type=wayland class=user desktop=weston
+-session optional pam_loginuid.so
+
diff --git a/poky/meta/recipes-graphics/wayland/weston-init/weston.ini b/poky/meta/recipes-graphics/wayland/weston-init/weston.ini
index 1e6dff68f..b48726d59 100644
--- a/poky/meta/recipes-graphics/wayland/weston-init/weston.ini
+++ b/poky/meta/recipes-graphics/wayland/weston-init/weston.ini
@@ -68,8 +68,8 @@ require-input=false
#min_accel_factor = 0.16
#max_accel_factor = 1.0
-#[screen-share]
-#command=/usr/bin/weston --backend=rdp-backend.so --shell=fullscreen-shell.so --no-clients-resize
+[screen-share]
+command=/usr/bin/weston --backend=rdp-backend.so --shell=fullscreen-shell.so --no-clients-resize
#[xwayland]
#path=/usr/bin/Xwayland
diff --git a/poky/meta/recipes-graphics/wayland/weston-init/weston@.service b/poky/meta/recipes-graphics/wayland/weston-init/weston@.service
index 39e193014..0a1df15bd 100644
--- a/poky/meta/recipes-graphics/wayland/weston-init/weston@.service
+++ b/poky/meta/recipes-graphics/wayland/weston-init/weston@.service
@@ -1,15 +1,64 @@
+# This is a system unit for launching Weston with auto-login as the
+# user configured here.
+#
+# Weston must be built with systemd support, and your weston.ini must load
+# the plugin systemd-notify.so.
[Unit]
-Description=Weston Wayland Compositor
-RequiresMountsFor=/run
-Conflicts=plymouth-quit.service
-After=systemd-user-sessions.service plymouth-quit-wait.service
+Description=Weston, a Wayland compositor, as a system service
+Documentation=man:weston(1) man:weston.ini(5)
+Documentation=http://wayland.freedesktop.org/
+
+# Make sure we are started after logins are permitted.
+After=systemd-user-sessions.service
+
+# If Plymouth is used, we want to start when it is on its way out.
+After=plymouth-quit-wait.service
+
+# D-Bus is necessary for contacting logind. Logind is required.
+Wants=dbus.socket
+After=dbus.socket
+
+# Since we are part of the graphical session, make sure we are started before
+# it is complete.
+Before=graphical.target
+
+# Prevent starting on systems without virtual consoles, Weston requires one
+# for now.
+ConditionPathExists=/dev/tty0
[Service]
-User=%i
-PAMName=login
-EnvironmentFile=-/etc/default/weston
+# Requires systemd-notify.so Weston plugin.
+Type=notify
+ExecStart=/usr/bin/weston --modules=systemd-notify.so
+
+# Optional watchdog setup
+TimeoutStartSec=60
+WatchdogSec=20
+
+# The user to run Weston as.
+User=%I
+
+# Make sure working directory is users home directory
+WorkingDirectory=/home/%i
+
+# Set up a full user session for the user, required by Weston.
+PAMName=weston-autologin
+
+# A virtual terminal is needed.
+TTYPath=/dev/tty7
+TTYReset=yes
+TTYVHangup=yes
+TTYVTDisallocate=yes
+
+# Fail to start if not controlling the tty.
+StandardInput=tty-fail
+StandardOutput=journal
StandardError=journal
-PermissionsStartOnly=true
-IgnoreSIGPIPE=no
-ExecStart=/usr/bin/weston-start -v -e -- $OPTARGS
+# Log this user with utmp, letting it show up with commands 'w' and 'who'.
+UtmpIdentifier=tty7
+UtmpMode=user
+
+[Install]
+WantedBy=graphical.target
+DefaultInstance=tty7
diff --git a/poky/meta/recipes-graphics/wayland/weston-init/weston@.socket b/poky/meta/recipes-graphics/wayland/weston-init/weston@.socket
new file mode 100644
index 000000000..f1790d74a
--- /dev/null
+++ b/poky/meta/recipes-graphics/wayland/weston-init/weston@.socket
@@ -0,0 +1,10 @@
+[Unit]
+Description=Weston Wayland socket
+After=user-runtime-dir@1000.service
+
+[Socket]
+ListenStream=/run/user/1000/wayland-%I
+
+[Install]
+WantedBy=sockets.target
+
diff --git a/poky/meta/recipes-graphics/wayland/weston/0001-tests-include-fcntl.h-for-open-O_RDWR-O_CLOEXEC-and-.patch b/poky/meta/recipes-graphics/wayland/weston/0001-tests-include-fcntl.h-for-open-O_RDWR-O_CLOEXEC-and-.patch
new file mode 100644
index 000000000..6fe86ff3f
--- /dev/null
+++ b/poky/meta/recipes-graphics/wayland/weston/0001-tests-include-fcntl.h-for-open-O_RDWR-O_CLOEXEC-and-.patch
@@ -0,0 +1,47 @@
+From 58760e09eed662a72da939ff4802d605489cff8e Mon Sep 17 00:00:00 2001
+From: Denys Dmytriyenko <denys@ti.com>
+Date: Tue, 8 Sep 2020 19:37:42 -0400
+Subject: [PATCH] tests: include fcntl.h for open(), O_RDWR, O_CLOEXEC and
+ O_CREAT
+
+musl libc (unlike glibc) requires explicitly incuding fcntl.h to define open(),
+O_RDWR, O_CLOEXEC and O_CREAT. Otherwise the build fails with the errors:
+
+| ../weston-9.0.0/tests/weston-test-fixture-compositor.c: In function 'wait_for_lock':
+| ../weston-9.0.0/tests/weston-test-fixture-compositor.c:135:7: warning: implicit declaration of function 'open'; did you mean 'popen'? [-Wimplicit-function-declaration]
+| 135 | fd = open(lock_path, O_RDWR | O_CLOEXEC | O_CREAT, 00700);
+| | ^~~~
+| | popen
+| ../weston-9.0.0/tests/weston-test-fixture-compositor.c:135:23: error: 'O_RDWR' undeclared (first use in this function)
+| 135 | fd = open(lock_path, O_RDWR | O_CLOEXEC | O_CREAT, 00700);
+| | ^~~~~~
+| ../weston-9.0.0/tests/weston-test-fixture-compositor.c:135:23: note: each undeclared identifier is reported only once for each function it appears in
+| ../weston-9.0.0/tests/weston-test-fixture-compositor.c:135:32: error: 'O_CLOEXEC' undeclared (first use in this function)
+| 135 | fd = open(lock_path, O_RDWR | O_CLOEXEC | O_CREAT, 00700);
+| | ^~~~~~~~~
+| ../weston-9.0.0/tests/weston-test-fixture-compositor.c:135:44: error: 'O_CREAT' undeclared (first use in this function)
+| 135 | fd = open(lock_path, O_RDWR | O_CLOEXEC | O_CREAT, 00700);
+| | ^~~~~~~
+
+Upstream-Status: Submitted [https://gitlab.freedesktop.org/wayland/weston/-/merge_requests/493/diffs?commit_id=b10c0e843dcb8148bbe869bb15261955b94ac98c]
+
+Signed-off-by: Denys Dmytriyenko <denys@ti.com>
+---
+ tests/weston-test-fixture-compositor.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/tests/weston-test-fixture-compositor.c b/tests/weston-test-fixture-compositor.c
+index 0c9855f..e0e32c9 100644
+--- a/tests/weston-test-fixture-compositor.c
++++ b/tests/weston-test-fixture-compositor.c
+@@ -31,6 +31,7 @@
+ #include <unistd.h>
+ #include <sys/file.h>
+ #include <errno.h>
++#include <fcntl.h>
+
+ #include "shared/helpers.h"
+ #include "weston-test-fixture-compositor.h"
+--
+2.7.4
+
diff --git a/poky/meta/recipes-graphics/wayland/weston/0001-weston-launch-Provide-a-default-version-that-doesn-t.patch b/poky/meta/recipes-graphics/wayland/weston/0001-weston-launch-Provide-a-default-version-that-doesn-t.patch
index 62b864c13..3279a728c 100644
--- a/poky/meta/recipes-graphics/wayland/weston/0001-weston-launch-Provide-a-default-version-that-doesn-t.patch
+++ b/poky/meta/recipes-graphics/wayland/weston/0001-weston-launch-Provide-a-default-version-that-doesn-t.patch
@@ -1,7 +1,8 @@
-From 5f2d71998eb77068cbaee2d468cbb296a42d5739 Mon Sep 17 00:00:00 2001
+From a1548c742bf2dedbb47282d8a00407b60bbab669 Mon Sep 17 00:00:00 2001
From: Tom Hochstein <tom.hochstein@nxp.com>
Date: Wed, 22 Feb 2017 15:53:30 +0200
Subject: [PATCH] weston-launch: Provide a default version that doesn't require
+
PAM
weston-launch requires PAM for starting weston as a non-root user.
@@ -57,7 +58,7 @@ index 08d23ec..cb9fd3f 100644
install: true
)
diff --git a/libweston/weston-launch.c b/libweston/weston-launch.c
-index 8a711b4..54c567a 100644
+index 521cb2c..2d42d33 100644
--- a/libweston/weston-launch.c
+++ b/libweston/weston-launch.c
@@ -51,7 +51,9 @@
@@ -97,7 +98,7 @@ index 8a711b4..54c567a 100644
static int
setup_launcher_socket(struct weston_launch *wl)
-@@ -431,6 +437,7 @@ quit(struct weston_launch *wl, int status)
+@@ -466,6 +472,7 @@ quit(struct weston_launch *wl, int status)
close(wl->signalfd);
close(wl->sock[0]);
@@ -105,15 +106,15 @@ index 8a711b4..54c567a 100644
if (wl->new_user) {
err = pam_close_session(wl->ph, 0);
if (err)
-@@ -438,6 +445,7 @@ quit(struct weston_launch *wl, int status)
+@@ -473,6 +480,7 @@ quit(struct weston_launch *wl, int status)
err, pam_strerror(wl->ph, err));
pam_end(wl->ph, err);
}
+#endif
- if (ioctl(wl->tty, KDSKBMUTE, 0) &&
- ioctl(wl->tty, KDSKBMODE, wl->kb_mode))
-@@ -666,6 +674,7 @@ setup_session(struct weston_launch *wl, char **child_argv)
+ /*
+ * Get a fresh handle to the tty as the previous one is in
+@@ -710,6 +718,7 @@ setup_session(struct weston_launch *wl, char **child_argv)
setenv("HOME", wl->pw->pw_dir, 1);
setenv("SHELL", wl->pw->pw_shell, 1);
@@ -121,7 +122,7 @@ index 8a711b4..54c567a 100644
env = pam_getenvlist(wl->ph);
if (env) {
for (i = 0; env[i]; ++i) {
-@@ -674,6 +683,7 @@ setup_session(struct weston_launch *wl, char **child_argv)
+@@ -718,6 +727,7 @@ setup_session(struct weston_launch *wl, char **child_argv)
}
free(env);
}
@@ -129,7 +130,7 @@ index 8a711b4..54c567a 100644
/*
* We open a new session, so it makes sense
-@@ -745,8 +755,10 @@ static void
+@@ -789,8 +799,10 @@ static void
help(const char *name)
{
fprintf(stderr, "Usage: %s [args...] [-- [weston args..]]\n", name);
@@ -140,7 +141,7 @@ index 8a711b4..54c567a 100644
fprintf(stderr, " -t, --tty Start session on alternative tty,\n"
" e.g. -t /dev/tty4, requires -u option.\n");
fprintf(stderr, " -v, --verbose Be verbose\n");
-@@ -760,7 +772,9 @@ main(int argc, char *argv[])
+@@ -804,7 +816,9 @@ main(int argc, char *argv[])
int i, c;
char *tty = NULL;
struct option opts[] = {
@@ -150,7 +151,7 @@ index 8a711b4..54c567a 100644
{ "tty", required_argument, NULL, 't' },
{ "verbose", no_argument, NULL, 'v' },
{ "help", no_argument, NULL, 'h' },
-@@ -772,11 +786,16 @@ main(int argc, char *argv[])
+@@ -816,11 +830,16 @@ main(int argc, char *argv[])
while ((c = getopt_long(argc, argv, "u:t:vh", opts, &i)) != -1) {
switch (c) {
case 'u':
@@ -167,7 +168,7 @@ index 8a711b4..54c567a 100644
break;
case 't':
tty = optarg;
-@@ -828,8 +847,10 @@ main(int argc, char *argv[])
+@@ -872,8 +891,10 @@ main(int argc, char *argv[])
if (setup_tty(&wl, tty) < 0)
exit(EXIT_FAILURE);
@@ -179,7 +180,7 @@ index 8a711b4..54c567a 100644
if (setup_launcher_socket(&wl) < 0)
exit(EXIT_FAILURE);
diff --git a/meson_options.txt b/meson_options.txt
-index c862ecc..73ef2c3 100644
+index 239bd2d..99e4ec3 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -73,6 +73,13 @@ option(
diff --git a/poky/meta/recipes-graphics/wayland/weston/dont-use-plane-add-prop.patch b/poky/meta/recipes-graphics/wayland/weston/dont-use-plane-add-prop.patch
new file mode 100644
index 000000000..a4444e5d1
--- /dev/null
+++ b/poky/meta/recipes-graphics/wayland/weston/dont-use-plane-add-prop.patch
@@ -0,0 +1,23 @@
+Fix atomic modesetting with musl
+
+atomic modesetting seems to fail with drm weston backend and this patch fixes
+it, below errors are seen before weston exits
+
+atomic: couldn't commit new state: Invalid argument
+
+Upstream-Status: Submitted [https://gitlab.freedesktop.org/wayland/weston/-/issues/158]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+--- a/libweston/backend-drm/kms.c
++++ b/libweston/backend-drm/kms.c
+@@ -1168,8 +1168,8 @@ drm_pending_state_apply_atomic(struct dr
+ wl_list_for_each(plane, &b->plane_list, link) {
+ drm_debug(b, "\t\t[atomic] starting with plane %lu disabled\n",
+ (unsigned long) plane->plane_id);
+- plane_add_prop(req, plane, WDRM_PLANE_CRTC_ID, 0);
+- plane_add_prop(req, plane, WDRM_PLANE_FB_ID, 0);
++ //plane_add_prop(req, plane, WDRM_PLANE_CRTC_ID, 0);
++ //plane_add_prop(req, plane, WDRM_PLANE_FB_ID, 0);
+ }
+
+ flags |= DRM_MODE_ATOMIC_ALLOW_MODESET;
diff --git a/poky/meta/recipes-graphics/wayland/weston_8.0.0.bb b/poky/meta/recipes-graphics/wayland/weston_9.0.0.bb
index 8fef86482..0b037a377 100644
--- a/poky/meta/recipes-graphics/wayland/weston_8.0.0.bb
+++ b/poky/meta/recipes-graphics/wayland/weston_9.0.0.bb
@@ -10,9 +10,12 @@ SRC_URI = "https://wayland.freedesktop.org/releases/${BPN}-${PV}.tar.xz \
file://weston.desktop \
file://xwayland.weston-start \
file://0001-weston-launch-Provide-a-default-version-that-doesn-t.patch \
+ file://0001-tests-include-fcntl.h-for-open-O_RDWR-O_CLOEXEC-and-.patch \
"
-SRC_URI[md5sum] = "53e4810d852df0601d01fd986a5b22b3"
-SRC_URI[sha256sum] = "7518b49b2eaa1c3091f24671bdcc124fd49fc8f1af51161927afa4329c027848"
+
+SRC_URI_append_libc-musl = " file://dont-use-plane-add-prop.patch "
+
+SRC_URI[sha256sum] = "5cf5d6ce192e0eb15c1fc861a436bf21b5bb3b91dbdabbdebe83e1f83aa098fe"
UPSTREAM_CHECK_URI = "https://wayland.freedesktop.org/releases.html"