From adb0b6ae8298fd388029a57471fc31f3899e0ec7 Mon Sep 17 00:00:00 2001 From: Jussi Kukkonen Date: Wed, 22 Feb 2017 16:43:05 +0200 Subject: [PATCH] weston: Upgrade 1.11.1 -> 2.0.0, separate libweston * Drop two patches that are upstream. Rebase other patches. * Separate libweston into its own package, modify the recipe as needed because files have changed location. * Remove "--disable-rpi-compositor": the backend does not exist anymore. Libweston is already at version 2 and is likely to have new major versions. The versions should be parallel installable (but weston itself will not be). (From OE-Core rev: 44068f2ba74228b78268efa58ca5f2bc85449f14) Signed-off-by: Jussi Kukkonen Signed-off-by: Richard Purdie --- ...iguration-option-for-no-input-device.patch | 112 ------------------ ...figure.ac-Fix-wayland-protocols-path.patch | 2 +- .../weston/0001-make-error-portable.patch | 12 +- ...-shared-include-stdint.h-for-int32_t.patch | 23 ---- ...ovide-a-default-version-that-doesn-t.patch | 52 ++++---- .../{weston_1.11.1.bb => weston_2.0.0.bb} | 21 ++-- 6 files changed, 48 insertions(+), 174 deletions(-) delete mode 100644 meta/recipes-graphics/wayland/weston/0001-Add-configuration-option-for-no-input-device.patch delete mode 100644 meta/recipes-graphics/wayland/weston/0001-shared-include-stdint.h-for-int32_t.patch rename meta/recipes-graphics/wayland/{weston_1.11.1.bb => weston_2.0.0.bb} (87%) diff --git a/meta/recipes-graphics/wayland/weston/0001-Add-configuration-option-for-no-input-device.patch b/meta/recipes-graphics/wayland/weston/0001-Add-configuration-option-for-no-input-device.patch deleted file mode 100644 index c45f3addfc..0000000000 --- a/meta/recipes-graphics/wayland/weston/0001-Add-configuration-option-for-no-input-device.patch +++ /dev/null @@ -1,112 +0,0 @@ -From 75b7197f4e072a4e2de124ddbe93b85cffb1c0f8 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 - -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 - -Upstream-Status: backport from -https://cgit.freedesktop.org/wayland/weston/commit/?id=75b7197f ---- - man/weston.ini.man | 5 +++++ - src/compositor.h | 3 +++ - src/libinput-seat.c | 6 ++++++ - src/main.c | 5 +++++ - weston.ini.in | 1 + - 5 files changed, 20 insertions(+) - ---- a/src/main.c -+++ b/src/main.c -@@ -1298,6 +1298,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 }, -@@ -1373,6 +1374,10 @@ int main(int argc, char *argv[]) - if (weston_compositor_init_config(ec, config) < 0) - goto out; - -+ weston_config_section_get_bool(section, "require-input", -+ &require_input, true); -+ ec->require_input = require_input; -+ - if (load_backend(ec, backend, &argc, argv, config) < 0) { - weston_log("fatal: failed to create compositor backend\n"); - goto out; ---- a/src/compositor.h -+++ b/src/compositor.h -@@ -803,6 +803,9 @@ 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 { ---- a/src/libinput-seat.c -+++ b/src/libinput-seat.c -@@ -255,6 +255,12 @@ udev_input_enable(struct udev_input *inp - 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. " ---- a/man/weston.ini.man -+++ b/man/weston.ini.man -@@ -169,6 +169,11 @@ time, the one specified in the command-l - 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 ---- 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 diff --git a/meta/recipes-graphics/wayland/weston/0001-configure.ac-Fix-wayland-protocols-path.patch b/meta/recipes-graphics/wayland/weston/0001-configure.ac-Fix-wayland-protocols-path.patch index edd3b918f6..5f4d79c38c 100644 --- a/meta/recipes-graphics/wayland/weston/0001-configure.ac-Fix-wayland-protocols-path.patch +++ b/meta/recipes-graphics/wayland/weston/0001-configure.ac-Fix-wayland-protocols-path.patch @@ -21,7 +21,7 @@ Upstream-Status: Inappropriate [embedded specific] @@ -187,7 +187,7 @@ PKG_CHECK_MODULES(LIBINPUT_BACKEND, [lib PKG_CHECK_MODULES(COMPOSITOR, [$COMPOSITOR_MODULES]) - PKG_CHECK_MODULES(WAYLAND_PROTOCOLS, [wayland-protocols >= 1.2], + 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) diff --git a/meta/recipes-graphics/wayland/weston/0001-make-error-portable.patch b/meta/recipes-graphics/wayland/weston/0001-make-error-portable.patch index f7b52843d9..e2213aca60 100644 --- a/meta/recipes-graphics/wayland/weston/0001-make-error-portable.patch +++ b/meta/recipes-graphics/wayland/weston/0001-make-error-portable.patch @@ -10,9 +10,9 @@ Signed-off-by: Khem Raj --- Upstream-Status: Submitted - configure.ac | 2 ++ - src/weston-error.h | 20 ++++++++++++++++++++ - src/weston-launch.c | 2 +- + configure.ac | 2 ++ + libweston/weston-error.h | 20 ++++++++++++++++++++ + libweston/weston-launch.c | 2 +- 3 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 src/weston-error.h @@ -28,7 +28,7 @@ Upstream-Status: Submitted COMPOSITOR_MODULES="wayland-server >= $WAYLAND_PREREQ_VERSION pixman-1 >= 0.25.2" --- /dev/null -+++ b/src/weston-error.h ++++ b/libweston/weston-error.h @@ -0,0 +1,20 @@ +#ifndef _WESTON_ERROR_H +#define _WESTON_ERROR_H @@ -50,8 +50,8 @@ Upstream-Status: Submitted + +#endif + ---- a/src/weston-launch.c -+++ b/src/weston-launch.c +--- a/libweston/weston-launch.c ++++ b/libweston/weston-launch.c @@ -33,7 +33,6 @@ #include #include diff --git a/meta/recipes-graphics/wayland/weston/0001-shared-include-stdint.h-for-int32_t.patch b/meta/recipes-graphics/wayland/weston/0001-shared-include-stdint.h-for-int32_t.patch deleted file mode 100644 index ee66c20aa8..0000000000 --- a/meta/recipes-graphics/wayland/weston/0001-shared-include-stdint.h-for-int32_t.patch +++ /dev/null @@ -1,23 +0,0 @@ -From ba02b8abe4e2afac2bfbf2559972d5059d75a041 Mon Sep 17 00:00:00 2001 -From: Jussi Kukkonen -Date: Sat, 16 Jul 2016 22:50:19 +0300 -Subject: [PATCH weston] shared: include stdint.h for int32_t - -This fixes build on musl. - -Signed-off-by: Jussi Kukkonen -Upstream-Status: Submitted ---- - shared/xalloc.h | 1 + - 1 file changed, 1 insertion(+) - ---- a/shared/xalloc.h -+++ b/shared/xalloc.h -@@ -30,6 +30,7 @@ - extern "C" { - #endif - -+#include - #include - #include - diff --git a/meta/recipes-graphics/wayland/weston/0001-weston-launch-Provide-a-default-version-that-doesn-t.patch b/meta/recipes-graphics/wayland/weston/0001-weston-launch-Provide-a-default-version-that-doesn-t.patch index d684b1c1bc..70b988898c 100644 --- a/meta/recipes-graphics/wayland/weston/0001-weston-launch-Provide-a-default-version-that-doesn-t.patch +++ b/meta/recipes-graphics/wayland/weston/0001-weston-launch-Provide-a-default-version-that-doesn-t.patch @@ -1,6 +1,6 @@ -From d02226b3d5872b184c1d50c7f4706ac9467ffb81 Mon Sep 17 00:00:00 2001 +From 8ff6ed03ec4079f32e9b34085414e57be4730e04 Mon Sep 17 00:00:00 2001 From: Tom Hochstein -Date: Fri, 15 Jul 2016 11:00:15 +0300 +Date: Wed, 22 Feb 2017 15:53:30 +0200 Subject: [PATCH] weston-launch: Provide a default version that doesn't require PAM @@ -13,14 +13,17 @@ without non-root-user support. Upstream-Status: Pending Signed-off-by: Tom Hochstein +Signed-off-by: Jussi Kukkonen --- - configure.ac | 9 +++++++-- - src/weston-launch.c | 20 ++++++++++++++++++++ + 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 -@@ -416,13 +416,17 @@ AC_ARG_ENABLE(resize-optimization, +@@ -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])]) @@ -28,11 +31,11 @@ Signed-off-by: Tom Hochstein + 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 + 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 + 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 @@ -40,7 +43,7 @@ Signed-off-by: Tom Hochstein fi AM_CONDITIONAL(HAVE_PANGO, test "x$have_pango" = "xyes") -@@ -673,6 +677,7 @@ AC_MSG_RESULT([ +@@ -701,6 +705,7 @@ AC_MSG_RESULT([ Enable developer documentation ${enable_devdocs} weston-launch utility ${enable_weston_launch} @@ -48,8 +51,10 @@ Signed-off-by: Tom Hochstein systemd-login support ${have_systemd_login} systemd notify support ${enable_systemd_notify} ---- a/src/weston-launch.c -+++ b/src/weston-launch.c +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 @@ -71,7 +76,7 @@ Signed-off-by: Tom Hochstein int tty; int ttynr; int sock[2]; -@@ -181,6 +185,7 @@ weston_launch_allowed(struct weston_laun +@@ -181,6 +185,7 @@ weston_launch_allowed(struct weston_launch *wl) return false; } @@ -87,7 +92,7 @@ Signed-off-by: Tom Hochstein static int setup_launcher_socket(struct weston_launch *wl) -@@ -414,6 +420,7 @@ quit(struct weston_launch *wl, int statu +@@ -414,6 +420,7 @@ quit(struct weston_launch *wl, int status) close(wl->signalfd); close(wl->sock[0]); @@ -95,7 +100,7 @@ Signed-off-by: Tom Hochstein if (wl->new_user) { err = pam_close_session(wl->ph, 0); if (err) -@@ -421,6 +428,7 @@ quit(struct weston_launch *wl, int statu +@@ -421,6 +428,7 @@ quit(struct weston_launch *wl, int status) err, pam_strerror(wl->ph, err)); pam_end(wl->ph, err); } @@ -103,7 +108,7 @@ Signed-off-by: Tom Hochstein if (ioctl(wl->tty, KDSKBMUTE, 0) && ioctl(wl->tty, KDSKBMODE, wl->kb_mode)) -@@ -600,6 +608,7 @@ setup_session(struct weston_launch *wl) +@@ -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); @@ -111,15 +116,15 @@ Signed-off-by: Tom Hochstein env = pam_getenvlist(wl->ph); if (env) { for (i = 0; env[i]; ++i) { -@@ -608,6 +617,7 @@ setup_session(struct weston_launch *wl) +@@ -608,6 +617,7 @@ setup_session(struct weston_launch *wl, char **child_argv) } free(env); } +#endif - } - static void -@@ -665,7 +675,9 @@ static void + /* + * 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); @@ -129,7 +134,7 @@ Signed-off-by: Tom Hochstein 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"); -@@ -678,7 +690,9 @@ main(int argc, char *argv[]) +@@ -688,7 +700,9 @@ main(int argc, char *argv[]) int i, c; char *tty = NULL; struct option opts[] = { @@ -139,7 +144,7 @@ Signed-off-by: Tom Hochstein { "tty", required_argument, NULL, 't' }, { "verbose", no_argument, NULL, 'v' }, { "help", no_argument, NULL, 'h' }, -@@ -690,9 +704,13 @@ main(int argc, char *argv[]) +@@ -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': @@ -153,7 +158,7 @@ Signed-off-by: Tom Hochstein break; case 't': tty = optarg; -@@ -732,8 +750,10 @@ main(int argc, char *argv[]) +@@ -740,8 +758,10 @@ main(int argc, char *argv[]) if (setup_tty(&wl, tty) < 0) exit(EXIT_FAILURE); @@ -164,3 +169,6 @@ Signed-off-by: Tom Hochstein if (setup_launcher_socket(&wl) < 0) exit(EXIT_FAILURE); +-- +2.1.4 + diff --git a/meta/recipes-graphics/wayland/weston_1.11.1.bb b/meta/recipes-graphics/wayland/weston_2.0.0.bb similarity index 87% rename from meta/recipes-graphics/wayland/weston_1.11.1.bb rename to meta/recipes-graphics/wayland/weston_2.0.0.bb index 22b30ad2d3..54b07bd6b9 100644 --- a/meta/recipes-graphics/wayland/weston_1.11.1.bb +++ b/meta/recipes-graphics/wayland/weston_2.0.0.bb @@ -3,20 +3,18 @@ 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=26;md5=e342df749174a8ee11065583157c7a38" + file://libweston/compositor.c;endline=26;md5=e342df749174a8ee11065583157c7a38" SRC_URI = "https://wayland.freedesktop.org/releases/${BPN}-${PV}.tar.xz \ file://weston.png \ file://weston.desktop \ file://0001-make-error-portable.patch \ file://0001-configure.ac-Fix-wayland-protocols-path.patch \ - file://0001-shared-include-stdint.h-for-int32_t.patch \ file://xwayland.weston-start \ file://0001-weston-launch-Provide-a-default-version-that-doesn-t.patch \ - file://0001-Add-configuration-option-for-no-input-device.patch \ " -SRC_URI[md5sum] = "c5fdc02ab67d33c0fca8f72d341facdf" -SRC_URI[sha256sum] = "548973496a5c8613d6690f9120f21066946a544df65ce4fe0ef153a8dc0bf6de" +SRC_URI[md5sum] = "15f38945942bf2a91fe2687145fb4c7d" +SRC_URI[sha256sum] = "b4e446ac27f118196f1609dab89bb3cb3e81652d981414ad860e733b355365d8" inherit autotools pkgconfig useradd distro_features_check # depends on virtual/egl @@ -26,7 +24,6 @@ DEPENDS = "libxkbcommon gdk-pixbuf pixman cairo glib-2.0 jpeg" DEPENDS += "wayland wayland-protocols libinput virtual/egl pango wayland-native" EXTRA_OECONF = "--enable-setuid-install \ - --disable-rpi-compositor \ --disable-rdp-compositor \ WAYLAND_PROTOCOLS_SYSROOT_DIR=${RECIPE_SYSROOT} \ " @@ -80,7 +77,7 @@ PACKAGECONFIG[pam] = "--with-pam,--without-pam,libpam" do_install_append() { # Weston doesn't need the .la files to load modules, so wipe them - rm -f ${D}/${libdir}/weston/*.la + rm -f ${D}/${libdir}/libweston-2/*.la # If X11, ship a desktop file to launch it if [ "${@bb.utils.filter('DISTRO_FEATURES', 'x11', d)}" ]; then @@ -96,13 +93,17 @@ do_install_append() { fi } -PACKAGE_BEFORE_PN += "${@bb.utils.contains('PACKAGECONFIG', 'xwayland', '${PN}-xwayland', '', d)}" -PACKAGES += "${PN}-examples" +PACKAGES += "${@bb.utils.contains('PACKAGECONFIG', 'xwayland', '${PN}-xwayland', '', d)} \ + libweston-2 ${PN}-examples" FILES_${PN} = "${bindir}/weston ${bindir}/weston-terminal ${bindir}/weston-info ${bindir}/weston-launch ${bindir}/wcap-decode ${libexecdir} ${libdir}/${BPN}/*.so ${datadir}" + +FILES_libweston-2 = "${libdir}/lib*${SOLIBS} ${libdir}/libweston-2/*.so" +SUMMARY_libweston-2 = "Helper library for implementing 'wayland window managers'." + FILES_${PN}-examples = "${bindir}/*" -FILES_${PN}-xwayland = "${libdir}/${BPN}/xwayland.so" +FILES_${PN}-xwayland = "${libdir}/libweston-2/xwayland.so" RDEPENDS_${PN}-xwayland += "xserver-xorg-xwayland" RDEPENDS_${PN} += "xkeyboard-config"