From a13476b9df4b7ac92a6e29e42025e7184ce035f6 Mon Sep 17 00:00:00 2001 From: Jan-Simon Möller Date: Tue, 21 May 2019 13:22:11 +0200 Subject: Add weston 6.0.0 for WM and HS rewrite MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit As requested for the WM and HS rewrite. Tested on m3, minnow, qemux86-64, rpi3. (cherry picked from commit fda5568cf4bc268088c9d1f925007d682bb7ef5d) Multiple commits to applied at once. Bug-AGL: SPEC-2444 Change-Id: I3f74b40213d4c4a65400a53fe9c57f52fe3b6096 Signed-off-by: Jan-Simon Möller --- .../wayland/weston/0001-make-error-portable.patch | 78 ++++++++++ ...ch-Provide-a-default-version-that-doesn-t.patch | 173 +++++++++++++++++++++ .../recipes-graphics/wayland/weston/weston.desktop | 9 ++ .../recipes-graphics/wayland/weston/weston.png | Bin 0 -> 2383 bytes .../wayland/weston/xwayland.weston-start | 7 + 5 files changed, 267 insertions(+) create mode 100644 meta-agl-bsp/recipes-graphics/wayland/weston/0001-make-error-portable.patch create mode 100644 meta-agl-bsp/recipes-graphics/wayland/weston/0001-weston-launch-Provide-a-default-version-that-doesn-t.patch create mode 100644 meta-agl-bsp/recipes-graphics/wayland/weston/weston.desktop create mode 100644 meta-agl-bsp/recipes-graphics/wayland/weston/weston.png create mode 100644 meta-agl-bsp/recipes-graphics/wayland/weston/xwayland.weston-start (limited to 'meta-agl-bsp/recipes-graphics/wayland/weston') diff --git a/meta-agl-bsp/recipes-graphics/wayland/weston/0001-make-error-portable.patch b/meta-agl-bsp/recipes-graphics/wayland/weston/0001-make-error-portable.patch new file mode 100644 index 000000000..09ec1559e --- /dev/null +++ b/meta-agl-bsp/recipes-graphics/wayland/weston/0001-make-error-portable.patch @@ -0,0 +1,78 @@ +From ad1d2161c811cff25d1684c33611f300adb753bc Mon Sep 17 00:00:00 2001 +From: Khem Raj +Date: Fri, 29 May 2015 20:56:00 -0700 +Subject: [PATCH] make error() portable + +error() is not posix but gnu extension so may not be available on all +kind of systemsi e.g. musl. + +Upstream-Status: Submitted + +Signed-off-by: Khem Raj + +--- + configure.ac | 2 ++ + libweston/weston-error.h | 20 ++++++++++++++++++++ + libweston/weston-launch.c | 2 +- + 3 files changed, 23 insertions(+), 1 deletion(-) + create mode 100644 libweston/weston-error.h + +diff --git a/configure.ac b/configure.ac +index 7aebbdb..dc9c802 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -109,6 +109,8 @@ AC_CHECK_DECL(CLOCK_MONOTONIC,[], + [[#include ]]) + AC_CHECK_HEADERS([execinfo.h]) + ++AC_CHECK_HEADERS([error.h]) ++ + AC_CHECK_FUNCS([mkostemp strchrnul initgroups posix_fallocate]) + + # check for libdrm as a build-time dependency only +diff --git a/libweston/weston-error.h b/libweston/weston-error.h +new file mode 100644 +index 0000000..2089d02 +--- /dev/null ++++ b/libweston/weston-error.h +@@ -0,0 +1,20 @@ ++#ifndef _WESTON_ERROR_H ++#define _WESTON_ERROR_H ++ ++#if defined(HAVE_ERROR_H) ++#include ++#else ++#include ++#include ++#define _weston_error(S, E, F, ...) do { \ ++ if (E) \ ++ err(S, F ": %s", ##__VA_ARGS__, strerror(E)); \ ++ else \ ++ err(S, F, ##__VA_ARGS__); \ ++} while(0) ++ ++#define error _weston_error ++#endif ++ ++#endif ++ +diff --git a/libweston/weston-launch.c b/libweston/weston-launch.c +index 1adcf21..166bf3b 100644 +--- a/libweston/weston-launch.c ++++ b/libweston/weston-launch.c +@@ -33,7 +33,6 @@ + #include + #include + +-#include + #include + + #include +@@ -59,6 +58,7 @@ + #endif + + #include "weston-launch.h" ++#include "weston-error.h" + + #define DRM_MAJOR 226 + diff --git a/meta-agl-bsp/recipes-graphics/wayland/weston/0001-weston-launch-Provide-a-default-version-that-doesn-t.patch b/meta-agl-bsp/recipes-graphics/wayland/weston/0001-weston-launch-Provide-a-default-version-that-doesn-t.patch new file mode 100644 index 000000000..d648538b8 --- /dev/null +++ b/meta-agl-bsp/recipes-graphics/wayland/weston/0001-weston-launch-Provide-a-default-version-that-doesn-t.patch @@ -0,0 +1,173 @@ +From b98b9dbda902225cdd972b5bff6a641c36cc7e90 Mon Sep 17 00:00:00 2001 +From: Tom Hochstein +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. + +Since starting weston as root is a valid use case by itself, if +PAM is not available, provide a default version of weston-launch +without non-root-user support. + +Upstream-Status: Pending + +Signed-off-by: Tom Hochstein +Signed-off-by: Jussi Kukkonen +Signed-off-by: Denys Dmytriyenko + +--- + configure.ac | 9 +++++++-- + libweston/weston-launch.c | 20 ++++++++++++++++++++ + 2 files changed, 27 insertions(+), 2 deletions(-) + +diff --git a/configure.ac b/configure.ac +index dc9c802..48cf5cb 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -451,13 +451,17 @@ AC_ARG_ENABLE(resize-optimization, + AS_IF([test "x$enable_resize_optimization" = "xyes"], + [AC_DEFINE([USE_RESIZE_POOL], [1], [Use resize memory pool as a performance optimization])]) + ++AC_ARG_WITH(pam, ++ AS_HELP_STRING([--with-pam], [Use PAM]), ++ [use_pam=$withval], [use_pam=yes]) + AC_ARG_ENABLE(weston-launch, [ --enable-weston-launch],, enable_weston_launch=yes) + AM_CONDITIONAL(BUILD_WESTON_LAUNCH, test x$enable_weston_launch = xyes) +-if test x$enable_weston_launch = xyes; then ++if test x$enable_weston_launch = xyes -a x$use_pam = xyes; then + WESTON_SEARCH_LIBS([PAM], [pam], [pam_open_session], [have_pam=yes], [have_pam=no]) + if test x$have_pam = xno; then +- AC_ERROR([weston-launch requires pam]) ++ AC_ERROR([PAM support is explicitly requested, but libpam couldn't be found]) + fi ++ AC_DEFINE([HAVE_PAM], [1], [Define if PAM is available]) + fi + + AM_CONDITIONAL(HAVE_PANGO, test "x$have_pango" = "xyes") +@@ -702,6 +706,7 @@ AC_MSG_RESULT([ + Enable developer documentation ${enable_devdocs} + + weston-launch utility ${enable_weston_launch} ++ PAM support ${use_pam} + systemd-login support ${have_systemd_login} + systemd notify support ${enable_systemd_notify} + +diff --git a/libweston/weston-launch.c b/libweston/weston-launch.c +index 166bf3b..6fb9232 100644 +--- a/libweston/weston-launch.c ++++ b/libweston/weston-launch.c +@@ -51,7 +51,9 @@ + + #include + #include ++#ifdef HAVE_PAM + #include ++#endif + + #ifdef HAVE_SYSTEMD_LOGIN + #include +@@ -101,8 +103,10 @@ drmSetMaster(int drm_fd) + #endif + + struct weston_launch { ++#ifdef HAVE_PAM + struct pam_conv pc; + pam_handle_t *ph; ++#endif + int tty; + int ttynr; + int sock[2]; +@@ -189,6 +193,7 @@ weston_launch_allowed(struct weston_launch *wl) + return false; + } + ++#ifdef HAVE_PAM + static int + pam_conversation_fn(int msg_count, + const struct pam_message **messages, +@@ -229,6 +234,7 @@ setup_pam(struct weston_launch *wl) + + return 0; + } ++#endif + + static int + setup_launcher_socket(struct weston_launch *wl) +@@ -422,6 +428,7 @@ quit(struct weston_launch *wl, int status) + close(wl->signalfd); + close(wl->sock[0]); + ++#ifdef HAVE_PAM + if (wl->new_user) { + err = pam_close_session(wl->ph, 0); + if (err) +@@ -429,6 +436,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)) +@@ -608,6 +616,7 @@ setup_session(struct weston_launch *wl, char **child_argv) + setenv("HOME", wl->pw->pw_dir, 1); + setenv("SHELL", wl->pw->pw_shell, 1); + ++#ifdef HAVE_PAM + env = pam_getenvlist(wl->ph); + if (env) { + for (i = 0; env[i]; ++i) { +@@ -616,6 +625,7 @@ setup_session(struct weston_launch *wl, char **child_argv) + } + free(env); + } ++#endif + + /* + * We open a new session, so it makes sense +@@ -683,8 +693,10 @@ static void + help(const char *name) + { + fprintf(stderr, "Usage: %s [args...] [-- [weston args..]]\n", name); ++#ifdef HAVE_PAM + fprintf(stderr, " -u, --user Start session as specified username,\n" + " e.g. -u joe, requires root.\n"); ++#endif + 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"); +@@ -698,7 +710,9 @@ main(int argc, char *argv[]) + int i, c; + char *tty = NULL; + struct option opts[] = { ++#ifdef HAVE_PAM + { "user", required_argument, NULL, 'u' }, ++#endif + { "tty", required_argument, NULL, 't' }, + { "verbose", no_argument, NULL, 'v' }, + { "help", no_argument, NULL, 'h' }, +@@ -710,9 +724,13 @@ main(int argc, char *argv[]) + while ((c = getopt_long(argc, argv, "u:t:vh", opts, &i)) != -1) { + switch (c) { + case 'u': ++#ifdef HAVE_PAM + wl.new_user = optarg; + if (getuid() != 0) + error(1, 0, "Permission denied. -u allowed for root only"); ++#else ++ error(1, 0, "-u is unsupported in this weston-launch build"); ++#endif + break; + case 't': + tty = optarg; +@@ -753,8 +771,10 @@ main(int argc, char *argv[]) + if (setup_tty(&wl, tty) < 0) + exit(EXIT_FAILURE); + ++#ifdef HAVE_PAM + if (wl.new_user && setup_pam(&wl) < 0) + exit(EXIT_FAILURE); ++#endif + + if (setup_launcher_socket(&wl) < 0) + exit(EXIT_FAILURE); diff --git a/meta-agl-bsp/recipes-graphics/wayland/weston/weston.desktop b/meta-agl-bsp/recipes-graphics/wayland/weston/weston.desktop new file mode 100644 index 000000000..1086ae8bf --- /dev/null +++ b/meta-agl-bsp/recipes-graphics/wayland/weston/weston.desktop @@ -0,0 +1,9 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Application +Name=Weston +Comment=Wayland Compostitor +Exec=weston +Icon=weston +Terminal=false +Categories=Utility; diff --git a/meta-agl-bsp/recipes-graphics/wayland/weston/weston.png b/meta-agl-bsp/recipes-graphics/wayland/weston/weston.png new file mode 100644 index 000000000..ea8b7e0e2 Binary files /dev/null and b/meta-agl-bsp/recipes-graphics/wayland/weston/weston.png differ diff --git a/meta-agl-bsp/recipes-graphics/wayland/weston/xwayland.weston-start b/meta-agl-bsp/recipes-graphics/wayland/weston/xwayland.weston-start new file mode 100644 index 000000000..b483c97cf --- /dev/null +++ b/meta-agl-bsp/recipes-graphics/wayland/weston/xwayland.weston-start @@ -0,0 +1,7 @@ +#!/bin/sh + +if type Xwayland >/dev/null 2>/dev/null; then + mkdir -p /tmp/.X11-unix + + add_weston_argument "--modules=xwayland.so" +fi -- cgit 1.2.3-korg