gobject-introspection: do not export LD_LIBRARY_PATH prior to running qemu

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.

(From OE-Core rev: 58d31dddebbf7116e71bf45bd374a7a988f6016c)

Signed-off-by: Alexander Kanavin <alexander.kanavin@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Alexander Kanavin
2018-01-03 17:24:04 +02:00
committed by Richard Purdie
parent a91b286291
commit 0d40074b7c
5 changed files with 75 additions and 10 deletions

View File

@@ -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

View 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

View 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 "

View 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 "

View 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 "