]> code.ossystems Code Review - openembedded-core.git/commitdiff
gobject-introspection: do not export LD_LIBRARY_PATH prior to running qemu
authorAlexander Kanavin <alexander.kanavin@linux.intel.com>
Wed, 3 Jan 2018 15:24:04 +0000 (17:24 +0200)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Thu, 4 Jan 2018 12:56:04 +0000 (12:56 +0000)
Latest g-i upstream adds target paths to this variable which breaks
qemu in various confusing ways.

Instead, the list of target library paths is exported to GIR_EXTRA_LIBS_PATH,
so that it can be picked up automatically by the qemu wrapper script
and given to qemu (manually setting this variable from various recipes
will be removed in a different patch).

Also, re-enable parts of g-i on mips64, as it is the same issue.

Signed-off-by: Alexander Kanavin <alexander.kanavin@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
meta/recipes-gnome/gobject-introspection/gobject-introspection/0001-giscanner-add-a-lib-dirs-envvar-option.patch [new file with mode: 0644]
meta/recipes-gnome/gobject-introspection/gobject-introspection_1.54.1.bb
meta/recipes-graphics/clutter/clutter-gst-3.0.inc
meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins.inc
meta/recipes-multimedia/gstreamer/gstreamer1.0-rtsp-server.inc

diff --git a/meta/recipes-gnome/gobject-introspection/gobject-introspection/0001-giscanner-add-a-lib-dirs-envvar-option.patch b/meta/recipes-gnome/gobject-introspection/gobject-introspection/0001-giscanner-add-a-lib-dirs-envvar-option.patch
new file mode 100644 (file)
index 0000000..e1776bc
--- /dev/null
@@ -0,0 +1,73 @@
+From a02076fe916ade6c3f78f6d35072ec53482e9446 Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex.kanavin@gmail.com>
+Date: Wed, 3 Jan 2018 17:02:01 +0200
+Subject: [PATCH] giscanner: add a --lib-dirs-envvar option
+
+By default LD_LIBRARY_PATH is set to the list of target library paths;
+this breaks down in cross-compilation environment, as we need to run a
+native emulation wrapper rather than the target binary itself. This patch
+allows exporting those paths to a different environment variable
+which can be picked up and used by the wrapper.
+
+Upstream-Status: Pending
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+---
+ giscanner/ccompiler.py   | 6 ++++--
+ giscanner/dumper.py      | 3 ++-
+ giscanner/scannermain.py | 3 +++
+ 3 files changed, 9 insertions(+), 3 deletions(-)
+
+diff --git a/giscanner/ccompiler.py b/giscanner/ccompiler.py
+index 29de0ee..e969337 100644
+--- a/giscanner/ccompiler.py
++++ b/giscanner/ccompiler.py
+@@ -109,14 +109,16 @@ class CCompiler(object):
+             self._cflags_no_deprecation_warnings = "-Wno-deprecated-declarations"
+-    def get_internal_link_flags(self, args, libtool, libraries, extra_libraries, libpaths):
++    def get_internal_link_flags(self, args, libtool, libraries, extra_libraries, libpaths, lib_dirs_envvar):
+         # An "internal" link is where the library to be introspected
+         # is being built in the current directory.
+         runtime_path_envvar = []
+         runtime_paths = []
+-        if self.check_is_msvc():
++        if lib_dirs_envvar:
++            runtime_path_envvar = [lib_dirs_envvar]
++        elif self.check_is_msvc():
+             runtime_path_envvar = ['LIB', 'PATH']
+         else:
+             runtime_path_envvar = ['LD_LIBRARY_PATH']
+diff --git a/giscanner/dumper.py b/giscanner/dumper.py
+index 7f77bd2..db96df6 100644
+--- a/giscanner/dumper.py
++++ b/giscanner/dumper.py
+@@ -259,7 +259,8 @@ class DumpCompiler(object):
+                                                    libtool,
+                                                    self._options.libraries,
+                                                    self._options.extra_libraries,
+-                                                   self._options.library_paths)
++                                                   self._options.library_paths,
++                                                   self._options.lib_dirs_envvar)
+             args.extend(pkg_config_libs)
+         else:
+diff --git a/giscanner/scannermain.py b/giscanner/scannermain.py
+index 38a45c1..b603850 100755
+--- a/giscanner/scannermain.py
++++ b/giscanner/scannermain.py
+@@ -130,6 +130,9 @@ def _get_option_parser():
+     parser.add_option("", "--use-ldd-wrapper",
+                       action="store", dest="ldd_wrapper", default=None,
+                       help="wrapper to use instead of ldd (useful when cross-compiling)")
++    parser.add_option("", "--lib-dirs-envvar",
++                      action="store", dest="lib_dirs_envvar", default=None,
++                      help="environment variable to write a list of library directories to (for running the transient binary), instead of standard LD_LIBRARY_PATH")
+     parser.add_option("", "--program-arg",
+                       action="append", dest="program_args", default=[],
+                       help="extra arguments to program")
+-- 
+2.15.1
+
index 156dac7ca78c511597df58cab8d70ba52985ee0e..85c8001dea89bc51f55e7c534fd7b6557489256b 100644 (file)
@@ -14,6 +14,7 @@ SRC_URI = "${GNOME_MIRROR}/${BPN}/1.54/${BPN}-${PV}.tar.xz \
            file://0003-giscanner-add-use-binary-wrapper-option.patch \
            file://0004-giscanner-add-a-use-ldd-wrapper-option.patch \
            file://0005-Prefix-pkg-config-paths-with-PKG_CONFIG_SYSROOT_DIR-.patch \
+           file://0001-giscanner-add-a-lib-dirs-envvar-option.patch \
            "
 SRC_URI[md5sum] = "126c29e4d54adbed2ed4e2b04483de41"
 SRC_URI[sha256sum] = "b88ded5e5f064ab58a93aadecd6d58db2ec9d970648534c63807d4f9a7bb877e"
