weston: upgrade to 4.0.0

Official announcement:
https://lists.freedesktop.org/archives/wayland-devel/2018-April/037768.html

Dropped previously backported fix-missing-header.patch and
weston-gl-renderer-Set-pitch-correctly-for-subsampled-textures.patch

Refresh remaining local patches.

Modify 0001-weston-launch-Provide-a-default-version-that-doesn-t.patch with
changes to apply against the new code base.

Support for libunwind was dropped in bb707dc0fe331c9af112a0552b7aa6fde755dd83:
https://cgit.freedesktop.org/wayland/weston/commit/?id=bb707dc0fe331c9af112a0552b7aa6fde755dd83

Extract major version for referring to libweston-4 helper libraries.

(From OE-Core rev: 0cc82a9158f58a37865f3ccc56156c987706f735)

Signed-off-by: Denys Dmytriyenko <denys@ti.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Denys Dmytriyenko
2018-04-11 14:03:19 -04:00
committed by Richard Purdie
parent 8097bf7012
commit 1b0340b3b8
5 changed files with 57 additions and 143 deletions

View File

@@ -1,26 +1,27 @@
From c22e90365d89346258394833cbcad03ff32b2e27 Mon Sep 17 00:00:00 2001
From ad1d2161c811cff25d1684c33611f300adb753bc Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Fri, 29 May 2015 20:56:00 -0700
Subject: [PATCH weston] make error() portable
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.
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
Upstream-Status: Submitted
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
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Index: weston-3.0.0/configure.ac
===================================================================
--- weston-3.0.0.orig/configure.ac
+++ weston-3.0.0/configure.ac
@@ -103,6 +103,8 @@ AC_CHECK_DECL(CLOCK_MONOTONIC,[],
---
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 <time.h>]])
AC_CHECK_HEADERS([execinfo.h])
@@ -29,10 +30,11 @@ Index: weston-3.0.0/configure.ac
AC_CHECK_FUNCS([mkostemp strchrnul initgroups posix_fallocate])
# check for libdrm as a build-time dependency only
Index: weston-3.0.0/libweston/weston-error.h
===================================================================
diff --git a/libweston/weston-error.h b/libweston/weston-error.h
new file mode 100644
index 0000000..2089d02
--- /dev/null
+++ weston-3.0.0/libweston/weston-error.h
+++ b/libweston/weston-error.h
@@ -0,0 +1,20 @@
+#ifndef _WESTON_ERROR_H
+#define _WESTON_ERROR_H
@@ -54,10 +56,10 @@ Index: weston-3.0.0/libweston/weston-error.h
+
+#endif
+
Index: weston-3.0.0/libweston/weston-launch.c
===================================================================
--- weston-3.0.0.orig/libweston/weston-launch.c
+++ weston-3.0.0/libweston/weston-launch.c
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 <poll.h>
#include <errno.h>
@@ -66,7 +68,7 @@ Index: weston-3.0.0/libweston/weston-launch.c
#include <getopt.h>
#include <sys/types.h>
@@ -60,6 +59,7 @@
@@ -59,6 +58,7 @@
#endif
#include "weston-launch.h"

View File

