diff mbox series

[2/2] package/weston: bump to version 10.0.0

Message ID 20220205230302.3837382-2-james.hilliard1@gmail.com
State Accepted
Headers show
Series [1/2] package/wayland-protocols: bump to version 1.25 | expand

Commit Message

James Hilliard Feb. 5, 2022, 11:03 p.m. UTC
Drop patches that are now upstream.

Jpeg dependency is now optional.

Add new backend compositor options.

Add comment indicating fbdev is deprecated(not yet removed).

Enable tools to match existing default(all enabled).

Signed-off-by: James Hilliard <james.hilliard1@gmail.com>
---
 ...ntl.h-for-open-O_RDWR-O_CLOEXEC-and-.patch |  48 ---
 ...libweston-backend-drm-might-need-EGL.patch |  47 ---
 ...003-pipewire-add-support-for-0.3-API.patch | 391 ------------------
 ...4-pipewire-fix-null-deref-in-0-3-API.patch |  28 --
 package/weston/Config.in                      |  34 +-
 package/weston/weston.hash                    |  10 +-
 package/weston/weston.mk                      |  35 +-
 7 files changed, 58 insertions(+), 535 deletions(-)
 delete mode 100644 package/weston/0001-tests-include-fcntl.h-for-open-O_RDWR-O_CLOEXEC-and-.patch
 delete mode 100644 package/weston/0002-libweston-backend-drm-might-need-EGL.patch
 delete mode 100644 package/weston/0003-pipewire-add-support-for-0.3-API.patch
 delete mode 100644 package/weston/0004-pipewire-fix-null-deref-in-0-3-API.patch
diff mbox series

Patch

