summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorScott Murray <scott.murray@konsulko.com>2025-02-08 12:42:50 -0500
committerJan-Simon Moeller <jsmoeller@linuxfoundation.org>2025-02-11 10:35:41 +0000
commita7bb29c2984f993a2a5226ffe8d510e4ca53b0f1 (patch)
tree2a12921de3b5f49af5bc6ff4bac8b24722e3b6a9
parenta120153e6d3b7c23075aa0557cfab31dc2887b67 (diff)
Work around rcar-gen3 gstreamer issues
The kirkstone-dev branch of meta-rcar-gen3 has bbappends for the gstreamer1.0-plugins-* and gstreamer1.0-omx recipes that effectively build the Renesas 1.20.3 forks and package them as the version in poky (currently 1.20.7). This is now breaking due to conflicts with the large number of CVE fix patches in poky kirkstone, and is a bad idea due to a chance of breaking gstreamer users since there are mismatches between the main gstreamer package contents and the plugins. To fix this for now: - BBMASK out the bbappends - Remove the rcar-gen3 version of our local patch against gstreamer1.0-plugins-bad, as it no longer applies (since rcar-gen3 will be using the upstream version for now). This can be revisited when meta-rcar-gen3 is updated to resolve the mismatch. Bug-AGL: SPEC-5365, SPEC-5366 Change-Id: I70c519b7a85a7b69c71fc0ddd9daf3562c7009ec Signed-off-by: Scott Murray <scott.murray@konsulko.com> Reviewed-on: https://gerrit.automotivelinux.org/gerrit/c/AGL/meta-agl/+/30818 Reviewed-by: Jan-Simon Moeller <jsmoeller@linuxfoundation.org> ci-image-boot-test: Jenkins Job builder account ci-image-build: Jenkins Job builder account Tested-by: Jenkins Job builder account
-rw-r--r--meta-agl-bsp/conf/include/agl_rcar-nogfx.inc11
-rw-r--r--meta-agl-core/recipes-multimedia/gstreamer1.0-plugins-bad/files/rcar-gen3/0001-Added-appid-and-title-support.patch166
2 files changed, 11 insertions, 166 deletions
diff --git a/meta-agl-bsp/conf/include/agl_rcar-nogfx.inc b/meta-agl-bsp/conf/include/agl_rcar-nogfx.inc
index fb67fd976..266ae3847 100644
--- a/meta-agl-bsp/conf/include/agl_rcar-nogfx.inc
+++ b/meta-agl-bsp/conf/include/agl_rcar-nogfx.inc
@@ -58,3 +58,14 @@ BBMASK += "meta-renesas/meta-rcar-gen3/recipes-graphics/cogl/cogl-1.0_1.%.bbappe
# packagegroup bbclass is inherited. This can be removed when upstream
# is fixed to add the required PACKAGE_ARCH = "${MACHINE_ARCH}".
PACKAGE_ARCH:pn-packagegroup-multimedia-libs = "${MACHINE_ARCH}"
+
+# Mask out BSP layer gstreamer* 1.20.% bbappends for now, as the BSP
+# effectively is trying to patch in 1.20.3 source when upstream is at
+# 1.20.7, which breaks building at least gstreamer1.0-plugins-good, and
+# is an overall bad idea since it breaks downstream expectations with
+# respect to API versioning. The whole directory is not commented out
+# because we still want the vspfilter plugin. This can be removed if the
+# use of explicit 1.20.3 recipes in meta-renesas scarthgap branch is
+# backported.
+BBMASK += "meta-renesas/meta-rcar-gen3/recipes-multimedia/gstreamer/gstreamer1.0-omx"
+BBMASK += "meta-renesas/meta-rcar-gen3/recipes-multimedia/gstreamer/gstreamer1.0-plugins-"
diff --git a/meta-agl-core/recipes-multimedia/gstreamer1.0-plugins-bad/files/rcar-gen3/0001-Added-appid-and-title-support.patch b/meta-agl-core/recipes-multimedia/gstreamer1.0-plugins-bad/files/rcar-gen3/0001-Added-appid-and-title-support.patch
deleted file mode 100644
index 72b924337..000000000
--- a/meta-agl-core/recipes-multimedia/gstreamer1.0-plugins-bad/files/rcar-gen3/0001-Added-appid-and-title-support.patch
+++ /dev/null
@@ -1,166 +0,0 @@
-From df64f7e34d01a03957d78317ef9a1cf6d6b95055 Mon Sep 17 00:00:00 2001
-From: Marius Vlad <marius.vlad@collabora.com>
-Date: Wed, 9 Aug 2023 14:34:19 +0300
-Subject: [PATCH] Added appid and title support
-
-Bug-AGL: SPEC-4870
-Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
----
- ext/wayland/gstwaylandsink.c | 43 ++++++++++++++++++++++++++++++++++--
- ext/wayland/gstwaylandsink.h | 2 ++
- ext/wayland/wlwindow.c | 10 ++++++++-
- ext/wayland/wlwindow.h | 2 +-
- 4 files changed, 53 insertions(+), 4 deletions(-)
-
-diff --git a/ext/wayland/gstwaylandsink.c b/ext/wayland/gstwaylandsink.c
-index 4918154..f743cf2 100644
---- a/ext/wayland/gstwaylandsink.c
-+++ b/ext/wayland/gstwaylandsink.c
-@@ -66,7 +66,9 @@ enum
- PROP_DISPLAY,
- PROP_FULLSCREEN,
- PROP_USE_SUBSURFACE,
-- PROP_SUPPRESS_INTERLACE
-+ PROP_SUPPRESS_INTERLACE,
-+ PROP_APP_ID,
-+ PROP_TITLE
- };
-
- #define DEFAULT_USE_SUBSURFACE TRUE
-@@ -229,6 +231,16 @@ gst_wayland_sink_class_init (GstWaylandSinkClass * klass)
- DEFAULT_SUPPRESS_INTERLACE,
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
-
-+ g_object_class_install_property (gobject_class, PROP_APP_ID,
-+ g_param_spec_string ("appid", "Top-level application id", "Wayland "
-+ "appid, as xdg_shell::set_app_id",
-+ NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
-+
-+ g_object_class_install_property (gobject_class, PROP_TITLE,
-+ g_param_spec_string ("title", "Top-level title", "Wayland "
-+ "title, xdg_shell::set_title",
-+ NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
-+
- gst_type_mark_as_plugin_api (GST_TYPE_WAYLAND_VIDEO, 0);
- }
-
-@@ -266,6 +278,16 @@ gst_wayland_sink_get_property (GObject * object,
- g_value_set_string (value, sink->display_name);
- GST_OBJECT_UNLOCK (sink);
- break;
-+ case PROP_APP_ID:
-+ GST_OBJECT_LOCK (sink);
-+ g_value_set_string (value, sink->app_id);
-+ GST_OBJECT_UNLOCK (sink);
-+ break;
-+ case PROP_TITLE:
-+ GST_OBJECT_LOCK (sink);
-+ g_value_set_string (value, sink->title);
-+ GST_OBJECT_UNLOCK (sink);
-+ break;
- case PROP_FULLSCREEN:
- GST_OBJECT_LOCK (sink);
- g_value_set_boolean (value, sink->fullscreen);
-@@ -298,6 +320,16 @@ gst_wayland_sink_set_property (GObject * object,
- sink->display_name = g_value_dup_string (value);
- GST_OBJECT_UNLOCK (sink);
- break;
-+ case PROP_APP_ID:
-+ GST_OBJECT_LOCK (sink);
-+ sink->app_id = g_value_dup_string (value);
-+ GST_OBJECT_UNLOCK (sink);
-+ break;
-+ case PROP_TITLE:
-+ GST_OBJECT_LOCK (sink);
-+ sink->title = g_value_dup_string (value);
-+ GST_OBJECT_UNLOCK (sink);
-+ break;
- case PROP_FULLSCREEN:
- GST_OBJECT_LOCK (sink);
- gst_wayland_sink_set_fullscreen (sink, g_value_get_boolean (value));
-@@ -331,12 +363,18 @@ gst_wayland_sink_finalize (GObject * object)
- gst_buffer_unref (sink->last_buffer);
- if (sink->display)
- g_object_unref (sink->display);
-+ if (sink->title)
-+ g_object_unref (sink->title);
-+ if (sink->app_id)
-+ g_object_unref (sink->app_id);
- if (sink->window)
- g_object_unref (sink->window);
- if (sink->pool)
- gst_object_unref (sink->pool);
-
- g_free (sink->display_name);
-+ g_free (sink->title);
-+ g_free (sink->app_id);
-
- g_mutex_clear (&sink->display_lock);
- g_mutex_clear (&sink->render_lock);
-@@ -768,7 +806,8 @@ gst_wayland_sink_show_frame (GstVideoSink * vsink, GstBuffer * buffer)
- if (!sink->window) {
- /* if we were not provided a window, create one ourselves */
- sink->window = gst_wl_window_new_toplevel (sink->display,
-- &sink->video_info, sink->fullscreen, &sink->render_lock);
-+ &sink->video_info, sink->fullscreen, sink->app_id, sink->title,
-+ &sink->render_lock);
- g_signal_connect_object (sink->window, "closed",
- G_CALLBACK (on_window_closed), sink, 0);
- }
-diff --git a/ext/wayland/gstwaylandsink.h b/ext/wayland/gstwaylandsink.h
-index 46ea538..e6c94ae 100644
---- a/ext/wayland/gstwaylandsink.h
-+++ b/ext/wayland/gstwaylandsink.h
-@@ -64,6 +64,8 @@ struct _GstWaylandSink
- gboolean fullscreen;
-
- gchar *display_name;
-+ gchar *app_id;
-+ gchar *title;
-
- gboolean redraw_pending;
- GMutex render_lock;
-diff --git a/ext/wayland/wlwindow.c b/ext/wayland/wlwindow.c
-index 3aace87..16faec8 100644
---- a/ext/wayland/wlwindow.c
-+++ b/ext/wayland/wlwindow.c
-@@ -255,7 +255,7 @@ gst_wl_window_ensure_fullscreen (GstWlWindow * window, gboolean fullscreen)
-
- GstWlWindow *
- gst_wl_window_new_toplevel (GstWlDisplay * display, const GstVideoInfo * info,
-- gboolean fullscreen, GMutex * render_lock)
-+ gboolean fullscreen, gchar *app_id, gchar *title, GMutex * render_lock)
- {
- GstWlWindow *window;
-
-@@ -288,6 +288,14 @@ gst_wl_window_new_toplevel (GstWlDisplay * display, const GstVideoInfo * info,
-
- /* Finally, commit the xdg_surface state as toplevel */
- window->configured = FALSE;
-+ if (app_id)
-+ xdg_toplevel_set_app_id (window->xdg_toplevel, app_id);
-+ else
-+ xdg_toplevel_set_app_id (window->xdg_toplevel, "ext.wayland.waylandsink");
-+ if (title)
-+ xdg_toplevel_set_title (window->xdg_toplevel, title);
-+ else
-+ xdg_toplevel_set_title (window->xdg_toplevel, "ext.wayland.waylandsink");
- wl_surface_commit (window->area_surface);
- wl_display_flush (display->display);
-
-diff --git a/ext/wayland/wlwindow.h b/ext/wayland/wlwindow.h
-index 034a5a5..6b525c8 100644
---- a/ext/wayland/wlwindow.h
-+++ b/ext/wayland/wlwindow.h
-@@ -84,7 +84,7 @@ GType gst_wl_window_get_type (void);
- void gst_wl_window_ensure_fullscreen (GstWlWindow * window,
- gboolean fullscreen);
- GstWlWindow *gst_wl_window_new_toplevel (GstWlDisplay * display,
-- const GstVideoInfo * info, gboolean fullscreen, GMutex * render_lock);
-+ const GstVideoInfo * info, gboolean fullscreen, gchar * app_id, gchar *title, GMutex * render_lock);
- GstWlWindow *gst_wl_window_new_in_surface (GstWlDisplay * display,
- struct wl_surface * parent, GMutex * render_lock);
-
---
-2.35.1
-