From 2cbf30d3b964dd0f7ca03c0b184dd1fb250c7a95 Mon Sep 17 00:00:00 2001 From: SupervisedThinking Date: Wed, 15 Dec 2021 14:00:01 +0100 Subject: [PATCH 1/6] wl: add virtual pkg for wayland displayserver --- packages/virtual/wl/package.mk | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 packages/virtual/wl/package.mk diff --git a/packages/virtual/wl/package.mk b/packages/virtual/wl/package.mk new file mode 100644 index 0000000000..4770867686 --- /dev/null +++ b/packages/virtual/wl/package.mk @@ -0,0 +1,16 @@ +# SPDX-License-Identifier: GPL-2.0 +# Copyright (C) 2021-present Team LibreELEC (https://libreelec.tv) + +PKG_NAME="wl" +PKG_VERSION="" +PKG_LICENSE="OSS" +PKG_SITE="https://wayland.freedesktop.org/" +PKG_URL="" +PKG_DEPENDS_TARGET="toolchain" +PKG_SECTION="virtual" +PKG_LONGDESC="Wayland is intended as a simpler replacement for X, easier to develop and maintain." + +# Compositor +if [ -n "${WINDOWMANAGER}" -a "${WINDOWMANAGER}" != "no" ]; then + PKG_DEPENDS_TARGET+=" ${WINDOWMANAGER}" +fi From 5c5d96605f4e587d2065ddc0812175051881dc4b Mon Sep 17 00:00:00 2001 From: SupervisedThinking Date: Mon, 6 Dec 2021 20:22:51 +0100 Subject: [PATCH 2/6] distribution/projetcs: updated displayserver & windowmanager opts - changed x11 to wl as suitable displayserver option for ARM based projects - changed the WINDOWMANAGER var from "none" to "no" if it's not in use to us the same naming scheme as for all other vars - set the WINDOWMANAGER for generic/wayland to weston --- projects/ARM/options | 8 ++++---- projects/Allwinner/options | 6 +++--- projects/Amlogic/options | 6 +++--- projects/Generic/devices/Generic/options | 4 ++-- projects/Generic/devices/wayland/options | 8 ++++---- projects/Generic/devices/x11/options | 2 +- projects/NXP/options | 6 +++--- projects/Qualcomm/devices/Dragonboard/options | 6 +++--- projects/RPi/options | 6 +++--- projects/Rockchip/options | 6 +++--- projects/Samsung/options | 6 +++--- 11 files changed, 32 insertions(+), 32 deletions(-) diff --git a/projects/ARM/options b/projects/ARM/options index b24fa32182..ec9d160515 100644 --- a/projects/ARM/options +++ b/projects/ARM/options @@ -105,9 +105,6 @@ # build and install hfs filesystem utilities (yes / no) HFSTOOLS="no" - # Windowmanager to use (fluxbox / none) - WINDOWMANAGER="none" - # Xorg Graphic drivers to use (all / r300,r600,nvidia) GRAPHIC_DRIVERS="mesa" @@ -147,8 +144,11 @@ # OpenGL(X) implementation to use (no / mesa) OPENGL="no" - # Displayserver to use (x11 / no) + # Displayserver to use (wl / no) DISPLAYSERVER="no" + # Windowmanager to use (weston / no) + WINDOWMANAGER="no" + # additional Firmware to use FIRMWARE="" diff --git a/projects/Allwinner/options b/projects/Allwinner/options index 0e83dfbe18..9d988e435a 100644 --- a/projects/Allwinner/options +++ b/projects/Allwinner/options @@ -37,11 +37,11 @@ # OpenGL(X) implementation to use (no / mesa) OPENGL="no" - # Displayserver to use (x11 / no) + # Displayserver to use (wl / no) DISPLAYSERVER="no" - # Windowmanager to use (ratpoison / fluxbox / none) - WINDOWMANAGER="none" + # Windowmanager to use (weston / no) + WINDOWMANAGER="no" # Xorg Graphic drivers to use (all / lima,panfrost) # Space separated list is supported, diff --git a/projects/Amlogic/options b/projects/Amlogic/options index 9e95422e82..f77a2ab6d8 100644 --- a/projects/Amlogic/options +++ b/projects/Amlogic/options @@ -46,11 +46,11 @@ # OpenGL(X) implementation to use (no / mesa) OPENGL="no" - # Displayserver to use (x11 / no) + # Displayserver to use (wl / no) DISPLAYSERVER="no" - # Windowmanager to use (fluxbox / none) - WINDOWMANAGER="none" + # Windowmanager to use (weston / no) + WINDOWMANAGER="no" # additional Firmware to use (dvb-firmware, misc-firmware, wlan-firmware) # Space separated list is supported, diff --git a/projects/Generic/devices/Generic/options b/projects/Generic/devices/Generic/options index ad64946caa..94475cd756 100644 --- a/projects/Generic/devices/Generic/options +++ b/projects/Generic/devices/Generic/options @@ -7,8 +7,8 @@ # Displayserver to use (weston / x11 / no) DISPLAYSERVER="no" -# Windowmanager to use (fluxbox / none) - WINDOWMANAGER="none" +# Windowmanager to use (fluxbox / weston / no) + WINDOWMANAGER="no" # KODI Player implementation to use (mesa / default) KODIPLAYER_DRIVER="mesa" diff --git a/projects/Generic/devices/wayland/options b/projects/Generic/devices/wayland/options index c9c0f1f332..948674a923 100644 --- a/projects/Generic/devices/wayland/options +++ b/projects/Generic/devices/wayland/options @@ -4,11 +4,11 @@ # OpenGL-ES implementation to use (mesa / no) OPENGLES="mesa" -# Displayserver to use (weston / x11 / no) - DISPLAYSERVER="weston" +# Displayserver to use (wl / x11 / no) + DISPLAYSERVER="wl" -# Windowmanager to use (fluxbox / none) - WINDOWMANAGER="none" +# Windowmanager to use (fluxbox / weston / no) + WINDOWMANAGER="weston" # KODI Player implementation to use (mesa / default) KODIPLAYER_DRIVER="mesa" diff --git a/projects/Generic/devices/x11/options b/projects/Generic/devices/x11/options index 9f0a2e7f71..a5ff6d8ffb 100644 --- a/projects/Generic/devices/x11/options +++ b/projects/Generic/devices/x11/options @@ -7,7 +7,7 @@ # Displayserver to use (weston / x11 / no) DISPLAYSERVER="x11" -# Windowmanager to use (fluxbox / none) +# Windowmanager to use (fluxbox / weston / no) WINDOWMANAGER="fluxbox" # KODI Player implementation to use (mesa / default) diff --git a/projects/NXP/options b/projects/NXP/options index 6c404dc3aa..300c16efec 100644 --- a/projects/NXP/options +++ b/projects/NXP/options @@ -38,11 +38,11 @@ # include uvesafb support (yes / no) UVESAFB_SUPPORT="no" - # Displayserver to use (x11 / no) + # Displayserver to use (wl / no) DISPLAYSERVER="no" - # Windowmanager to use (ratpoison / fluxbox / none) - WINDOWMANAGER="none" + # Windowmanager to use (weston / no) + WINDOWMANAGER="no" # Xorg Graphic drivers to use (all / etnaviv) # Space separated list is supported, diff --git a/projects/Qualcomm/devices/Dragonboard/options b/projects/Qualcomm/devices/Dragonboard/options index 3f7b31f77c..a43c08fb62 100644 --- a/projects/Qualcomm/devices/Dragonboard/options +++ b/projects/Qualcomm/devices/Dragonboard/options @@ -66,11 +66,11 @@ # include uvesafb support (yes / no) UVESAFB_SUPPORT="no" - # Displayserver to use (x11 / no) + # Displayserver to use (wl / no) DISPLAYSERVER="no" - # Windowmanager to use (ratpoison / fluxbox / none) - WINDOWMANAGER="none" + # Windowmanager to use (weston / no) + WINDOWMANAGER="no" # Xorg Graphic drivers to use (all / freedreno) # Space separated list is supported, diff --git a/projects/RPi/options b/projects/RPi/options index 7c3c8aa847..b4e8e7cb72 100644 --- a/projects/RPi/options +++ b/projects/RPi/options @@ -75,11 +75,11 @@ # OpenGL-ES implementation to use (no / bcm2835-driver / mesa) OPENGLES="mesa" - # Displayserver to use (x11 / no) + # Displayserver to use (wl / no) DISPLAYSERVER="no" - # Windowmanager to use (fluxbox / none) - WINDOWMANAGER="none" + # Windowmanager to use (weston / no) + WINDOWMANAGER="no" # Xorg Graphic drivers to use (all / vc4 / none) # Space separated list is supported, diff --git a/projects/Rockchip/options b/projects/Rockchip/options index 33fbfd6551..1c20771c9c 100644 --- a/projects/Rockchip/options +++ b/projects/Rockchip/options @@ -44,11 +44,11 @@ # OpenGL-ES implementation to use (no / libmali / mesa) OPENGLES="${OPENGLES:-mesa}" - # Displayserver to use (weston / no) + # Displayserver to use (wl / no) DISPLAYSERVER="no" - # Windowmanager to use (fluxbox / none) - WINDOWMANAGER="none" + # Windowmanager to use (weston / no) + WINDOWMANAGER="no" # Xorg Graphic drivers to use (all / lima,panfrost) # Space separated list is supported, diff --git a/projects/Samsung/options b/projects/Samsung/options index 1d7b976803..111b6472b9 100644 --- a/projects/Samsung/options +++ b/projects/Samsung/options @@ -48,11 +48,11 @@ # OpenGL(X) implementation to use (no / mesa) OPENGL="no" - # Displayserver to use (x11 / no) + # Displayserver to use (wl / no) DISPLAYSERVER="no" - # Windowmanager to use (fluxbox / none) - WINDOWMANAGER="none" + # Windowmanager to use (weston / no) + WINDOWMANAGER="no" # additional Firmware to use (dvb-firmware, misc-firmware, wlan-firmware) # Space separated list is supported, From 3869beae707f2591f79e8f003061cc8d8673f03d Mon Sep 17 00:00:00 2001 From: SupervisedThinking Date: Wed, 24 Nov 2021 16:56:43 +0100 Subject: [PATCH 3/6] virtual/x11: change "none" to "no" - build windowmanager if it's not set to "no" --- packages/virtual/x11/package.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/virtual/x11/package.mk b/packages/virtual/x11/package.mk index a6adada8f9..d70d0d9c87 100644 --- a/packages/virtual/x11/package.mk +++ b/packages/virtual/x11/package.mk @@ -20,7 +20,7 @@ PKG_LONGDESC="X11 is the Windowing system" # Tools PKG_DEPENDS_TARGET+=" xrandr setxkbmap" -if [ -n "${WINDOWMANAGER}" -a "${WINDOWMANAGER}" != "none" ]; then +if [ -n "${WINDOWMANAGER}" -a "${WINDOWMANAGER}" != "no" ]; then PKG_DEPENDS_TARGET+=" ${WINDOWMANAGER}" fi From eca639105ed63b865d49058f12cf91e4c0cfe7ad Mon Sep 17 00:00:00 2001 From: SupervisedThinking Date: Wed, 24 Nov 2021 17:25:54 +0100 Subject: [PATCH 4/6] replace DISPLAYSERVER var "weston" by "wl" - as the displayserver var is more likely a protocol than the windowmanager/compositor wl (short for wayland) should be used instead --- packages/graphics/mesa/package.mk | 2 +- packages/mediacenter/kodi/package.mk | 4 ++-- packages/multimedia/intel-vaapi-driver/package.mk | 2 +- packages/multimedia/libva/package.mk | 2 +- packages/wayland/libxkbcommon/package.mk | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/graphics/mesa/package.mk b/packages/graphics/mesa/package.mk index 73cc3e927a..7d1f123d15 100644 --- a/packages/graphics/mesa/package.mk +++ b/packages/graphics/mesa/package.mk @@ -38,7 +38,7 @@ if [ "${DISPLAYSERVER}" = "x11" ]; then PKG_DEPENDS_TARGET+=" xorgproto libXext libXdamage libXfixes libXxf86vm libxcb libX11 libxshmfence libXrandr libglvnd" export X11_INCLUDES= PKG_MESON_OPTS_TARGET+=" -Dplatforms=x11 -Ddri3=enabled -Dglx=dri -Dglvnd=true" -elif [ "${DISPLAYSERVER}" = "weston" ]; then +elif [ "${DISPLAYSERVER}" = "wl" ]; then PKG_DEPENDS_TARGET+=" wayland wayland-protocols" PKG_MESON_OPTS_TARGET+=" -Dplatforms=wayland -Ddri3=disabled -Dglx=disabled -Dglvnd=false" else diff --git a/packages/mediacenter/kodi/package.mk b/packages/mediacenter/kodi/package.mk index 53b806fcbf..e9e37f989c 100644 --- a/packages/mediacenter/kodi/package.mk +++ b/packages/mediacenter/kodi/package.mk @@ -30,7 +30,7 @@ configure_package() { PKG_DEPENDS_TARGET+=" libX11 libXext libdrm libXrandr" KODI_PLATFORM="-DCORE_PLATFORM_NAME=x11 \ -DAPP_RENDER_SYSTEM=gl" - elif [ "${DISPLAYSERVER}" = "weston" ]; then + elif [ "${DISPLAYSERVER}" = "wl" ]; then PKG_DEPENDS_TARGET+=" wayland waylandpp" CFLAGS+=" -DEGL_NO_X11" CXXFLAGS+=" -DEGL_NO_X11" @@ -273,7 +273,7 @@ post_makeinstall_target() { # set default display environment if [ "${DISPLAYSERVER}" = "x11" ]; then echo "DISPLAY=:0.0" >> ${INSTALL}/usr/lib/kodi/kodi.conf - elif [ "${DISPLAYSERVER}" = "weston" ]; then + elif [ "${DISPLAYSERVER}" = "wl" ]; then echo "WAYLAND_DISPLAY=wayland-0" >> ${INSTALL}/usr/lib/kodi/kodi.conf fi diff --git a/packages/multimedia/intel-vaapi-driver/package.mk b/packages/multimedia/intel-vaapi-driver/package.mk index 7e36710ebc..3bfe5e1d75 100644 --- a/packages/multimedia/intel-vaapi-driver/package.mk +++ b/packages/multimedia/intel-vaapi-driver/package.mk @@ -15,7 +15,7 @@ PKG_TOOLCHAIN="meson" if [ "${DISPLAYSERVER}" = "x11" ]; then DISPLAYSERVER_LIBVA="-Dwith_x11=yes -Dwith_wayland=no" -elif [ "${DISPLAYSERVER}" = "weston" ]; then +elif [ "${DISPLAYSERVER}" = "wl" ]; then DISPLAYSERVER_LIBVA="-Dwith_x11=no -Dwith_wayland=yes" else DISPLAYSERVER_LIBVA="-Dwith_x11=no -Dwith_wayland=no" diff --git a/packages/multimedia/libva/package.mk b/packages/multimedia/libva/package.mk index 3d8d708e7e..b16f773827 100644 --- a/packages/multimedia/libva/package.mk +++ b/packages/multimedia/libva/package.mk @@ -15,7 +15,7 @@ PKG_TOOLCHAIN="meson" if [ "${DISPLAYSERVER}" = "x11" ]; then PKG_DEPENDS_TARGET="toolchain libX11 libXext libXfixes libdrm" DISPLAYSERVER_LIBVA="-Dwith_x11=yes -Dwith_glx=no -Dwith_wayland=no" -elif [ "${DISPLAYSERVER}" = "weston" ]; then +elif [ "${DISPLAYSERVER}" = "wl" ]; then DISPLAYSERVER_LIBVA="-Dwith_x11=no -Dwith_glx=no -Dwith_wayland=yes" PKG_DEPENDS_TARGET="toolchain libdrm wayland" else diff --git a/packages/wayland/libxkbcommon/package.mk b/packages/wayland/libxkbcommon/package.mk index aa3c3d6764..ad3308d27f 100644 --- a/packages/wayland/libxkbcommon/package.mk +++ b/packages/wayland/libxkbcommon/package.mk @@ -16,7 +16,7 @@ PKG_MESON_OPTS_TARGET="-Denable-docs=false" if [ "${DISPLAYSERVER}" = "x11" ]; then PKG_MESON_OPTS_TARGET+=" -Denable-x11=true \ -Denable-wayland=false" -elif [ "${DISPLAYSERVER}" = "weston" ]; then +elif [ "${DISPLAYSERVER}" = "wl" ]; then PKG_MESON_OPTS_TARGET+=" -Denable-x11=false \ -Denable-wayland=true" else From d02656e162e615f0ffe24dcf129a7ef9a4be588c Mon Sep 17 00:00:00 2001 From: SupervisedThinking Date: Mon, 29 Nov 2021 18:37:29 +0100 Subject: [PATCH 5/6] weston: backport PR486 - WAYLAND_DISPLAY=wayland-1 --- ...id-setting-WAYLAND_DISPLAY=wayland-0.patch | 73 +++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 packages/wayland/weston/patches/weston-999.01-PR486-avoid-setting-WAYLAND_DISPLAY=wayland-0.patch diff --git a/packages/wayland/weston/patches/weston-999.01-PR486-avoid-setting-WAYLAND_DISPLAY=wayland-0.patch b/packages/wayland/weston/patches/weston-999.01-PR486-avoid-setting-WAYLAND_DISPLAY=wayland-0.patch new file mode 100644 index 0000000000..98d152ab83 --- /dev/null +++ b/packages/wayland/weston/patches/weston-999.01-PR486-avoid-setting-WAYLAND_DISPLAY=wayland-0.patch @@ -0,0 +1,73 @@ +From ae69381b6eb43ab63992906d1bf29ffd2b4df10d Mon Sep 17 00:00:00 2001 +From: Manuel Stoeckl +Date: Sun, 30 Aug 2020 18:49:18 -0400 +Subject: [PATCH] compositor: avoid setting WAYLAND_DISPLAY=wayland-0 + +This commit alters the way that Weston picks a Wayland display socket +name. Instead of using wl_display_add_socket_auto to look for the first +available name in wayland-0, wayland-1, .... to wayland-32, the code now +checks names wayland-1, wayland-2, .... up to wayland-32. + +This change is a workaround for a suboptimal behavior of +libwayland-client. If a client program calls wl_display_connect(NULL) and +the WAYLAND_DISPLAY environment variable is not set, then the program will +by default try to connect to 'wayland-0'. This is a problem when a +computer has a running Wayland compositor but is being accessed in some +other fashion, such as through an X session on a different virtual +terminal, over ssh, etc. Client programs launched through those means may +attempt to connect to an unrelated compositor. Changing libwayland +behavior to remove the default would also work, but a) libraries have +stronger backward compatibility expectations b) that would likely break +more people's setups than just changing Weston would. + +Signed-off-by: Manuel Stoeckl +--- + compositor/main.c | 23 ++++++++++++++--------- + 1 file changed, 14 insertions(+), 9 deletions(-) + +diff --git a/compositor/main.c b/compositor/main.c +index 2554b7627..0c8c8e027 100644 +--- a/compositor/main.c ++++ b/compositor/main.c +@@ -825,24 +825,29 @@ handle_primary_client_destroyed(struct wl_listener *listener, void *data) + static int + weston_create_listening_socket(struct wl_display *display, const char *socket_name) + { ++ char name_candidate[16]; ++ + if (socket_name) { + if (wl_display_add_socket(display, socket_name)) { + weston_log("fatal: failed to add socket: %s\n", + strerror(errno)); + return -1; + } ++ ++ setenv("WAYLAND_DISPLAY", socket_name, 1); ++ return 0; + } else { +- socket_name = wl_display_add_socket_auto(display); +- if (!socket_name) { +- weston_log("fatal: failed to add socket: %s\n", +- strerror(errno)); +- return -1; ++ for (int i = 1; i <= 32; i++) { ++ sprintf(name_candidate, "wayland-%d", i); ++ if (wl_display_add_socket(display, name_candidate) >= 0) { ++ setenv("WAYLAND_DISPLAY", name_candidate, 1); ++ return 0; ++ } + } ++ weston_log("fatal: failed to add socket: %s\n", ++ strerror(errno)); ++ return -1; + } +- +- setenv("WAYLAND_DISPLAY", socket_name, 1); +- +- return 0; + } + + WL_EXPORT void * +-- +GitLab + From 183ec95eff031fdc943085bef86e46837d3343f0 Mon Sep 17 00:00:00 2001 From: SupervisedThinking Date: Mon, 29 Nov 2021 18:37:46 +0100 Subject: [PATCH 6/6] kodi: set WAYLAND_DISPLAY=wayland-1 --- packages/mediacenter/kodi/package.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/mediacenter/kodi/package.mk b/packages/mediacenter/kodi/package.mk index e9e37f989c..c8d4ea12a4 100644 --- a/packages/mediacenter/kodi/package.mk +++ b/packages/mediacenter/kodi/package.mk @@ -274,7 +274,7 @@ post_makeinstall_target() { if [ "${DISPLAYSERVER}" = "x11" ]; then echo "DISPLAY=:0.0" >> ${INSTALL}/usr/lib/kodi/kodi.conf elif [ "${DISPLAYSERVER}" = "wl" ]; then - echo "WAYLAND_DISPLAY=wayland-0" >> ${INSTALL}/usr/lib/kodi/kodi.conf + echo "WAYLAND_DISPLAY=wayland-1" >> ${INSTALL}/usr/lib/kodi/kodi.conf fi # nvidia: Enable USLEEP to reduce CPU load while rendering