From a123e940a042dd8ece343466753c3e5ef1db36a3 Mon Sep 17 00:00:00 2001 From: Samuli Piippo Date: Wed, 16 Aug 2017 11:16:57 +0300 Subject: tegra: include older version of weston for Drive CX The NVidia toolchain is dependent on using older version of weston/wayland than poky/pyro currently provides. Add recipes from poky/krogoth which was still working. Change-Id: Iaab46edcdf01afd7eed30747395c80fb4bd68c39 Reviewed-by: Mikko Gronoff --- ...1-configure.ac-Fix-wayland-protocols-path.patch | 29 ++++ .../weston/weston/0001-make-error-portable.patch | 80 ++++++++++ ...ch-Provide-a-default-version-that-doesn-t.patch | 174 +++++++++++++++++++++ .../add-config-option-for-no-input-device.patch | 125 +++++++++++++++ .../weston/disable-wayland-scanner-pkg-check.patch | 13 -- .../weston/explicit-enable-disable-systemd.patch | 70 +++++++++ .../recipes/weston/weston/libsystemd.patch | 53 +++++++ .../weston/make-lcms-explicitly-configurable.patch | 43 +++++ .../make-libwebp-explicitly-configurable.patch | 37 +++++ .../recipes/weston/weston/weston.desktop | 9 ++ .../recipes/weston/weston/weston.png | Bin 0 -> 2383 bytes .../recipes/weston/weston/xwayland.weston-start | 7 + .../recipes/weston/weston_%.bbappend | 1 + meta-nvidia-extras/recipes/weston/weston_1.9.0.bb | 104 ++++++++++++ 14 files changed, 732 insertions(+), 13 deletions(-) create mode 100644 meta-nvidia-extras/recipes/weston/weston/0001-configure.ac-Fix-wayland-protocols-path.patch create mode 100644 meta-nvidia-extras/recipes/weston/weston/0001-make-error-portable.patch create mode 100644 meta-nvidia-extras/recipes/weston/weston/0001-weston-launch-Provide-a-default-version-that-doesn-t.patch create mode 100644 meta-nvidia-extras/recipes/weston/weston/add-config-option-for-no-input-device.patch delete mode 100644 meta-nvidia-extras/recipes/weston/weston/disable-wayland-scanner-pkg-check.patch create mode 100644 meta-nvidia-extras/recipes/weston/weston/explicit-enable-disable-systemd.patch create mode 100644 meta-nvidia-extras/recipes/weston/weston/libsystemd.patch create mode 100644 meta-nvidia-extras/recipes/weston/weston/make-lcms-explicitly-configurable.patch create mode 100644 meta-nvidia-extras/recipes/weston/weston/make-libwebp-explicitly-configurable.patch create mode 100644 meta-nvidia-extras/recipes/weston/weston/weston.desktop create mode 100644 meta-nvidia-extras/recipes/weston/weston/weston.png create mode 100644 meta-nvidia-extras/recipes/weston/weston/xwayland.weston-start create mode 100644 meta-nvidia-extras/recipes/weston/weston_1.9.0.bb diff --git a/meta-nvidia-extras/recipes/weston/weston/0001-configure.ac-Fix-wayland-protocols-path.patch b/meta-nvidia-extras/recipes/weston/weston/0001-configure.ac-Fix-wayland-protocols-path.patch new file mode 100644 index 0000000..5f4d79c --- /dev/null +++ b/meta-nvidia-extras/recipes/weston/weston/0001-configure.ac-Fix-wayland-protocols-path.patch @@ -0,0 +1,29 @@ +From 1cfc1434a5d385a74de593ec7601674dba39e2fe Mon Sep 17 00:00:00 2001 +From: Jussi Kukkonen +Date: Wed, 11 May 2016 16:16:30 +0300 +Subject: [PATCH] configure.ac: Fix wayland-protocols path + +The wayland-protocols directory is used during build: Fix the path +to point to sysroot specified in recipe. + +Normally PKG_CONFIG_SYSROOT_DIR could be used in configure.ac but that +breaks multilib weston as it would point to multilib sysroot when the +(allarch) wayland-protocols is actually in the machine sysroot. + +Signed-off-by: Jussi Kukkonen +Upstream-Status: Inappropriate [embedded specific] +--- + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/configure.ac ++++ b/configure.ac +@@ -187,7 +187,7 @@ PKG_CHECK_MODULES(LIBINPUT_BACKEND, [lib + PKG_CHECK_MODULES(COMPOSITOR, [$COMPOSITOR_MODULES]) + + PKG_CHECK_MODULES(WAYLAND_PROTOCOLS, [wayland-protocols >= 1.7], +- [ac_wayland_protocols_pkgdatadir=`$PKG_CONFIG --variable=pkgdatadir wayland-protocols`]) ++ [ac_wayland_protocols_pkgdatadir=${WAYLAND_PROTOCOLS_SYSROOT_DIR}`$PKG_CONFIG --variable=pkgdatadir wayland-protocols`]) + AC_SUBST(WAYLAND_PROTOCOLS_DATADIR, $ac_wayland_protocols_pkgdatadir) + + AC_ARG_ENABLE(wayland-compositor, [ --enable-wayland-compositor],, diff --git a/meta-nvidia-extras/recipes/weston/weston/0001-make-error-portable.patch b/meta-nvidia-extras/recipes/weston/weston/0001-make-error-portable.patch new file mode 100644 index 0000000..148848d --- /dev/null +++ b/meta-nvidia-extras/recipes/weston/weston/0001-make-error-portable.patch @@ -0,0 +1,80 @@ +From c22e90365d89346258394833cbcad03ff32b2e27 Mon Sep 17 00:00:00 2001 +From: Khem Raj +Date: Fri, 29 May 2015 20:56:00 -0700 +Subject: [PATCH weston] make error() portable + +error() is not posix but gnu extension so may not be available on all +kind of systemsi e.g. musl. + +Signed-off-by: Khem Raj +--- +Upstream-Status: Submitted + + configure.ac | 2 ++ + src/weston-error.h | 20 ++++++++++++++++++++ + src/weston-launch.c | 2 +- + 3 files changed, 23 insertions(+), 1 deletion(-) + create mode 100644 src/weston-error.h + +diff --git a/configure.ac b/configure.ac +index 263fc22..f52cd62 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -57,6 +57,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]) + + COMPOSITOR_MODULES="wayland-server >= 1.7.93 pixman-1 >= 0.25.2" +diff --git a/src/weston-error.h b/src/weston-error.h +new file mode 100644 +index 0000000..2089d02 +--- /dev/null ++++ b/src/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/src/weston-launch.c b/src/weston-launch.c +index 10c66de..3e6d30a 100644 +--- a/src/weston-launch.c ++++ b/src/weston-launch.c +@@ -30,7 +30,6 @@ + #include + #include + +-#include + #include + + #include +@@ -56,6 +55,7 @@ + #endif + + #include "weston-launch.h" ++#include "weston-error.h" + + #define DRM_MAJOR 226 + +-- +2.1.4 + diff --git a/meta-nvidia-extras/recipes/weston/weston/0001-weston-launch-Provide-a-default-version-that-doesn-t.patch b/meta-nvidia-extras/recipes/weston/weston/0001-weston-launch-Provide-a-default-version-that-doesn-t.patch new file mode 100644 index 0000000..70b9888 --- /dev/null +++ b/meta-nvidia-extras/recipes/weston/weston/0001-weston-launch-Provide-a-default-version-that-doesn-t.patch @@ -0,0 +1,174 @@ +From 8ff6ed03ec4079f32e9b34085414e57be4730e04 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 +--- + configure.ac | 9 +++++++-- + libweston/weston-launch.c | 20 ++++++++++++++++++++ + 2 files changed, 27 insertions(+), 2 deletions(-) + +diff --git a/configure.ac b/configure.ac +index 46cb2c7..bb45f46 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -435,13 +435,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") +@@ -701,6 +705,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 0491896..07e7469 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 +@@ -93,8 +95,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]; +@@ -181,6 +185,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, +@@ -221,6 +226,7 @@ setup_pam(struct weston_launch *wl) + + return 0; + } ++#endif + + static int + setup_launcher_socket(struct weston_launch *wl) +@@ -414,6 +420,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) +@@ -421,6 +428,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)) +@@ -600,6 +608,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) { +@@ -608,6 +617,7 @@ setup_session(struct weston_launch *wl, char **child_argv) + } + free(env); + } ++#endif + + /* + * We open a new session, so it makes sense +@@ -675,7 +685,9 @@ 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"); ++#endif + fprintf(stderr, " -t, --tty Start session on alternative tty\n"); + fprintf(stderr, " -v, --verbose Be verbose\n"); + fprintf(stderr, " -h, --help Display this help message\n"); +@@ -688,7 +700,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' }, +@@ -700,9 +714,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; +@@ -740,8 +758,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); +-- +2.1.4 + diff --git a/meta-nvidia-extras/recipes/weston/weston/add-config-option-for-no-input-device.patch b/meta-nvidia-extras/recipes/weston/weston/add-config-option-for-no-input-device.patch new file mode 100644 index 0000000..93376ef --- /dev/null +++ b/meta-nvidia-extras/recipes/weston/weston/add-config-option-for-no-input-device.patch @@ -0,0 +1,125 @@ +From 6c89292024cc08d4499916dc153c354175bd81c4 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Daniel=20D=C3=ADaz?= +Date: Fri, 21 Oct 2016 14:03:13 -0500 +Subject: [PATCH] Add configuration option for no input device. +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +[Backported from master, 75b7197.) + +As it has been discussed in the past [1], running Weston +without any input device at launch might be beneficial for +some use cases. + +Certainly, it's best for the vast majority of users (and +the project) to require an input device to be present, as +to avoid frustration and hassle, but for those brave souls +that so prefer, this patch lets them run without any input +device at all. + +This introduces a simple configuration in weston.ini: + [core] + require-input=true + +True is the default, so no behavioral change is introduced. + +[1] https://lists.freedesktop.org/archives/wayland-devel/2015-November/025193.html + +Signed-off-by: Daniel Díaz +Reviewed-by: Peter Hutterer +Reviewed-by: Daniel Stone +--- + man/weston.ini.man | 5 +++++ + src/compositor.h | 4 ++++ + src/libinput-seat.c | 6 ++++++ + src/main.c | 5 +++++ + weston.ini.in | 1 + + 5 files changed, 21 insertions(+) + +diff --git a/man/weston.ini.man b/man/weston.ini.man +index a9b6026..668b16f 100644 +--- a/man/weston.ini.man ++++ b/man/weston.ini.man +@@ -169,6 +169,11 @@ time, the one specified in the command-line will be used. On the other + hand, if none of these sets the value, default idle timeout will be + set to 300 seconds. + .RS ++.PP ++.RE ++.TP 7 ++.BI "require-input=" true ++require an input device for launch + + .SH "LIBINPUT SECTION" + The +diff --git a/src/compositor.h b/src/compositor.h +index c4c81f0..292a412 100644 +--- a/src/compositor.h ++++ b/src/compositor.h +@@ -701,6 +701,10 @@ struct weston_compositor { + + void *user_data; + void (*exit)(struct weston_compositor *c); ++ ++ /* Whether to let the compositor run without any input device. */ ++ bool require_input; ++ + }; + + struct weston_buffer { +diff --git a/src/libinput-seat.c b/src/libinput-seat.c +index c9f9ed2..1c4c358 100644 +--- a/src/libinput-seat.c ++++ b/src/libinput-seat.c +@@ -250,6 +250,12 @@ udev_input_enable(struct udev_input *input) + devices_found = 1; + } + ++ if (devices_found == 0 && !c->require_input) { ++ weston_log("warning: no input devices found, but none required " ++ "as per configuration.\n"); ++ return 0; ++ } ++ + if (devices_found == 0) { + weston_log( + "warning: no input devices on entering Weston. " +diff --git a/src/main.c b/src/main.c +index a98570e..b8632e9 100644 +--- a/src/main.c ++++ b/src/main.c +@@ -658,6 +658,7 @@ int main(int argc, char *argv[]) + struct wl_client *primary_client; + struct wl_listener primary_client_destroyed; + struct weston_seat *seat; ++ int require_input; + + const struct weston_option core_options[] = { + { WESTON_OPTION_STRING, "backend", 'B', &backend }, +@@ -737,6 +738,10 @@ int main(int argc, char *argv[]) + if (weston_compositor_init_config(ec, config) < 0) + goto out_signals; + ++ weston_config_section_get_bool(section, "require-input", ++ &require_input, true); ++ ec->require_input = require_input; ++ + if (backend_init(ec, &argc, argv, config) < 0) { + weston_log("fatal: failed to create compositor backend\n"); + goto out_signals; +diff --git a/weston.ini.in b/weston.ini.in +index 06b51df..e9ef992 100644 +--- a/weston.ini.in ++++ b/weston.ini.in +@@ -2,6 +2,7 @@ + #modules=xwayland.so,cms-colord.so + #shell=desktop-shell.so + #gbm-format=xrgb2101010 ++#require-input=true + + [shell] + background-image=/usr/share/backgrounds/gnome/Aqua.jpg +-- +1.9.1 + diff --git a/meta-nvidia-extras/recipes/weston/weston/disable-wayland-scanner-pkg-check.patch b/meta-nvidia-extras/recipes/weston/weston/disable-wayland-scanner-pkg-check.patch deleted file mode 100644 index 062da5c..0000000 --- a/meta-nvidia-extras/recipes/weston/weston/disable-wayland-scanner-pkg-check.patch +++ /dev/null @@ -1,13 +0,0 @@ -Index: weston-1.5.0/configure.ac -=================================================================== ---- weston-1.5.0.orig/configure.ac -+++ weston-1.5.0/configure.ac -@@ -503,7 +503,7 @@ if test x$wayland_scanner = x; then - AC_MSG_ERROR([wayland-scanner is needed to compile weston]) - fi - --PKG_CHECK_MODULES(WAYLAND_SCANNER, wayland-scanner) -+#PKG_CHECK_MODULES(WAYLAND_SCANNER, wayland-scanner) - - AC_CONFIG_FILES([Makefile src/version.h src/weston.pc]) - diff --git a/meta-nvidia-extras/recipes/weston/weston/explicit-enable-disable-systemd.patch b/meta-nvidia-extras/recipes/weston/weston/explicit-enable-disable-systemd.patch new file mode 100644 index 0000000..a40eaf1 --- /dev/null +++ b/meta-nvidia-extras/recipes/weston/weston/explicit-enable-disable-systemd.patch @@ -0,0 +1,70 @@ +From 8e1efcd40b3bad81c83744e2e120d70c2b567ef2 Mon Sep 17 00:00:00 2001 +From: Frederico Cadete +Date: Mon, 28 Sep 2015 00:30:10 +0200 +Subject: configure.ac: add explicit enable/disable for systemd-login support + +Otherwise, auto-enable depending on whether the system has the necessary +libraries. + +[Updated help text as per pq suggestion -- bwh] + +Reviewed-by: Bryce Harrington +Reviewed-by: Pekka Paalanen +Tested-by: Pekka Paalanen + +Upstream-Status: Backport +Backported from Weston git: +http://cgit.freedesktop.org/wayland/weston/commit/?id=8e1efc + +Signed-off-by: Joshua Lock + +diff --git a/configure.ac b/configure.ac +index a9cd429..67e80d0 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -380,18 +380,30 @@ 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])]) + +-PKG_CHECK_MODULES(SYSTEMD_LOGIN, +- [libsystemd >= 209], +- [have_systemd_login_209=yes;have_systemd_login=yes], +- [have_systemd_login_209=no;have_systemd_login=no]) +- +-# Older versions of systemd package systemd-login separately. Fall back on that +-AS_IF([test x$have_systemd_login != xyes],[ +- PKG_CHECK_MODULES(SYSTEMD_LOGIN, +- [libsystemd-login >= 198], +- [have_systemd_login=yes], +- [have_systemd_login=no]) +- ]) ++AC_ARG_ENABLE(systemd-login, ++ AS_HELP_STRING([--enable-systemd-login], ++ [Enable logind support]),, ++ enable_systemd_login=auto) ++if test x$enable_systemd_login != xno; then ++ PKG_CHECK_MODULES(SYSTEMD_LOGIN, ++ [libsystemd >= 209], ++ [have_systemd_login_209=yes;have_systemd_login=yes], ++ [have_systemd_login_209=no;have_systemd_login=no]) ++ ++ # Older versions of systemd package systemd-login separately. Fall back on that ++ AS_IF([test x$have_systemd_login != xyes],[ ++ PKG_CHECK_MODULES(SYSTEMD_LOGIN, ++ [libsystemd-login >= 198], ++ [have_systemd_login=yes], ++ [have_systemd_login=no]) ++ ]) ++else ++ have_systemd_login=no ++fi ++ ++if test "x$have_systemd_login" = "xno" -a "x$enable_systemd_login" = "xyes"; then ++ AC_MSG_ERROR([systemd-login support explicitly enabled, but can't find libsystemd>=209 or libsystemd-login]) ++fi + + AS_IF([test "x$have_systemd_login" = "xyes"], + [AC_DEFINE([HAVE_SYSTEMD_LOGIN], [1], [Have systemd-login])]) +-- +cgit v0.10.2 + diff --git a/meta-nvidia-extras/recipes/weston/weston/libsystemd.patch b/meta-nvidia-extras/recipes/weston/weston/libsystemd.patch new file mode 100644 index 0000000..2d28d56 --- /dev/null +++ b/meta-nvidia-extras/recipes/weston/weston/libsystemd.patch @@ -0,0 +1,53 @@ +From 5eb025a867b42f8bc7bc73279eac8de58e51a13e Mon Sep 17 00:00:00 2001 +From: Frederico Cadete +Date: Mon, 28 Sep 2015 00:30:09 +0200 +Subject: configure.ac: add support for new versions of systemd + +Starting from systemd version 209, a single libsystemd.pc is provided. +For previous versions, fall back on libsystemd-login.pc. + +Signed-off-by: Frederico Cadete +Reviewed-by: Bryce Harrington +Reviewed-by: Derek Foreman + +Upstream-Status: Backport +Backported from Weston git: +http://cgit.freedesktop.org/wayland/weston/commit/?id=5eb025 + +Signed-off-by: Joshua Lock + +diff --git a/configure.ac b/configure.ac +index 045291c..a9cd429 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -380,14 +380,23 @@ 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])]) + +-PKG_CHECK_MODULES(SYSTEMD_LOGIN, [libsystemd-login >= 198], +- [have_systemd_login=yes], [have_systemd_login=no]) ++PKG_CHECK_MODULES(SYSTEMD_LOGIN, ++ [libsystemd >= 209], ++ [have_systemd_login_209=yes;have_systemd_login=yes], ++ [have_systemd_login_209=no;have_systemd_login=no]) ++ ++# Older versions of systemd package systemd-login separately. Fall back on that ++AS_IF([test x$have_systemd_login != xyes],[ ++ PKG_CHECK_MODULES(SYSTEMD_LOGIN, ++ [libsystemd-login >= 198], ++ [have_systemd_login=yes], ++ [have_systemd_login=no]) ++ ]) ++ + AS_IF([test "x$have_systemd_login" = "xyes"], + [AC_DEFINE([HAVE_SYSTEMD_LOGIN], [1], [Have systemd-login])]) + AM_CONDITIONAL(HAVE_SYSTEMD_LOGIN, test "x$have_systemd_login" = "xyes") + +-PKG_CHECK_MODULES(SYSTEMD_LOGIN_209, [libsystemd-login >= 209], +- [have_systemd_login_209=yes], [have_systemd_login_209=no]) + AS_IF([test "x$have_systemd_login_209" = "xyes"], + [AC_DEFINE([HAVE_SYSTEMD_LOGIN_209], [1], [Have systemd-login >= 209])]) + +-- +cgit v0.10.2 + diff --git a/meta-nvidia-extras/recipes/weston/weston/make-lcms-explicitly-configurable.patch b/meta-nvidia-extras/recipes/weston/weston/make-lcms-explicitly-configurable.patch new file mode 100644 index 0000000..35e6d6f --- /dev/null +++ b/meta-nvidia-extras/recipes/weston/weston/make-lcms-explicitly-configurable.patch @@ -0,0 +1,43 @@ +weston-1.5.0/configure.ac: make lcms explicitly configurable + +The lcms package is outside of openembedded-core, so make it +explicitly configurable. Make it deterministic, so that if lcms +dependencies are missing, autoconf throws a fatal error. Follow +upstream style to make it more likely to be merged. + +Upstream-Status: Pending + +Index: weston-1.5.0/configure.ac +=================================================================== +--- weston-1.5.0.orig/configure.ac ++++ weston-1.5.0/configure.ac +@@ -491,12 +491,24 @@ AC_ARG_ENABLE(demo-clients-install, + enable_demo_clients_install=no) + AM_CONDITIONAL(INSTALL_DEMO_CLIENTS, [test "x$enable_demo_clients_install" = "xyes"]) + +-PKG_CHECK_MODULES(LCMS, lcms2, +- [have_lcms=yes], [have_lcms=no]) +-if test "x$have_lcms" = xyes; then +- AC_DEFINE(HAVE_LCMS, 1, [Have lcms support]) ++AC_ARG_ENABLE(lcms, ++ AS_HELP_STRING([--disable-lcms], ++ [Disable lcms support]),, ++ enable_lcms=auto) ++AM_CONDITIONAL(HAVE_LCMS, [test "x$enable_lcms" = xyes]) ++if test "x$enable_lcms" != "xno"; then ++ PKG_CHECK_MODULES(LCMS, ++ lcms2, ++ [have_lcms=yes], ++ [have_lcms=no]) ++ if test "x$have_lcms" = "xno" -a "x$enable_lcms" = "xyes"; then ++ AC_MSG_ERROR([lcms support explicitly requested, but lcms couldn't be found]) ++ fi ++ if test "x$have_lcms" = "xyes"; then ++ enable_lcms=yes ++ AC_DEFINE(HAVE_LCMS, 1, [Have lcms support]) ++ fi + fi +-AM_CONDITIONAL(HAVE_LCMS, [test "x$have_lcms" = xyes]) + + AC_PATH_PROG([wayland_scanner], [wayland-scanner]) + if test x$wayland_scanner = x; then diff --git a/meta-nvidia-extras/recipes/weston/weston/make-libwebp-explicitly-configurable.patch b/meta-nvidia-extras/recipes/weston/weston/make-libwebp-explicitly-configurable.patch new file mode 100644 index 0000000..ad07d4f --- /dev/null +++ b/meta-nvidia-extras/recipes/weston/weston/make-libwebp-explicitly-configurable.patch @@ -0,0 +1,37 @@ + +The libwebp package is outside of openembedded-core, so make it +explicitly configurable. Make it deterministic, so that if libwebp +dependencies are missing, autoconf throws a fatal error. + +Upstream-Status: Pending + +Index: weston-1.5.0/configure.ac +=================================================================== +--- weston-1.5.0.orig/configure.ac ++++ weston-1.5.0/configure.ac +@@ -268,9 +268,22 @@ fi + + PKG_CHECK_MODULES(PIXMAN, [pixman-1]) + PKG_CHECK_MODULES(PNG, [libpng]) +-PKG_CHECK_MODULES(WEBP, [libwebp], [have_webp=yes], [have_webp=no]) +-AS_IF([test "x$have_webp" = "xyes"], +- [AC_DEFINE([HAVE_WEBP], [1], [Have webp])]) ++AC_ARG_ENABLE(webp, ++ AS_HELP_STRING([--disable-webp], ++ [Disable libwebp support]),, ++ enable_webp=auto) ++AM_CONDITIONAL(HAVE_WEBP, [test "x$enable_webp" = xyes]) ++AS_IF([test "x$enable_webp" != "xno"], ++ PKG_CHECK_MODULES(WEBP, ++ [libwebp], ++ [have_webp=yes], ++ [have_webp=no]) ++ AS_IF([test "x$have_webp" = "xno" -a "x$enable_webp" = "xyes"], ++ AC_MSG_ERROR([libwebp support explicitly request, but lipwebp could not be found])) ++ AS_IF([test "x$have_webp" = "xyes"], ++ [enable_webp=yes] ++ [AC_DEFINE([HAVE_WEBP], [1], [Have webp])]) ++) + + AC_ARG_ENABLE(vaapi-recorder, [ --enable-vaapi-recorder],, + enable_vaapi_recorder=auto) diff --git a/meta-nvidia-extras/recipes/weston/weston/weston.desktop b/meta-nvidia-extras/recipes/weston/weston/weston.desktop new file mode 100644 index 0000000..1086ae8 --- /dev/null +++ b/meta-nvidia-extras/recipes/weston/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-nvidia-extras/recipes/weston/weston/weston.png b/meta-nvidia-extras/recipes/weston/weston/weston.png new file mode 100644 index 0000000..ea8b7e0 Binary files /dev/null and b/meta-nvidia-extras/recipes/weston/weston/weston.png differ diff --git a/meta-nvidia-extras/recipes/weston/weston/xwayland.weston-start b/meta-nvidia-extras/recipes/weston/weston/xwayland.weston-start new file mode 100644 index 0000000..b483c97 --- /dev/null +++ b/meta-nvidia-extras/recipes/weston/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 diff --git a/meta-nvidia-extras/recipes/weston/weston_%.bbappend b/meta-nvidia-extras/recipes/weston/weston_%.bbappend index 22f0f11..e9a2154 100644 --- a/meta-nvidia-extras/recipes/weston/weston_%.bbappend +++ b/meta-nvidia-extras/recipes/weston/weston_%.bbappend @@ -28,5 +28,6 @@ ############################################################################ PACKAGECONFIG_remove = "kms" +DEPENDS += "drm" TARGET_CFLAGS += "-DWIN_INTERFACE_CUSTOM" diff --git a/meta-nvidia-extras/recipes/weston/weston_1.9.0.bb b/meta-nvidia-extras/recipes/weston/weston_1.9.0.bb new file mode 100644 index 0000000..3fdfbab --- /dev/null +++ b/meta-nvidia-extras/recipes/weston/weston_1.9.0.bb @@ -0,0 +1,104 @@ +SUMMARY = "Weston, a Wayland compositor" +DESCRIPTION = "Weston is the reference implementation of a Wayland compositor" +HOMEPAGE = "http://wayland.freedesktop.org" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://COPYING;md5=d79ee9e66bb0f95d3386a7acae780b70 \ + file://src/compositor.c;endline=23;md5=1d535fed266cf39f6d8c0647f52ac331" + +SRC_URI = "http://wayland.freedesktop.org/releases/${BPN}-${PV}.tar.xz \ + file://weston.png \ + file://weston.desktop \ + file://make-lcms-explicitly-configurable.patch \ + file://make-libwebp-explicitly-configurable.patch \ + file://0001-make-error-portable.patch \ + file://libsystemd.patch \ + file://explicit-enable-disable-systemd.patch \ + file://add-config-option-for-no-input-device.patch \ +" +SRC_URI[md5sum] = "66bbba12f546570b4d97f676bc79a28e" +SRC_URI[sha256sum] = "9c1b03f3184fa0b0dfdf67e215048085156e1a2ca344af6613fed36794ac48cf" + +inherit autotools pkgconfig useradd distro_features_check +# depends on virtual/egl +REQUIRED_DISTRO_FEATURES = "opengl" + +DEPENDS = "libxkbcommon gdk-pixbuf pixman cairo glib-2.0 jpeg" +DEPENDS += "wayland libinput virtual/egl pango wayland-native" + +EXTRA_OECONF = "--enable-setuid-install \ + --enable-simple-clients \ + --enable-clients \ + --enable-demo-clients-install \ + --disable-rpi-compositor \ + --disable-rdp-compositor \ + " + +EXTRA_OECONF_append_qemux86 = "\ + WESTON_NATIVE_BACKEND=fbdev-backend.so \ + " +EXTRA_OECONF_append_qemux86-64 = "\ + WESTON_NATIVE_BACKEND=fbdev-backend.so \ + " +PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'kms fbdev wayland egl', '', d)} \ + ${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'x11', '', d)} \ + ${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'launch', '', d)} \ + ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'systemd', '', d)} \ + " +# +# Compositor choices +# +# Weston on KMS +PACKAGECONFIG[kms] = "--enable-drm-compositor,--disable-drm-compositor,drm udev virtual/mesa mtdev" +# Weston on Wayland (nested Weston) +PACKAGECONFIG[wayland] = "--enable-wayland-compositor,--disable-wayland-compositor,virtual/mesa" +# Weston on X11 +PACKAGECONFIG[x11] = "--enable-x11-compositor,--disable-x11-compositor,virtual/libx11 libxcb libxcb libxcursor cairo" +# Headless Weston +PACKAGECONFIG[headless] = "--enable-headless-compositor,--disable-headless-compositor" +# Weston on framebuffer +PACKAGECONFIG[fbdev] = "--enable-fbdev-compositor,--disable-fbdev-compositor,udev mtdev" +# weston-launch +PACKAGECONFIG[launch] = "--enable-weston-launch,--disable-weston-launch,libpam drm" +# VA-API desktop recorder +PACKAGECONFIG[vaapi] = "--enable-vaapi-recorder,--disable-vaapi-recorder,libva" +# Weston with EGL support +PACKAGECONFIG[egl] = "--enable-egl --enable-simple-egl-clients,--disable-egl --disable-simple-egl-clients,virtual/egl" +# Weston with cairo glesv2 support +PACKAGECONFIG[cairo-glesv2] = "--with-cairo-glesv2,--with-cairo=image,cairo" +# Weston with lcms support +PACKAGECONFIG[lcms] = "--enable-lcms,--disable-lcms,lcms" +# Weston with webp support +PACKAGECONFIG[webp] = "--enable-webp,--disable-webp,libwebp" +# Weston with unwinding support +PACKAGECONFIG[libunwind] = "--enable-libunwind,--disable-libunwind,libunwind" +# Weston with systemd-login support +PACKAGECONFIG[systemd] = "--enable-systemd-login,--disable-systemd-login,systemd dbus" +# Weston with Xwayland support +PACKAGECONFIG[xwayland] = "--enable-xwayland,--disable-xwayland,libxcb libxcursor cairo" +# colord CMS support +PACKAGECONFIG[colord] = "--enable-colord,--disable-colord,colord" + +do_install_append() { + # Weston doesn't need the .la files to load modules, so wipe them + rm -f ${D}/${libdir}/weston/*.la + + # If X11, ship a desktop file to launch it + if [ "${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'x11', '', d)}" = "x11" ]; then + install -d ${D}${datadir}/applications + install ${WORKDIR}/weston.desktop ${D}${datadir}/applications + + install -d ${D}${datadir}/icons/hicolor/48x48/apps + install ${WORKDIR}/weston.png ${D}${datadir}/icons/hicolor/48x48/apps + fi +} + +PACKAGES += "${PN}-examples" + +FILES_${PN} = "${bindir}/weston ${bindir}/weston-terminal ${bindir}/weston-info ${bindir}/weston-launch ${bindir}/wcap-decode ${libexecdir} ${libdir}/${BPN}/*.so ${datadir}" +FILES_${PN}-examples = "${bindir}/*" + +RDEPENDS_${PN} += "xkeyboard-config" +RRECOMMENDS_${PN} = "liberation-fonts" + +USERADD_PACKAGES = "${PN}" +GROUPADD_PARAM_${PN} = "--system weston-launch" -- cgit v1.2.3-54-g00ecf