@@ -1,8 +1,7 @@
From 8ff6ed03ec4079f32e9b34085414e57be4730e04 Mon Sep 17 00:00:00 2001
From b98b9dbda902225cdd972b5bff6a641c36cc7e90 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
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.
@@ -14,16 +13,18 @@ Upstream-Status: Pending
Signed-off-by: Tom Hochstein <tom.hochstein@nxp.com>
Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
Signed-off-by: Denys Dmytriyenko <denys@ti.com>
---
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
index dc9c802..48cf5cb 100644
--- a/configure.ac
+++ b/configure.ac
@@ -435,13 +435,17 @@ AC_ARG_ENABLE(resize-optimization,
@@ -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])])
@@ -43,7 +44,7 @@ index 46cb2c7..bb45f46 100644
fi
AM_CONDITIONAL(HAVE_PANGO, test "x$have_pango" = "xyes")
@@ -701,6 +705,7 @@ AC_MSG_RESULT([
@@ -702,6 +706,7 @@ AC_MSG_RESULT([
Enable developer documentation ${enable_devdocs}
weston-launch utility ${enable_weston_launch}
@@ -52,7 +53,7 @@ index 46cb2c7..bb45f46 100644
systemd notify support ${enable_systemd_notify}
diff --git a/libweston/weston-launch.c b/libweston/weston-launch.c
index 0491896..07e7469 100644
index 166bf3b..6fb9232 100644
--- a/libweston/weston-launch.c
+++ b/libweston/weston-launch.c
@@ -51,7 +51,9 @@
@@ -65,7 +66,7 @@ index 0491896..07e7469 100644
#ifdef HAVE_SYSTEMD_LOGIN
#include <systemd/sd-login.h>
@@ -93,8 +95,10 @@ drmSetMaster(int drm_fd)
@@ -101,8 +103,10 @@ drmSetMaster(int drm_fd)
#endif
struct weston_launch {
@@ -76,7 +77,7 @@ index 0491896..07e7469 100644
int tty;
int ttynr;
int sock[2];
@@ -181,6 +185,7 @@ weston_launch_allowed(struct weston_launch *wl)
@@ -189,6 +193,7 @@ weston_launch_allowed(struct weston_launch *wl)
return false;
}
@@ -84,7 +85,7 @@ index 0491896..07e7469 100644
static int
pam_conversation_fn(int msg_count,
const struct pam_message **messages,
@@ -221,6 +226,7 @@ setup_pam(struct weston_launch *wl)
@@ -229,6 +234,7 @@ setup_pam(struct weston_launch *wl)
return 0;
}
@@ -92,7 +93,7 @@ index 0491896..07e7469 100644
static int
setup_launcher_socket(struct weston_launch *wl)
@@ -414,6 +420,7 @@ quit(struct weston_launch *wl, int status)
@@ -422,6 +428,7 @@ quit(struct weston_launch *wl, int status)
close(wl->signalfd);
close(wl->sock[0]);
@@ -100,7 +101,7 @@ index 0491896..07e7469 100644
if (wl->new_user) {
err = pam_close_session(wl->ph, 0);
if (err)
@@ -421,6 +428,7 @@ quit(struct weston_launch *wl, int status)
@@ -429,6 +436,7 @@ quit(struct weston_launch *wl, int status)
err, pam_strerror(wl->ph, err));
pam_end(wl->ph, err);
}
@@ -108,7 +109,7 @@ index 0491896..07e7469 100644
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)
@@ -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);
@@ -116,7 +117,7 @@ index 0491896..07e7469 100644
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)
@@ -616,6 +625,7 @@ setup_session(struct weston_launch *wl, char **child_argv)
}
free(env);
}
@@ -124,17 +125,18 @@ index 0491896..07e7469 100644
/*
* We open a new session, so it makes sense
@@ -675,7 +685,9 @@ static void
@@ -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");
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");
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");
fprintf(stderr, " -h, --help Display this help message\n");
@@ -688,7 +700,9 @@ main(int argc, char *argv[])
@@ -698,7 +710,9 @@ main(int argc, char *argv[])
int i, c;
char *tty = NULL;
struct option opts[] = {
@@ -144,8 +146,8 @@ index 0491896..07e7469 100644
{ "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) {
@@ -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
@@ -158,7 +160,7 @@ index 0491896..07e7469 100644
break;
case 't':
tty = optarg;
@@ -740,8 +758,10 @@ main(int argc, char *argv[])
@@ -753,8 +771,10 @@ main(int argc, char *argv[])
if (setup_tty(&wl, tty) < 0)
exit(EXIT_FAILURE);
@@ -169,6 +171,3 @@ index 0491896..07e7469 100644
if (setup_launcher_socket(&wl) < 0)
exit(EXIT_FAILURE);
--
2.1.4

View File

@@ -1,30 +0,0 @@
On the musl C library, tests/timespec-text.c does not build, with the
following error:
In file included from tests/timespec-test.c:36:0:
./shared/timespec-util.h:41:21: warning: struct timespec declared
inside parameter list will not be visible outside of this definition
or declaration
timespec_sub(struct timespec *r,
^~~~~~~~
[...]
Indeed, struct timespec is defined in time.h, so we must include it.
Upstream-Status: Backport [fa41bdfbc0b962fd73b89f01aab1a5370c9c28eb]
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Index: weston-3.0.0/shared/timespec-util.h
===================================================================
--- weston-3.0.0.orig/shared/timespec-util.h
+++ weston-3.0.0/shared/timespec-util.h
@@ -28,6 +28,7 @@
#include <stdint.h>
#include <assert.h>
+#include <time.h>
#define NSEC_PER_SEC 1000000000

View File

@@ -1,55 +0,0 @@
Multi-plane sub-sampled textures have partial width/height, e.g.
YUV420/I420 has a full-size Y plane, followed by a half-width/height U
plane, and a half-width/height V plane.
zwp_linux_dmabuf_v1 allows clients to pass an explicit pitch for each
plane, but for wl_shm this must be inferred. gl-renderer was correctly
accounting for the width and height when subsampling, but the pitch was
being taken as the pitch for the first plane.
This does not match the requirements for GStreamer's waylandsink, in
particular, as well as other clients. Fix the SHM upload path to
correctly set the pitch for each plane, according to subsampling.
Tested with:
$ gst-launch-1.0 videotestsrc ! waylandsink
Upstream-Status: Backport [https://patchwork.freedesktop.org/patch/180767/]
Signed-off-by: Daniel Stone <daniels@collabora.com>
Fixes: fdeefe42418 ("gl-renderer: add support of WL_SHM_FORMAT_YUV420")
Reported-by: Fabien Lahoudere <fabien.lahoudere@collabora.co.uk>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=103063
---
libweston/gl-renderer.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/libweston/gl-renderer.c b/libweston/gl-renderer.c
index 244ce309..40bf0bb6 100644
--- a/libweston/gl-renderer.c
+++ b/libweston/gl-renderer.c
@@ -1445,14 +1445,13 @@ gl_renderer_flush_damage(struct weston_surface *surface)
goto done;
}
- glPixelStorei(GL_UNPACK_ROW_LENGTH_EXT, gs->pitch);
-
if (gs->needs_full_upload) {
glPixelStorei(GL_UNPACK_SKIP_PIXELS_EXT, 0);
glPixelStorei(GL_UNPACK_SKIP_ROWS_EXT, 0);
wl_shm_buffer_begin_access(buffer->shm_buffer);
for (j = 0; j < gs->num_textures; j++) {
glBindTexture(GL_TEXTURE_2D, gs->textures[j]);
+ glPixelStorei(GL_UNPACK_ROW_LENGTH_EXT, gs->pitch / gs->hsub[j]);
glTexImage2D(GL_TEXTURE_2D, 0,
gs->gl_format[j],
gs->pitch / gs->hsub[j],
@@ -1477,6 +1476,7 @@ gl_renderer_flush_damage(struct weston_surface *surface)
glPixelStorei(GL_UNPACK_SKIP_ROWS_EXT, r.y1);
for (j = 0; j < gs->num_textures; j++) {
glBindTexture(GL_TEXTURE_2D, gs->textures[j]);
+ glPixelStorei(GL_UNPACK_ROW_LENGTH_EXT, gs->pitch / gs->hsub[j]);
glTexSubImage2D(GL_TEXTURE_2D, 0,
r.x1 / gs->hsub[j],
r.y1 / gs->vsub[j],

View File

@@ -11,11 +11,9 @@ SRC_URI = "https://wayland.freedesktop.org/releases/${BPN}-${PV}.tar.xz \
file://0001-make-error-portable.patch \
file://xwayland.weston-start \
file://0001-weston-launch-Provide-a-default-version-that-doesn-t.patch \
file://weston-gl-renderer-Set-pitch-correctly-for-subsampled-textures.patch \
file://fix-missing-header.patch \
"
SRC_URI[md5sum] = "9c42a4c51a1b9f35d040fa9d45ada36d"
SRC_URI[sha256sum] = "cde1d55e8dd70c3cbb3d1ec72f60e60000041579caa1d6a262bd9c35e93723a5"
SRC_URI[md5sum] = "33709aa4d5916f89643fca0fc0064b39"
SRC_URI[sha256sum] = "a0fc0ae7ef83dfbed12abfe9b8096a24a7dd00705e86fa0db1e619ded18b4b58"
inherit autotools pkgconfig useradd distro_features_check
# depends on virtual/egl
@@ -24,6 +22,8 @@ REQUIRED_DISTRO_FEATURES = "opengl"
DEPENDS = "libxkbcommon gdk-pixbuf pixman cairo glib-2.0 jpeg"
DEPENDS += "wayland wayland-protocols libinput virtual/egl pango wayland-native"
WESTON_MAJOR_VERSION = "${@'.'.join(d.getVar('PV').split('.')[0:1])}"
EXTRA_OECONF = "--enable-setuid-install \
--disable-rdp-compositor \
"
@@ -62,8 +62,6 @@ PACKAGECONFIG[cairo-glesv2] = "--with-cairo-glesv2,--with-cairo=image,cairo"
PACKAGECONFIG[lcms] = "--enable-lcms,--disable-lcms,lcms"
# Weston with webp support
PACKAGECONFIG[webp] = "--with-webp,--without-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 (requires X11 and Wayland)
@@ -77,7 +75,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}/libweston-3/*.la
rm -f ${D}/${libdir}/libweston-${WESTON_MAJOR_VERSION}/*.la
# If X11, ship a desktop file to launch it
if [ "${@bb.utils.filter('DISTRO_FEATURES', 'x11', d)}" ]; then
@@ -94,16 +92,16 @@ do_install_append() {
}
PACKAGES += "${@bb.utils.contains('PACKAGECONFIG', 'xwayland', '${PN}-xwayland', '', d)} \
libweston-3 ${PN}-examples"
libweston-${WESTON_MAJOR_VERSION} ${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-3 = "${libdir}/lib*${SOLIBS} ${libdir}/libweston-3/*.so"
SUMMARY_libweston-3 = "Helper library for implementing 'wayland window managers'."
FILES_libweston-${WESTON_MAJOR_VERSION} = "${libdir}/lib*${SOLIBS} ${libdir}/libweston-${WESTON_MAJOR_VERSION}/*.so"
SUMMARY_libweston-${WESTON_MAJOR_VERSION} = "Helper library for implementing 'wayland window managers'."
FILES_${PN}-examples = "${bindir}/*"
FILES_${PN}-xwayland = "${libdir}/libweston-3/xwayland.so"
FILES_${PN}-xwayland = "${libdir}/libweston-${WESTON_MAJOR_VERSION}/xwayland.so"
RDEPENDS_${PN}-xwayland += "xserver-xorg-xwayland"
RDEPENDS_${PN} += "xkeyboard-config"