Skip to contentSkip to conversation

package/gobject-introspection: fix host-linking

PATCH Superseded aduskett at gmail.com 2 participants 4 messages Feb 24, 2020 – Feb 26, 2020 Arm/Amlogic Meson SoC support

v2 of 6 Superseded Latest is v6 →

lore
Share & tools
lore
#0 lore raw

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
index 67e5e37dee..e28748be2e 100644
@@ -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)
#1 lore raw

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
index 9f97497b7e..d5847ad063 100644
@@ -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
index e28748be2e..6472f89c52 100644
@@ -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)
#2 lore raw

PATCH v2 3/3 package/meson: determine g-ir-scanner and g-ir-compiler paths from pkgconfig

In reply to aduskett at gmail.com

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/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
new file mode 100644
index 0000000000..637f11d5e8
@@ -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)
#3 lore raw

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/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 +1 -0
new file mode 100644
index 0000000000..637f11d5e8
@@ -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