diff --git a/package/weston/0001-tests-include-fcntl.h-for-open-O_RDWR-O_CLOEXEC-and-.patch b/package/weston/0001-tests-include-fcntl.h-for-open-O_RDWR-O_CLOEXEC-and-.patch
deleted file mode 100644
index 2eb6bd838c..0000000000
--- a/package/weston/0001-tests-include-fcntl.h-for-open-O_RDWR-O_CLOEXEC-and-.patch
+++ /dev/null
@@ -1,48 +0,0 @@ 
-From b10c0e843dcb8148bbe869bb15261955b94ac98c Mon Sep 17 00:00:00 2001
-From: Denys Dmytriyenko <denys@ti.com>
-Date: Tue, 8 Sep 2020 19:37:42 -0400
-Subject: [PATCH] tests: include fcntl.h for open(), O_RDWR, O_CLOEXEC and
- O_CREAT
-
-musl libc (unlike glibc) requires explicitly incuding fcntl.h to define open(),
-O_RDWR, O_CLOEXEC and O_CREAT. Otherwise the build fails with the errors:
-
-| ../weston-9.0.0/tests/weston-test-fixture-compositor.c: In function 'wait_for_lock':
-| ../weston-9.0.0/tests/weston-test-fixture-compositor.c:135:7: warning: implicit declaration of function 'open'; did you mean 'popen'? [-Wimplicit-function-declaration]
-|   135 |  fd = open(lock_path, O_RDWR | O_CLOEXEC | O_CREAT, 00700);
-|       |       ^~~~
-|       |       popen
-| ../weston-9.0.0/tests/weston-test-fixture-compositor.c:135:23: error: 'O_RDWR' undeclared (first use in this function)
-|   135 |  fd = open(lock_path, O_RDWR | O_CLOEXEC | O_CREAT, 00700);
-|       |                       ^~~~~~
-| ../weston-9.0.0/tests/weston-test-fixture-compositor.c:135:23: note: each undeclared identifier is reported only once for each function it appears in
-| ../weston-9.0.0/tests/weston-test-fixture-compositor.c:135:32: error: 'O_CLOEXEC' undeclared (first use in this function)
-|   135 |  fd = open(lock_path, O_RDWR | O_CLOEXEC | O_CREAT, 00700);
-|       |                                ^~~~~~~~~
-| ../weston-9.0.0/tests/weston-test-fixture-compositor.c:135:44: error: 'O_CREAT' undeclared (first use in this function)
-|   135 |  fd = open(lock_path, O_RDWR | O_CLOEXEC | O_CREAT, 00700);
-|       |                                            ^~~~~~~
-
-Signed-off-by: Denys Dmytriyenko <denys@ti.com>
-Signed-off-by: James Hilliard <james.hilliard1@gmail.com>
-[james.hilliard1@gmail.com: backport from upstream commit
-b10c0e843dcb8148bbe869bb15261955b94ac98c]
----
- tests/weston-test-fixture-compositor.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/tests/weston-test-fixture-compositor.c b/tests/weston-test-fixture-compositor.c
-index 1c32959c..c1eb26c4 100644
---- a/tests/weston-test-fixture-compositor.c
-+++ b/tests/weston-test-fixture-compositor.c
-@@ -35,6 +35,7 @@
- #include <stdarg.h>
- #include <stdlib.h>
- #include <errno.h>
-+#include <fcntl.h>
- 
- #include "shared/helpers.h"
- #include "weston-test-fixture-compositor.h"
--- 
-2.25.1
-
diff --git a/package/weston/0002-libweston-backend-drm-might-need-EGL.patch b/package/weston/0002-libweston-backend-drm-might-need-EGL.patch
deleted file mode 100644
index f504e1145b..0000000000
--- a/package/weston/0002-libweston-backend-drm-might-need-EGL.patch
+++ /dev/null
@@ -1,47 +0,0 @@ 
-From 4b93b71067949cc5efabb9b3d59278a3f362b11c Mon Sep 17 00:00:00 2001
-From: Heiko Thiery <heiko.thiery@gmail.com>
-Date: Wed, 21 Oct 2020 13:33:25 +0200
-Subject: [PATCH] libweston/backend/drm: might need EGL
-
-gbm-drm.c includes gl-renderer.h. When EGL is enabled, that in turns
-includes egl.h. As such, dependencies for drm should include EGL if
-it is available.
-
-This condition is modelled after a similar one in libweston/meson.build
-
-Reported-by: Gary Bisson <gary.bisson@boundarydevices.com>
-Reported-by: Heiko Thiery <heiko.thiery@gmail.com>
-Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
-Cc: Refik Tuzakli <tuzakli.refik@gmail.com>
-Cc: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
-Signed-off-by: Heiko Thiery <heiko.thiery@gmail.com>
----
-This patch should be a proper fix for the issue discribed in the patch from
-Gary [1].
-
-Since the MR on weston upstream [2] is not merged now I add this patch
-to have working weston with imx in buildroot.
-
-[1] https://patchwork.ozlabs.org/project/buildroot/patch/20200402130842.918696-3-gary.bisson@boundarydevices.com/
-[2] https://gitlab.freedesktop.org/wayland/weston/-/merge_requests/508
----
- libweston/backend-drm/meson.build | 3 +++
- 1 file changed, 3 insertions(+)
-
-diff --git a/libweston/backend-drm/meson.build b/libweston/backend-drm/meson.build
-index 484c2702..e3e5b976 100644
---- a/libweston/backend-drm/meson.build
-+++ b/libweston/backend-drm/meson.build
-@@ -53,6 +53,9 @@ if get_option('renderer-gl')
- 		config_h.set('HAVE_GBM_FD_IMPORT', '1')
- 	endif
- 	deps_drm += dep_gbm
-+	if dep_egl.found()
-+		deps_drm += dep_egl
-+	endif
- 	srcs_drm += 'drm-gbm.c'
- 	config_h.set('BUILD_DRM_GBM', '1')
- endif
---
-2.20.1
-
diff --git a/package/weston/0003-pipewire-add-support-for-0.3-API.patch b/package/weston/0003-pipewire-add-support-for-0.3-API.patch
deleted file mode 100644
index b486b3de5c..0000000000
--- a/package/weston/0003-pipewire-add-support-for-0.3-API.patch
+++ /dev/null
@@ -1,391 +0,0 @@ 
-From cc08737e3fd174ec3c4c208ea4f2a3a6a9e8af3e Mon Sep 17 00:00:00 2001
-From: James Hilliard <james.hilliard1@gmail.com>
-Date: Mon, 6 Jul 2020 00:58:02 -0600
-Subject: [PATCH] pipewire: add support for 0.3 API
-
-Fixes: #369
-
-Signed-off-by: James Hilliard <james.hilliard1@gmail.com>
-[james.hilliard1@gmail.com: backport from upstream commit
-80b585f8d2a31e780b4de41fbd187a742bea7e1a]
----
- .gitlab-ci.yml               |   2 +-
- .gitlab-ci/debian-install.sh |  16 ++++-
- pipewire/meson.build         |  28 ++++++---
- pipewire/pipewire-plugin.c   | 118 ++++++++++++++++++++++++++++++++++-
- 4 files changed, 151 insertions(+), 13 deletions(-)
-
-diff --git a/pipewire/meson.build b/pipewire/meson.build
-index 3d3374b8..e30a0b62 100644
---- a/pipewire/meson.build
-+++ b/pipewire/meson.build
-@@ -5,17 +5,25 @@ if get_option('pipewire')
- 		error('Attempting to build the pipewire plugin without the required DRM backend. ' + user_hint)
- 	endif
- 
--	depnames = [
--		'libpipewire-0.2', 'libspa-0.1'
--	]
- 	deps_pipewire = [ dep_libweston_private ]
--	foreach depname : depnames
--		dep = dependency(depname, required: false)
--		if not dep.found()
--			error('Pipewire plugin requires @0@ which was not found. '.format(depname) + user_hint)
--		endif
--		deps_pipewire += dep
--	endforeach
-+
-+	dep_libpipewire = dependency('libpipewire-0.3', required: false)
-+	if not dep_libpipewire.found()
-+		dep_libpipewire = dependency('libpipewire-0.2', required: false)
-+	endif
-+	if not dep_libpipewire.found()
-+		error('Pipewire plugin requires libpipewire which was not found. ' + user_hint)
-+	endif
-+	deps_pipewire += dep_libpipewire
-+
-+	dep_libspa = dependency('libspa-0.2', required: false)
-+	if not dep_libspa.found()
-+		dep_libspa = dependency('libspa-0.1', required: false)
-+	endif
-+	if not dep_libspa.found()
-+		error('Pipewire plugin requires libspa which was not found. ' + user_hint)
-+	endif
-+	deps_pipewire += dep_libspa
- 
- 	plugin_pipewire = shared_library(
- 		'pipewire-plugin',
-diff --git a/pipewire/pipewire-plugin.c b/pipewire/pipewire-plugin.c
-index 6f892574..ce70ea63 100644
---- a/pipewire/pipewire-plugin.c
-+++ b/pipewire/pipewire-plugin.c
-@@ -34,20 +34,27 @@
- #include <errno.h>
- #include <unistd.h>
- 
-+#include <pipewire/pipewire.h>
-+
- #include <spa/param/format-utils.h>
- #include <spa/param/video/format-utils.h>
- #include <spa/utils/defs.h>
- 
--#include <pipewire/pipewire.h>
-+#if PW_CHECK_VERSION(0, 2, 90)
-+#include <spa/buffer/meta.h>
-+#include <spa/utils/result.h>
-+#endif
- 
- #define PROP_RANGE(min, max) 2, (min), (max)
- 
-+#if !PW_CHECK_VERSION(0, 2, 90)
- struct type {
- 	struct spa_type_media_type media_type;
- 	struct spa_type_media_subtype media_subtype;
- 	struct spa_type_format_video format_video;
- 	struct spa_type_video_format video_format;
- };
-+#endif
- 
- struct weston_pipewire {
- 	struct weston_compositor *compositor;
-@@ -60,12 +67,19 @@ struct weston_pipewire {
- 	struct pw_loop *loop;
- 	struct wl_event_source *loop_source;
- 
-+#if PW_CHECK_VERSION(0, 2, 90)
-+	struct pw_context *context;
-+#endif
- 	struct pw_core *core;
- 	struct pw_type *t;
-+#if PW_CHECK_VERSION(0, 2, 90)
-+	struct spa_hook core_listener;
-+#else
- 	struct type type;
- 
- 	struct pw_remote *remote;
- 	struct spa_hook remote_listener;
-+#endif
- };
- 
- struct pipewire_output {
-@@ -100,6 +114,7 @@ struct pipewire_frame_data {
- 	struct wl_event_source *fence_sync_event_source;
- };
- 
-+#if !PW_CHECK_VERSION(0, 2, 90)
- static inline void init_type(struct type *type, struct spa_type_map *map)
- {
- 	spa_type_media_type_map(map, &type->media_type);
-@@ -107,6 +122,7 @@ static inline void init_type(struct type *type, struct spa_type_map *map)
- 	spa_type_format_video_map(map, &type->format_video);
- 	spa_type_video_format_map(map, &type->video_format);
- }
-+#endif
- 
- static void
- pipewire_debug_impl(struct weston_pipewire *pipewire,
-@@ -141,6 +157,7 @@ pipewire_debug_impl(struct weston_pipewire *pipewire,
- 	free(logstr);
- }
- 
-+#if !PW_CHECK_VERSION(0, 2, 90)
- static void
- pipewire_debug(struct weston_pipewire *pipewire, const char *fmt, ...)
- {
-@@ -150,6 +167,7 @@ pipewire_debug(struct weston_pipewire *pipewire, const char *fmt, ...)
- 	pipewire_debug_impl(pipewire, NULL, fmt, ap);
- 	va_end(ap);
- }
-+#endif
- 
- static void
- pipewire_output_debug(struct pipewire_output *output, const char *fmt, ...)
-@@ -185,7 +203,9 @@ pipewire_output_handle_frame(struct pipewire_output *output, int fd,
- 	const struct weston_drm_virtual_output_api *api =
- 		output->pipewire->virtual_output_api;
- 	size_t size = output->output->height * stride;
-+#if !PW_CHECK_VERSION(0, 2, 90)
- 	struct pw_type *t = output->pipewire->t;
-+#endif
- 	struct pw_buffer *buffer;
- 	struct spa_buffer *spa_buffer;
- 	struct spa_meta_header *h;
-@@ -203,7 +223,12 @@ pipewire_output_handle_frame(struct pipewire_output *output, int fd,
- 
- 	spa_buffer = buffer->buffer;
- 
-+#if PW_CHECK_VERSION(0, 2, 90)
-+	if ((h = spa_buffer_find_meta_data(spa_buffer, SPA_META_Header,
-+				     sizeof(struct spa_meta_header)))) {
-+#else
- 	if ((h = spa_buffer_find_meta(spa_buffer, t->meta.Header))) {
-+#endif
- 		h->pts = -1;
- 		h->flags = 0;
- 		h->seq = output->seq++;
-@@ -375,18 +400,40 @@ pipewire_set_dpms(struct weston_output *base_output, enum dpms_enum level)
- static int
- pipewire_output_connect(struct pipewire_output *output)
- {
-+#if !PW_CHECK_VERSION(0, 2, 90)
- 	struct weston_pipewire *pipewire = output->pipewire;
- 	struct type *type = &pipewire->type;
-+#endif
- 	uint8_t buffer[1024];
- 	struct spa_pod_builder builder =
- 		SPA_POD_BUILDER_INIT(buffer, sizeof(buffer));
- 	const struct spa_pod *params[1];
-+#if !PW_CHECK_VERSION(0, 2, 90)
- 	struct pw_type *t = pipewire->t;
-+#endif
- 	int frame_rate = output->output->current_mode->refresh / 1000;
- 	int width = output->output->width;
- 	int height = output->output->height;
- 	int ret;
- 
-+#if PW_CHECK_VERSION(0, 2, 90)
-+	params[0] = spa_pod_builder_add_object(&builder,
-+		SPA_TYPE_OBJECT_Format, SPA_PARAM_EnumFormat,
-+		SPA_FORMAT_mediaType, SPA_POD_Id(SPA_MEDIA_TYPE_video),
-+		SPA_FORMAT_mediaSubtype, SPA_POD_Id(SPA_MEDIA_SUBTYPE_raw),
-+		SPA_FORMAT_VIDEO_format, SPA_POD_Id(SPA_VIDEO_FORMAT_BGRx),
-+		SPA_FORMAT_VIDEO_size, SPA_POD_Rectangle(&SPA_RECTANGLE(width, height)),
-+		SPA_FORMAT_VIDEO_framerate, SPA_POD_Fraction(&SPA_FRACTION (0, 1)),
-+		SPA_FORMAT_VIDEO_maxFramerate,
-+		SPA_POD_CHOICE_RANGE_Fraction(&SPA_FRACTION(frame_rate, 1),
-+			&SPA_FRACTION(1, 1),
-+			&SPA_FRACTION(frame_rate, 1)));
-+
-+	ret = pw_stream_connect(output->stream, PW_DIRECTION_OUTPUT, SPA_ID_INVALID,
-+				(PW_STREAM_FLAG_DRIVER |
-+				 PW_STREAM_FLAG_MAP_BUFFERS),
-+				params, 1);
-+#else
- 	params[0] = spa_pod_builder_object(&builder,
- 		t->param.idEnumFormat, t->spa_format,
- 		"I", type->media_type.video,
-@@ -406,6 +453,7 @@ pipewire_output_connect(struct pipewire_output *output)
- 				(PW_STREAM_FLAG_DRIVER |
- 				 PW_STREAM_FLAG_MAP_BUFFERS),
- 				params, 1);
-+#endif
- 	if (ret != 0) {
- 		weston_log("Failed to connect pipewire stream: %s",
- 			   spa_strerror(ret));
-@@ -482,26 +530,42 @@ pipewire_output_stream_state_changed(void *data, enum pw_stream_state old,
- }
- 
- static void
-+#if PW_CHECK_VERSION(0, 2, 90)
-+pipewire_output_stream_param_changed(void *data, uint32_t id, const struct spa_pod *format)
-+#else
- pipewire_output_stream_format_changed(void *data, const struct spa_pod *format)
-+#endif
- {
- 	struct pipewire_output *output = data;
-+#if !PW_CHECK_VERSION(0, 2, 90)
- 	struct weston_pipewire *pipewire = output->pipewire;
-+#endif
- 	uint8_t buffer[1024];
- 	struct spa_pod_builder builder =
- 		SPA_POD_BUILDER_INIT(buffer, sizeof(buffer));
- 	const struct spa_pod *params[2];
-+#if !PW_CHECK_VERSION(0, 2, 90)
- 	struct pw_type *t = pipewire->t;
-+#endif
- 	int32_t width, height, stride, size;
- 	const int bpp = 4;
- 
- 	if (!format) {
- 		pipewire_output_debug(output, "format = None");
-+#if PW_CHECK_VERSION(0, 2, 90)
-+		pw_stream_update_params(output->stream, NULL, 0);
-+#else
- 		pw_stream_finish_format(output->stream, 0, NULL, 0);
-+#endif
- 		return;
- 	}
- 
-+#if PW_CHECK_VERSION(0, 2, 90)
-+	spa_format_video_raw_parse(format, &output->video_format);
-+#else
- 	spa_format_video_raw_parse(format, &output->video_format,
- 				   &pipewire->type.format_video);
-+#endif
- 
- 	width = output->video_format.size.width;
- 	height = output->video_format.size.height;
-@@ -510,6 +574,21 @@ pipewire_output_stream_format_changed(void *data, const struct spa_pod *format)
- 
- 	pipewire_output_debug(output, "format = %dx%d", width, height);
- 
-+#if PW_CHECK_VERSION(0, 2, 90)
-+	params[0] = spa_pod_builder_add_object(&builder,
-+		SPA_TYPE_OBJECT_ParamBuffers, SPA_PARAM_Buffers,
-+		SPA_PARAM_BUFFERS_size, SPA_POD_Int(size),
-+		SPA_PARAM_BUFFERS_stride, SPA_POD_Int(stride),
-+		SPA_PARAM_BUFFERS_buffers, SPA_POD_CHOICE_RANGE_Int(4, 2, 8),
-+		SPA_PARAM_BUFFERS_align, SPA_POD_Int(16));
-+
-+	params[1] = spa_pod_builder_add_object(&builder,
-+		SPA_TYPE_OBJECT_ParamMeta, SPA_PARAM_Meta,
-+		SPA_PARAM_META_type, SPA_POD_Id(SPA_META_Header),
-+		SPA_PARAM_META_size, SPA_POD_Int(sizeof(struct spa_meta_header)));
-+
-+	pw_stream_update_params(output->stream, params, 2);
-+#else
- 	params[0] = spa_pod_builder_object(&builder,
- 		t->param.idBuffers, t->param_buffers.Buffers,
- 		":", t->param_buffers.size,
-@@ -527,12 +606,17 @@ pipewire_output_stream_format_changed(void *data, const struct spa_pod *format)
- 		":", t->param_meta.size, "i", sizeof(struct spa_meta_header));
- 
- 	pw_stream_finish_format(output->stream, 0, params, 2);
-+#endif
- }
- 
- static const struct pw_stream_events stream_events = {
- 	PW_VERSION_STREAM_EVENTS,
- 	.state_changed = pipewire_output_stream_state_changed,
-+#if PW_CHECK_VERSION(0, 2, 90)
-+	.param_changed = pipewire_output_stream_param_changed,
-+#else
- 	.format_changed = pipewire_output_stream_format_changed,
-+#endif
- };
- 
- static struct weston_output *
-@@ -560,7 +644,11 @@ pipewire_output_create(struct weston_compositor *c, char *name)
- 	if (!head)
- 		goto err;
- 
-+#if PW_CHECK_VERSION(0, 2, 90)
-+	output->stream = pw_stream_new(pipewire->core, name, NULL);
-+#else
- 	output->stream = pw_stream_new(pipewire->remote, name, NULL);
-+#endif
- 	if (!output->stream) {
- 		weston_log("Cannot initialize pipewire stream\n");
- 		goto err;
-@@ -704,6 +792,14 @@ weston_pipewire_loop_handler(int fd, uint32_t mask, void *data)
- 	return 0;
- }
- 
-+#if PW_CHECK_VERSION(0, 2, 90)
-+static void
-+weston_pipewire_error(void *data, uint32_t id, int seq, int res,
-+			      const char *error)
-+{
-+	weston_log("pipewire remote error: %s\n", error);
-+}
-+#else
- static void
- weston_pipewire_state_changed(void *data, enum pw_remote_state old,
- 			      enum pw_remote_state state, const char *error)
-@@ -725,12 +821,20 @@ weston_pipewire_state_changed(void *data, enum pw_remote_state old,
- 		break;
- 	}
- }
-+#endif
- 
- 
-+#if PW_CHECK_VERSION(0, 2, 90)
-+static const struct pw_core_events core_events = {
-+	PW_VERSION_CORE_EVENTS,
-+	.error = weston_pipewire_error,
-+};
-+#else
- static const struct pw_remote_events remote_events = {
- 	PW_VERSION_REMOTE_EVENTS,
- 	.state_changed = weston_pipewire_state_changed,
- };
-+#endif
- 
- static int
- weston_pipewire_init(struct weston_pipewire *pipewire)
-@@ -745,10 +849,19 @@ weston_pipewire_init(struct weston_pipewire *pipewire)
- 
- 	pw_loop_enter(pipewire->loop);
- 
-+#if PW_CHECK_VERSION(0, 2, 90)
-+	pipewire->context = pw_context_new(pipewire->loop, NULL, 0);
-+#else
- 	pipewire->core = pw_core_new(pipewire->loop, NULL);
- 	pipewire->t = pw_core_get_type(pipewire->core);
- 	init_type(&pipewire->type, pipewire->t->map);
-+#endif
- 
-+#if PW_CHECK_VERSION(0, 2, 90)
-+	pw_core_add_listener(pipewire->core,
-+			       &pipewire->core_listener,
-+			       &core_events, pipewire);
-+#else
- 	pipewire->remote = pw_remote_new(pipewire->core, NULL, 0);
- 	pw_remote_add_listener(pipewire->remote,
- 			       &pipewire->remote_listener,
-@@ -777,6 +890,7 @@ weston_pipewire_init(struct weston_pipewire *pipewire)
- 			goto err;
- 		}
- 	}
-+#endif
- 
- 	loop = wl_display_get_event_loop(pipewire->compositor->wl_display);
- 	pipewire->loop_source =
-@@ -786,12 +900,14 @@ weston_pipewire_init(struct weston_pipewire *pipewire)
- 				     pipewire);
- 
- 	return 0;
-+#if !PW_CHECK_VERSION(0, 2, 90)
- err:
- 	if (pipewire->remote)
- 		pw_remote_destroy(pipewire->remote);
- 	pw_loop_leave(pipewire->loop);
- 	pw_loop_destroy(pipewire->loop);
- 	return -1;
-+#endif
- }
- 
- static const struct weston_pipewire_api pipewire_api = {
--- 
-2.25.1
-
diff --git a/package/weston/0004-pipewire-fix-null-deref-in-0-3-API.patch b/package/weston/0004-pipewire-fix-null-deref-in-0-3-API.patch
deleted file mode 100644
index f65348e166..0000000000
--- a/package/weston/0004-pipewire-fix-null-deref-in-0-3-API.patch
+++ /dev/null
@@ -1,28 +0,0 @@ 
-From a67393c353e0f25b142910a817be5a7754d436c3 Mon Sep 17 00:00:00 2001
-From: Ambareesh Balaji <ambareeshbalaji@gmail.com>
-Date: Sat, 5 Dec 2020 20:49:55 -0500
-Subject: [PATCH] pipewire: fix null deref in 0.3 API
-
-Signed-off-by: Ambareesh Balaji <ambareeshbalaji@gmail.com>
-[Retrieved from:
-https://gitlab.freedesktop.org/wayland/weston/-/commit/a67393c353e0f25b142910a817be5a7754d436c3]
-Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
----
- pipewire/pipewire-plugin.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/pipewire/pipewire-plugin.c b/pipewire/pipewire-plugin.c
-index ca5cbfec1..55705acfc 100644
---- a/pipewire/pipewire-plugin.c
-+++ b/pipewire/pipewire-plugin.c
-@@ -856,6 +856,7 @@ weston_pipewire_init(struct weston_pipewire *pipewire)
- 
- #if PW_CHECK_VERSION(0, 2, 90)
- 	pipewire->context = pw_context_new(pipewire->loop, NULL, 0);
-+	pipewire->core = pw_context_connect(pipewire->context, NULL, 0);
- #else
- 	pipewire->core = pw_core_new(pipewire->loop, NULL);
- 	pipewire->t = pw_core_get_type(pipewire->core);
--- 
-GitLab
-
diff --git a/package/weston/Config.in b/package/weston/Config.in
index 8f3dbc7931..d45e50baaa 100644
--- a/package/weston/Config.in
+++ b/package/weston/Config.in
@@ -35,7 +35,7 @@  choice
 	prompt "default compositor"
 
 config BR2_PACKAGE_WESTON_DEFAULT_FBDEV
-	bool "fbdev"
+	bool "fbdev (deprecated)"
 	select BR2_PACKAGE_WESTON_FBDEV
 
 config BR2_PACKAGE_WESTON_DEFAULT_DRM
@@ -46,21 +46,31 @@  config BR2_PACKAGE_WESTON_DEFAULT_DRM
 comment "drm backend needs mesa3d w/ EGL driver"
 	depends on !BR2_PACKAGE_MESA3D_OPENGL_EGL && !BR2_PACKAGE_IMX_GPU_VIV_OUTPUT_WL
 
+config BR2_PACKAGE_WESTON_DEFAULT_HEADLESS
+	bool "headless"
+	select BR2_PACKAGE_WESTON_HEADLESS
+
+config BR2_PACKAGE_WESTON_DEFAULT_WAYLAND
+	bool "wayland (nested)"
+	select BR2_PACKAGE_WESTON_WAYLAND
+
 config BR2_PACKAGE_WESTON_DEFAULT_X11
-	bool "X11"
+	bool "X11 (nested)"
 	depends on BR2_PACKAGE_XORG7
 	select BR2_PACKAGE_WESTON_X11
 
-comment "X11 backend needs X.org"
+comment "X11 (nested) backend needs X.org"
 	depends on !BR2_PACKAGE_XORG7
 
 endchoice
 
 config BR2_PACKAGE_WESTON_DEFAULT_COMPOSITOR
 	string
-	default "fbdev" if BR2_PACKAGE_WESTON_DEFAULT_FBDEV
-	default "drm"   if BR2_PACKAGE_WESTON_DEFAULT_DRM
-	default "x11"   if BR2_PACKAGE_WESTON_DEFAULT_X11
+	default "fbdev"    if BR2_PACKAGE_WESTON_DEFAULT_FBDEV
+	default "drm"      if BR2_PACKAGE_WESTON_DEFAULT_DRM
+	default "headless" if BR2_PACKAGE_WESTON_DEFAULT_HEADLESS
+	default "wayland"  if BR2_PACKAGE_WESTON_DEFAULT_WAYLAND
+	default "x11"      if BR2_PACKAGE_WESTON_DEFAULT_X11
 
 config BR2_PACKAGE_WESTON_DRM
 	bool "DRM compositor"
@@ -71,7 +81,7 @@  comment "DRM compositor needs an OpenGL EGL backend provided by mesa3d"
 	depends on !BR2_PACKAGE_MESA3D_OPENGL_EGL && !BR2_PACKAGE_IMX_GPU_VIV_OUTPUT_WL
 
 config BR2_PACKAGE_WESTON_FBDEV
-	bool "fbdev compositor"
+	bool "fbdev compositor (deprecated)"
 
 # FreeRDP needs threads and !static, already the case for weston
 config BR2_PACKAGE_WESTON_RDP
@@ -99,13 +109,19 @@  comment "RDP compositor needs a toolchain w/ wchar, C++"
 	depends on BR2_TOOLCHAIN_HAS_SYNC_4
 	depends on !BR2_USE_WCHAR || !BR2_INSTALL_LIBSTDCPP
 
+config BR2_PACKAGE_WESTON_HEADLESS
+	bool "headless (testing) compositor"
+
+config BR2_PACKAGE_WESTON_WAYLAND
+	bool "Wayland (nested) compositor"
+
 config BR2_PACKAGE_WESTON_X11
-	bool "X11 compositor"
+	bool "X11 (nested) compositor"
 	depends on BR2_PACKAGE_XORG7
 	select BR2_PACKAGE_LIBXCB
 	select BR2_PACKAGE_XLIB_LIBX11
 
-comment "X11 compositor needs X.org enabled"
+comment "X11 (nested) compositor needs X.org enabled"
 	depends on !BR2_PACKAGE_XORG7
 
 config BR2_PACKAGE_WESTON_XWAYLAND
diff --git a/package/weston/weston.hash b/package/weston/weston.hash
index 5a6b38686a..b78a7c7550 100644
--- a/package/weston/weston.hash
+++ b/package/weston/weston.hash
@@ -1,6 +1,6 @@ 
-# From https://lists.freedesktop.org/archives/wayland-devel/2020-September/041595.html
-md5  b406da0fe9139fd39653238fde22a6cf  weston-9.0.0.tar.xz
-sha1  90b9540a0bd6d6f7a465817f1c696d4d393183c9  weston-9.0.0.tar.xz
-sha256  5cf5d6ce192e0eb15c1fc861a436bf21b5bb3b91dbdabbdebe83e1f83aa098fe  weston-9.0.0.tar.xz
-sha512  ccc263f8279b7b23e5c593b4a8a023de2c3dc178b1b8d6593599171770bcfe97608de9fcb77aa1cab39255451d289d323e51c317dae190c7641282e085b84f90  weston-9.0.0.tar.xz
+# From https://lists.freedesktop.org/archives/wayland-devel/2022-February/042103.html
+md5  bc4abe2ee6904a4890a0c641c6257f91  weston-10.0.0.tar.xz
+sha1  b1a51e3bb7ee1d75bbf728c8071771e07fc97fdd  weston-10.0.0.tar.xz
+sha256  5c23964112b90238bed39e5dd1e41cd71a79398813cdc3bbb15a9fdc94e547ae  weston-10.0.0.tar.xz
+sha512  77e05530751e4f743eebf015ab5b78a1fcc66b774713b5e296cfffc488be84e459f811c85ac4280b7b63eebf4ff5c958dd7306376ab343e6b80feae16c8c35a4  weston-10.0.0.tar.xz
 sha256  fdb65868f65d0fbdb05c2d3b779e10ce9969fa0c4b9262ba4f260e87086ab860  COPYING
diff --git a/package/weston/weston.mk b/package/weston/weston.mk
index 6dd5439291..a0a18d9358 100644
--- a/package/weston/weston.mk
+++ b/package/weston/weston.mk
@@ -4,7 +4,7 @@ 
 #
 ################################################################################
 
-WESTON_VERSION = 9.0.0
+WESTON_VERSION = 10.0.0
 WESTON_SITE = https://wayland.freedesktop.org/releases
 WESTON_SOURCE = weston-$(WESTON_VERSION).tar.xz
 WESTON_LICENSE = MIT
@@ -12,12 +12,14 @@  WESTON_LICENSE_FILES = COPYING
 WESTON_CPE_ID_VENDOR = wayland
 
 WESTON_DEPENDENCIES = host-pkgconf wayland wayland-protocols \
-	libxkbcommon pixman libpng jpeg udev cairo libinput libdrm
+	libxkbcommon pixman libpng udev cairo libinput libdrm
 
 WESTON_CONF_OPTS = \
 	-Dbackend-headless=false \
 	-Dcolor-management-colord=false \
-	-Dremoting=false
+	-Ddoc=false \
+	-Dremoting=false \
+	-Dtools=calibrator,debug,info,terminal,touch-calibrator
 
 # Uses VIDIOC_EXPBUF, only available from 3.8+
 ifeq ($(BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_8),y)
@@ -33,6 +35,13 @@  else
 WESTON_CONF_OPTS += -Dlauncher-logind=false
 endif
 
+ifeq ($(BR2_PACKAGE_JPEG),y)
+WESTON_CONF_OPTS += -Dimage-jpeg=true
+WESTON_DEPENDENCIES += jpeg
+else
+WESTON_CONF_OPTS += -Dimage-jpeg=false
+endif
+
 ifeq ($(BR2_PACKAGE_WEBP),y)
 WESTON_CONF_OPTS += -Dimage-webp=true
 WESTON_DEPENDENCIES += webp
@@ -48,10 +57,10 @@  endef
 define WESTON_USERS
 	- - weston-launch -1 - - - - Weston launcher group
 endef
-WESTON_CONF_OPTS += -Dweston-launch=true
+WESTON_CONF_OPTS += -Ddeprecated-weston-launch=true
 WESTON_DEPENDENCIES += linux-pam
 else
-WESTON_CONF_OPTS += -Dweston-launch=false
+WESTON_CONF_OPTS += -Ddeprecated-weston-launch=false
 endif
 
 ifeq ($(BR2_PACKAGE_HAS_LIBEGL_WAYLAND)$(BR2_PACKAGE_HAS_LIBGLES),yy)
@@ -77,9 +86,9 @@  WESTON_CONF_OPTS += -Dbackend-rdp=false
 endif
 
 ifeq ($(BR2_PACKAGE_WESTON_FBDEV),y)
-WESTON_CONF_OPTS += -Dbackend-fbdev=true
+WESTON_CONF_OPTS += -Ddeprecated-backend-fbdev=true
 else
-WESTON_CONF_OPTS += -Dbackend-fbdev=false
+WESTON_CONF_OPTS += -Ddeprecated-backend-fbdev=false
 endif
 
 ifeq ($(BR2_PACKAGE_WESTON_DRM),y)
@@ -88,6 +97,18 @@  else
 WESTON_CONF_OPTS += -Dbackend-drm=false
 endif
 
+ifeq ($(BR2_PACKAGE_WESTON_HEADLESS),y)
+WESTON_CONF_OPTS += -Dbackend-headless=true
+else
+WESTON_CONF_OPTS += -Dbackend-headless=false
+endif
+
+ifeq ($(BR2_PACKAGE_WESTON_WAYLAND),y)
+WESTON_CONF_OPTS += -Dbackend-wayland=true
+else
+WESTON_CONF_OPTS += -Dbackend-wayland=false
+endif
+
 ifeq ($(BR2_PACKAGE_WESTON_X11),y)
 WESTON_CONF_OPTS += -Dbackend-x11=true
 WESTON_DEPENDENCIES += libxcb xlib_libX11