package/gobject-introspection: fix host-linking
PATCH v2 1/3 package/gobject-introspection: fix host-linking
From: Adam Duskett <[email protected]>
When building, gobject-introspection uses g-ir-scanner to build several .gir files. g-ir-scanner does not use LDPATH, so LD_LIBRARY_PATH must be used in order to ensure that g-ir-scanner does not use the host library path.
This fix has the added benefit of allowing the host gobject-introspection to build the host .gir, .rnc, and .typelib files, which some packages may require.
--- package/gobject-introspection/gobject-introspection.mk | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-)
package/gobject-introspection/gobject-introspection.mk +5 -5
@@ -33,11 +33,11 @@ HOST_GOBJECT_INTROSPECTION_DEPENDENCIES = \ GOBJECT_INTROSPECTION_NINJA_ENV += \ CC="$(TARGET_CC)" -# Disable introspection data on the host, as it is not needed and -# the package will attempt to use the systems libglib2 which will fail -# if the systems libglib2 version is older than 2.60. -HOST_GOBJECT_INTROSPECTION_CONF_OPTS = \ - -Denable-introspection-data=false +# When building, gobject-introspection uses g-ir-scanner to build several .gir +# files. g-ir-scanner does not use LDPATH, so LD_LIBRARY_PATH must be used in +# order to ensure that g-ir-scanner does not use the host library path. +HOST_GOBJECT_INTROSPECTION_NINJA_ENV += \ + LD_LIBRARY_PATH="$(HOST_DIR)/lib" # Use the host gi-scanner to prevent the scanner from generating incorrect # elf classes.
Signature · 1 line
2.21.1 (Apple Git-122.3)
PATCH v2 2/3 package/gobject-introspection: export cc in g-ir-scanner
From: Adam Duskett <[email protected]>
Without this export, the host variant of g-ir-scanner will call the host gcc for linking.
For autotools packages, this is not an issue as they use Makefile.introspection, which will export the cross-cc, however for meson, this is not the case, and linking errors occur when meson packages generate .gir and .typelib files.
--- package/gobject-introspection/g-ir-scanner.in | 2 ++ package/gobject-introspection/gobject-introspection.mk | 2 ++ 2 files changed, 4 insertions(+)
package/gobject-introspection/g-ir-scanner.in +2 -0
@@ -1,6 +1,8 @@ #!/usr/bin/env bash export GI_SCANNER_DISABLE_CACHE=1 +export CC="$(dirname "${0}")/../../../../bin/@BASENAME_TARGET_CC@" + ${HOST_DIR}/bin/g-ir-scanner \ --lib-dirs-envvar=GIR_EXTRA_LIBS_PATH \ --use-binary-wrapper=$(dirname $0)/g-ir-scanner-qemuwrapper \
package/gobject-introspection/gobject-introspection.mk +2 -0
@@ -101,6 +101,8 @@ define GOBJECT_INTROSPECTION_INSTALL_WRAPPERS $(INSTALL) -D -m 755 \ $(GOBJECT_INTROSPECTION_PKGDIR)/$(w).in $(STAGING_DIR)/usr/bin/$(w) ) + $(SED) "s%@BASENAME_TARGET_CC@%$(notdir $(TARGET_CC))%g" $(STAGING_DIR)/usr/bin/g-ir-scanner + # Gobject-introspection installs Makefile.introspection in # $(STAGING_DIR)/usr/share which is needed for autotools-based programs to # build .gir and .typelib files. Unfortuantly, gobject-introspection-1.0.pc
Signature · 1 line
2.21.1 (Apple Git-122.3)
PATCH v2 3/3 package/meson: determine g-ir-scanner and g-ir-compiler paths from pkgconfig
In reply to aduskett at gmail.comFrom: Adam Duskett <[email protected]>
Currently, meson hard-codes the paths of these utilities, which results in cross-compiled environments running the host versions of these tools instead of the wrappers installed in the staging directory.
GObject-introspection provides the appropriate paths to these utilities via pkg-config, so it would be best to use the results of pkg-config instead of hard-coding these paths.
Current upstream-status: submitted
https://github.com/mesonbuild/meson/pull/6687
--- ...d-g-ir-compiler-paths-from-pkgconfig.patch | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 package/meson/0004-determine-g-ir-scanner-and-g-ir-compiler-paths-from-pkgconfig.patch
package/meson/0004-determine-g-ir-scanner-and-g-ir-compiler-paths-from-pkgconfig.patch new file +39 -0
@@ -0,0 +1,39 @@ +From 9ccaed380780178c4dab3a681f652ac7cd27452d Mon Sep 17 00:00:00 2001 +From: Adam Duskett <[email protected]> +Date: Mon, 24 Feb 2020 08:56:47 +0300 +Subject: [PATCH] determine g-ir-scanner and g-ir-compiler paths from pkgconfig + +Do not hardcode the name of those binaries; gobject-introspection +provides them via pkgconfig. + +Upstream-Status: submitted +https://github.com/mesonbuild/meson/pull/6687 +Signed-off-by: Adam Duskett <[email protected]> + +--- + mesonbuild/modules/gnome.py | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/mesonbuild/modules/gnome.py b/mesonbuild/modules/gnome.py +index 7c5a363..0002498 100644 +--- a/mesonbuild/modules/gnome.py ++++ b/mesonbuild/modules/gnome.py +@@ -744,15 +744,15 @@ class GnomeModule(ExtensionModule): + if kwargs.get('install_dir'): + raise MesonException('install_dir is not supported with generate_gir(), see "install_dir_gir" and "install_dir_typelib"') + +- giscanner = self.interpreter.find_program_impl('g-ir-scanner') +- gicompiler = self.interpreter.find_program_impl('g-ir-compiler') +- + girtargets = [self._unwrap_gir_target(arg, state) for arg in args] + + if len(girtargets) > 1 and any([isinstance(el, build.Executable) for el in girtargets]): + raise MesonException('generate_gir only accepts a single argument when one of the arguments is an executable') + + self.gir_dep, pkgargs = self._get_gir_dep(state) ++ giscanner = self.gir_dep.get_pkgconfig_variable('g_ir_scanner', {}) ++ gicompiler = self.gir_dep.get_pkgconfig_variable('g_ir_compiler', {}) ++ + + ns = kwargs.pop('namespace') + nsversion = kwargs.pop('nsversion')
Signature · 1 line
2.21.1 (Apple Git-122.3)
PATCH v2 3/3 package/meson: determine g-ir-scanner and g-ir-compiler paths from pkgconfig
Quoted 27 lines · On Mon, Feb 24, 2020 at 6:10 PM <[email protected]> wrote:
From: Adam Duskett <[email protected]>
Currently, meson hard-codes the paths of these utilities, which results in cross-compiled environments running the host versions of these tools instead of the wrappers installed in the staging directory.
GObject-introspection provides the appropriate paths to these utilities via pkg-config, so it would be best to use the results of pkg-config instead of hard-coding these paths.
Current upstream-status: submitted
https://github.com/mesonbuild/meson/pull/6687Signed-off-by Adam Duskett <[email protected]>--- ...d-g-ir-compiler-paths-from-pkgconfig.patch | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 package/meson/0004-determine-g-ir-scanner-and-g-ir-compiler-paths-from-pkgconfig.patchpackage/meson/0004-determine-g-ir-scanner-and-g-ir-compiler-paths-from-pkgconfig.patch new file +1
-0@@ -0,0 +1,39 @@ +From 9ccaed380780178c4dab3a681f652ac7cd27452d Mon Sep 17 00:00:00 2001
package/meson/0004-determine-g-ir-scanner-and-g-ir-compiler-paths-from-pkgconfig.patch line 11
Quoted 10 lines
package/meson/0004-determine-g-ir-scanner-and-g-ir-compiler-paths-from-pkgconfig.patch new file +10
-0+From: Adam Duskett <[email protected]> +Date: Mon, 24 Feb 2020 08:56:47 +0300 +Subject: [PATCH] determine g-ir-scanner and g-ir-compiler paths from pkgconfig + +Do not hardcode the name of those binaries; gobject-introspection +provides them via pkgconfig. + +Upstream-Status: submitted +https://github.com/mesonbuild/meson/pull/6687 +Signed-off-by: Adam Duskett <[email protected]>
Quoted 35 lines
package/meson/0004-determine-g-ir-scanner-and-g-ir-compiler-paths-from-pkgconfig.patch new file +28
-1+ +--- + mesonbuild/modules/gnome.py | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/mesonbuild/modules/gnome.py b/mesonbuild/modules/gnome.py +index 7c5a363..0002498 100644 +--- a/mesonbuild/modules/gnome.py ++++ b/mesonbuild/modules/gnome.py +@@ -744,15 +744,15 @@ class GnomeModule(ExtensionModule): + if kwargs.get('install_dir'): + raise MesonException('install_dir is not supported with generate_gir(), see "install_dir_gir" and "install_dir_typelib"') + +- giscanner = self.interpreter.find_program_impl('g-ir-scanner') +- gicompiler = self.interpreter.find_program_impl('g-ir-compiler') +- + girtargets = [self._unwrap_gir_target(arg, state) for arg in args] + + if len(girtargets) > 1 and any([isinstance(el, build.Executable) for el in girtargets]): + raise MesonException('generate_gir only accepts a single argument when one of the arguments is an executable') + + self.gir_dep, pkgargs = self._get_gir_dep(state) ++ giscanner = self.gir_dep.get_pkgconfig_variable('g_ir_scanner', {}) ++ gicompiler = self.gir_dep.get_pkgconfig_variable('g_ir_compiler', {}) ++ + + ns = kwargs.pop('namespace') + nsversion = kwargs.pop('nsversion') --2.21.1 (Apple Git-122.3)
_______________________________________________
buildroot mailing list
buildroot at busybox.net
http://lists.busybox.net/mailman/listinfo/buildroot