From 6a0a5a28385cd25339dd4e4b1433aa597951e11b Mon Sep 17 00:00:00 2001 From: Yuqing Zhu Date: Wed, 6 Jun 2018 11:44:18 +0800 Subject: [PATCH] gstreamer1.0: Use i.MX fork of GST for customizations Create the new gstreamer recipe with i.mx specific version. Merge inc/bb. Switch to use i.MX fork of GST. All patches are put into the fork. Signed-off-by: Yuqing Zhu Signed-off-by: Otavio Salvador (cherry picked from commit 67065b32b2434eb8c5eb7a9911176a3b3b410c30) --- ...der.c-when-env-var-is-set-do-not-fal.patch | 35 +++++++++ ...-prefix-pkgconfig-paths-with-PKG_CON.patch | 42 +++++++++++ .../gstreamer/files/gtk-doc-tweaks.patch | 47 ++++++++++++ .../gstreamer/gstreamer1.0_1.12.imx.bb | 74 +++++++++++++++++++ 4 files changed, 198 insertions(+) create mode 100644 recipes-multimedia/gstreamer/files/0001-gst-gstpluginloader.c-when-env-var-is-set-do-not-fal.patch create mode 100644 recipes-multimedia/gstreamer/files/0001-introspection.m4-prefix-pkgconfig-paths-with-PKG_CON.patch create mode 100644 recipes-multimedia/gstreamer/files/gtk-doc-tweaks.patch create mode 100644 recipes-multimedia/gstreamer/gstreamer1.0_1.12.imx.bb diff --git a/recipes-multimedia/gstreamer/files/0001-gst-gstpluginloader.c-when-env-var-is-set-do-not-fal.patch b/recipes-multimedia/gstreamer/files/0001-gst-gstpluginloader.c-when-env-var-is-set-do-not-fal.patch new file mode 100644 index 00000000..67a872cd --- /dev/null +++ b/recipes-multimedia/gstreamer/files/0001-gst-gstpluginloader.c-when-env-var-is-set-do-not-fal.patch @@ -0,0 +1,35 @@ +From a1d7c582392c8bc87fa9411af77b20e011944357 Mon Sep 17 00:00:00 2001 +From: Alexander Kanavin +Date: Thu, 25 Jan 2018 17:55:02 +0200 +Subject: [PATCH] gst/gstpluginloader.c: when env var is set do not fall + through to system plugin scanner + +If we set a custom GST_PLUGIN_SCANNER env var, then we probably want to use that and only that. + +Falling through to the one installed on the system is problamatic in cross-compilation +environemnts, regardless of whether one pointed to by the env var succeeded or failed. + +Upstream-Status: Pending +Signed-off-by: Alexander Kanavin +--- + gst/gstpluginloader.c | 4 +--- + 1 file changed, 1 insertion(+), 3 deletions(-) + +diff --git a/gst/gstpluginloader.c b/gst/gstpluginloader.c +index 430829d..3a75731 100644 +--- a/gst/gstpluginloader.c ++++ b/gst/gstpluginloader.c +@@ -471,9 +471,7 @@ gst_plugin_loader_spawn (GstPluginLoader * loader) + helper_bin = g_strdup (env); + res = gst_plugin_loader_try_helper (loader, helper_bin); + g_free (helper_bin); +- } +- +- if (!res) { ++ } else { + GST_LOG ("Trying installed plugin scanner"); + + #ifdef G_OS_WIN32 +-- +2.15.1 + diff --git a/recipes-multimedia/gstreamer/files/0001-introspection.m4-prefix-pkgconfig-paths-with-PKG_CON.patch b/recipes-multimedia/gstreamer/files/0001-introspection.m4-prefix-pkgconfig-paths-with-PKG_CON.patch new file mode 100644 index 00000000..2cab87f9 --- /dev/null +++ b/recipes-multimedia/gstreamer/files/0001-introspection.m4-prefix-pkgconfig-paths-with-PKG_CON.patch @@ -0,0 +1,42 @@ +From 90916f96262fa7b27a0a99788c69f9fd6df11000 Mon Sep 17 00:00:00 2001 +From: Alexander Kanavin +Date: Tue, 24 Nov 2015 16:46:27 +0200 +Subject: [PATCH] introspection.m4: prefix pkgconfig paths with + PKG_CONFIG_SYSROOT_DIR + +We can't use our tweaked introspection.m4 from gobject-introspection tarball +because gstreamer also defines INTROSPECTION_INIT in its introspection.m4, which +is later supplied to g-ir-scanner. + +Upstream-Status: Pending [review on oe-core list] +Signed-off-by: Alexander Kanavin +--- + common/m4/introspection.m4 | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +diff --git a/common/m4/introspection.m4 b/common/m4/introspection.m4 +index 162be57..217a6ae 100644 +--- a/common/m4/introspection.m4 ++++ b/common/m4/introspection.m4 +@@ -54,14 +54,14 @@ m4_define([_GOBJECT_INTROSPECTION_CHECK_INTERNAL], + INTROSPECTION_GIRDIR= + INTROSPECTION_TYPELIBDIR= + if test "x$found_introspection" = "xyes"; then +- INTROSPECTION_SCANNER=`$PKG_CONFIG --variable=g_ir_scanner gobject-introspection-1.0` +- INTROSPECTION_COMPILER=`$PKG_CONFIG --variable=g_ir_compiler gobject-introspection-1.0` +- INTROSPECTION_GENERATE=`$PKG_CONFIG --variable=g_ir_generate gobject-introspection-1.0` ++ INTROSPECTION_SCANNER=$PKG_CONFIG_SYSROOT_DIR`$PKG_CONFIG --variable=g_ir_scanner gobject-introspection-1.0` ++ INTROSPECTION_COMPILER=$PKG_CONFIG_SYSROOT_DIR`$PKG_CONFIG --variable=g_ir_compiler gobject-introspection-1.0` ++ INTROSPECTION_GENERATE=$PKG_CONFIG_SYSROOT_DIR`$PKG_CONFIG --variable=g_ir_generate gobject-introspection-1.0` + INTROSPECTION_GIRDIR=`$PKG_CONFIG --variable=girdir gobject-introspection-1.0` + INTROSPECTION_TYPELIBDIR="$($PKG_CONFIG --variable=typelibdir gobject-introspection-1.0)" + INTROSPECTION_CFLAGS=`$PKG_CONFIG --cflags gobject-introspection-1.0` + INTROSPECTION_LIBS=`$PKG_CONFIG --libs gobject-introspection-1.0` +- INTROSPECTION_MAKEFILE=`$PKG_CONFIG --variable=datadir gobject-introspection-1.0`/gobject-introspection-1.0/Makefile.introspection ++ INTROSPECTION_MAKEFILE=$PKG_CONFIG_SYSROOT_DIR`$PKG_CONFIG --variable=datadir gobject-introspection-1.0`/gobject-introspection-1.0/Makefile.introspection + INTROSPECTION_INIT="extern void gst_init(gint*,gchar**); gst_init(NULL,NULL);" + fi + AC_SUBST(INTROSPECTION_SCANNER) +-- +2.6.2 + diff --git a/recipes-multimedia/gstreamer/files/gtk-doc-tweaks.patch b/recipes-multimedia/gstreamer/files/gtk-doc-tweaks.patch new file mode 100644 index 00000000..d86c78d7 --- /dev/null +++ b/recipes-multimedia/gstreamer/files/gtk-doc-tweaks.patch @@ -0,0 +1,47 @@ +From 7018ca1c4bf26c8317e7fcd2e7e4e648195f42ca Mon Sep 17 00:00:00 2001 +From: Ross Burton +Date: Wed, 20 Dec 2017 13:03:03 +0000 +Subject: [PATCH] gstreamer: use a patch instead of sed to fix gtk-doc + +Patch the gtk-doc makefiles so that the qemu wrapper is used to run transient +binaries instead of libtool wrapper or running them directly. + +Also substitute a bogus plugin scanner, as trying to run the real one is causing +issues during build on x86_64. + +Upstream-Status: Inappropriate +Signed-off-by: Ross Burton + +--- + common/gtk-doc.mak | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +diff --git a/common/gtk-doc.mak b/common/gtk-doc.mak +index 3f83491..e5cb0d1 100644 +--- a/common/gtk-doc.mak ++++ b/common/gtk-doc.mak +@@ -6,11 +6,11 @@ + if GTK_DOC_USE_LIBTOOL + GTKDOC_CC = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(INCLUDES) $(GTKDOC_DEPS_CFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) + GTKDOC_LD = $(LIBTOOL) --tag=CC --mode=link $(CC) $(GTKDOC_DEPS_LIBS) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) +-GTKDOC_RUN = $(LIBTOOL) --mode=execute ++GTKDOC_RUN = $(top_builddir)/gtkdoc-qemuwrapper + else + GTKDOC_CC = $(CC) $(INCLUDES) $(GTKDOC_DEPS_CFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) + GTKDOC_LD = $(CC) $(GTKDOC_DEPS_LIBS) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) +-GTKDOC_RUN = ++GTKDOC_RUN = $(top_builddir)/gtkdoc-qemuwrapper + endif + + # We set GPATH here; this gives us semantics for GNU make +@@ -101,6 +101,7 @@ scan-build.stamp: $(HFILE_GLOB) $(CFILE_GLOB) + GST_PLUGIN_PATH_1_0= \ + GST_REGISTRY_1_0=doc-registry.xml \ + $(GTKDOC_EXTRA_ENVIRONMENT) \ ++ GST_PLUGIN_SCANNER_1_0="$(top_builddir)/libs/gst/helpers/gst-plugin-scanner-dummy" \ + CC="$(GTKDOC_CC)" LD="$(GTKDOC_LD)" RUN="$(GTKDOC_RUN)" \ + CFLAGS="$(GTKDOC_CFLAGS) $(CFLAGS)" \ + LDFLAGS="$(GTKDOC_LIBS) $(LDFLAGS)" \ +-- +2.15.1 + diff --git a/recipes-multimedia/gstreamer/gstreamer1.0_1.12.imx.bb b/recipes-multimedia/gstreamer/gstreamer1.0_1.12.imx.bb new file mode 100644 index 00000000..24537952 --- /dev/null +++ b/recipes-multimedia/gstreamer/gstreamer1.0_1.12.imx.bb @@ -0,0 +1,74 @@ +SUMMARY = "GStreamer 1.0 multimedia framework" +DESCRIPTION = "GStreamer is a multimedia framework for encoding and decoding video and sound. \ +It supports a wide range of formats including mp3, ogg, avi, mpeg and quicktime." +HOMEPAGE = "http://gstreamer.freedesktop.org/" +BUGTRACKER = "https://bugzilla.gnome.org/enter_bug.cgi?product=Gstreamer" +SECTION = "multimedia" +LICENSE = "LGPLv2+" + +DEPENDS = "glib-2.0 glib-2.0-native libcap libxml2 bison-native flex-native elfutils" + +inherit autotools pkgconfig gettext upstream-version-is-even gobject-introspection gtk-doc + +# This way common/m4/introspection.m4 will come first +# (it has a custom INTROSPECTION_INIT macro, and so must be used instead of our common introspection.m4 file) +acpaths = "-I ${S}/common/m4 -I ${S}/m4" + +LIC_FILES_CHKSUM = "file://COPYING;md5=6762ed442b3822387a51c92d928ead0d \ + file://gst/gst.h;beginline=1;endline=21;md5=e059138481205ee2c6fc1c079c016d0d" + +# Use i.MX fork of GST for customizations +GST1.0_SRC ?= "gitsm://source.codeaurora.org/external/imx/gstreamer.git;protocol=https" +SRCBRANCH = "imx-1.12.x" + +SRC_URI = " \ + ${GST1.0_SRC};branch=${SRCBRANCH} \ + file://0001-introspection.m4-prefix-pkgconfig-paths-with-PKG_CON.patch \ + file://gtk-doc-tweaks.patch \ + file://0001-gst-gstpluginloader.c-when-env-var-is-set-do-not-fal.patch \ +" +SRCREV = "cca1ebf223bd423ed5fc21031014ee1f3ce497a1" + +EXTRA_AUTORECONF = "" + +PACKAGECONFIG ??= "" + +PACKAGECONFIG[debug] = "--enable-debug,--disable-debug" +PACKAGECONFIG[tests] = "--enable-tests,--disable-tests" +PACKAGECONFIG[valgrind] = "--enable-valgrind,--disable-valgrind,valgrind," +PACKAGECONFIG[gst-tracer-hooks] = "--enable-gst-tracer-hooks,--disable-gst-tracer-hooks," + +EXTRA_OECONF = " \ + --disable-dependency-tracking \ + --disable-examples \ +" + +CACHED_CONFIGUREVARS += "ac_cv_header_valgrind_valgrind_h=no" + +# musl libc generates warnings if is included directly +CACHED_CONFIGUREVARS += "ac_cv_header_sys_poll_h=no" + +PACKAGES += "${PN}-bash-completion" + +FILES_${PN} += "${libdir}/gstreamer-1.0/*.so" +FILES_${PN}-dev += "${libdir}/gstreamer-1.0/*.la ${libdir}/gstreamer-1.0/*.a ${libdir}/gstreamer-1.0/include" +FILES_${PN}-bash-completion += "${datadir}/bash-completion/completions/ ${datadir}/bash-completion/helpers/gst*" + +RRECOMMENDS_${PN}_qemux86 += "kernel-module-snd-ens1370 kernel-module-snd-rawmidi" +RRECOMMENDS_${PN}_qemux86-64 += "kernel-module-snd-ens1370 kernel-module-snd-rawmidi" + +delete_pkg_m4_file() { + # This m4 file is out of date and is missing PKG_CONFIG_SYSROOT_PATH tweaks which we need for introspection + rm "${S}/common/m4/pkg.m4" || true + rm -f "${S}/common/m4/gtk-doc.m4" +} + +do_configure[prefuncs] += "delete_pkg_m4_file" + +do_compile_prepend() { + export GIR_EXTRA_LIBS_PATH="${B}/gst/.libs:${B}/libs/gst/base/.libs" +} + +S = "${WORKDIR}/git" + +COMPATIBLE_MACHINE = "(mx6|mx7|mx8)" -- 2.40.1