@@ -71,7 +72,7 @@ EOF
 # This prevents g-ir-scanner from writing cache data to $HOME
 export GI_SCANNER_DISABLE_CACHE=1
 
-g-ir-scanner --use-binary-wrapper=${STAGING_BINDIR}/g-ir-scanner-qemuwrapper --use-ldd-wrapper=${STAGING_BINDIR}/g-ir-scanner-lddwrapper --add-include-path=${STAGING_DATADIR}/gir-1.0 "\$@"
+g-ir-scanner --lib-dirs-envvar=GIR_EXTRA_LIBS_PATH --use-binary-wrapper=${STAGING_BINDIR}/g-ir-scanner-qemuwrapper --use-ldd-wrapper=${STAGING_BINDIR}/g-ir-scanner-lddwrapper --add-include-path=${STAGING_DATADIR}/gir-1.0 "\$@"
 EOF
         chmod +x ${B}/g-ir-scanner-wrapper
 
index 26ae91c48474feeebdae135ba7e0f974e9f91bda..4c877982b7459fdf5fd167e23374899b6f413269 100644 (file)
@@ -15,7 +15,3 @@ PACKAGES  =+ "${PN}-examples"
 FILES_${PN}          += "${libdir}/gstreamer-1.0/lib*.so"
 FILES_${PN}-dev      += "${libdir}/gstreamer-1.0/*.la"
 FILES_${PN}-examples  = "${bindir}/video-player ${bindir}/video-sink"
-
-# Needs to be disable due to a dependency on gstreamer-plugins introspection files
-EXTRA_OECONF_append_mips64 = " --disable-introspection "
-
index c40d39891199442bc3c22a669d6c1a6a411f56cf..3f6d4c3703824f5c15d0404ab5912b996275bfad 100644 (file)
@@ -49,6 +49,3 @@ patch_gtk_doc_makefiles() {
 do_configure[prefuncs] += " delete_pkg_m4_file patch_gtk_doc_makefiles"
 
 PACKAGES_DYNAMIC = "^${PN}-.*"
-
-# qemu-mips64: error while loading shared libraries: .../recipe-sysroot/usr/lib/libgthread-2.0.so.0: ELF file data encoding not little-endian
-EXTRA_OECONF_append_mips64 = " --disable-introspection "
index 68173ce7d944f61d3e2fd2a445edc80f90e18f9e..7191f9892d7c2e152f9fba839c41b5ae5491a199 100644 (file)
@@ -36,5 +36,3 @@ patch_gtk_doc_makefiles() {
 
 do_configure[prefuncs] += " delete_pkg_m4_file patch_gtk_doc_makefiles"
 
-# Needs to be disable due to a dependency on gstreamer-plugins introspection files
-EXTRA_OECONF_append_mips64 = " --disable-introspection "