[Buildroot] [PATCH 1/1] package/meson: use wrappers for g-ir-scanner and g-ir-compiler
Yann E. MORIN
yann.morin.1998 at free.fr
Sun May 17 07:11:53 UTC 2020
James, All,
On 2020-05-16 14:53 -0600, James Hilliard spake thusly:
> We need to backport a commit to allow us to override the g-ir-scanner
> and g-ir-compiler binaries in the gnome module.
>
> By default since meson looks for these binaries as native: true
> dependencies it would use the host versions instead of the wrappers
> which are not useable for target package builds. Override this behavior
> by specifying the correct wrapper binaries in cross-compilation.conf.
>
> Fixes:
> http://autobuild.buildroot.net/results/f49/f49bb57a6ec2890f489fbd55ced9c9249d066334/build-end.log
>
> Signed-off-by: James Hilliard <james.hilliard1 at gmail.com>
Applied to master.
I just slightly expanded on why the backport does not closely match
upstream, after our little discucssion on IRC. Thanks.
Regards,
Yann E. MORIN.
> ---
> ...-g-ir-scanner-and-g-ir-compiler-bina.patch | 73 +++++++++++++++++++
> package/meson/cross-compilation.conf.in | 2 +
> 2 files changed, 75 insertions(+)
> create mode 100644 package/meson/0003-Allow-overriding-g-ir-scanner-and-g-ir-compiler-bina.patch
>
> diff --git a/package/meson/0003-Allow-overriding-g-ir-scanner-and-g-ir-compiler-bina.patch b/package/meson/0003-Allow-overriding-g-ir-scanner-and-g-ir-compiler-bina.patch
> new file mode 100644
> index 0000000000..710bd9acd7
> --- /dev/null
> +++ b/package/meson/0003-Allow-overriding-g-ir-scanner-and-g-ir-compiler-bina.patch
> @@ -0,0 +1,73 @@
> +From 49b1c8df7e4ff3a441d831f926d87920952025bf Mon Sep 17 00:00:00 2001
> +From: James Hilliard <james.hilliard1 at gmail.com>
> +Date: Sat, 2 May 2020 20:43:36 -0600
> +Subject: [PATCH] Allow overriding g-ir-scanner and g-ir-compiler binaries.
> +
> +This is useful when one needs to force meson to use wrappers for cross
> +compilation.
> +
> +Signed-off-by: James Hilliard <james.hilliard1 at gmail.com>
> +[james.hilliard1 at gmail.com: backport from upstream commit
> +1e073c4c1bd7de06bc74d84e3807c9b210e57a22]
> +---
> + mesonbuild/modules/gnome.py | 34 +++++++++++++++++++++-------------
> + 1 file changed, 21 insertions(+), 13 deletions(-)
> +
> +diff --git a/mesonbuild/modules/gnome.py b/mesonbuild/modules/gnome.py
> +index a00005588..b6d7cc141 100644
> +--- a/mesonbuild/modules/gnome.py
> ++++ b/mesonbuild/modules/gnome.py
> +@@ -32,7 +32,7 @@ from ..mesonlib import (
> + MachineChoice, MesonException, OrderedSet, Popen_safe, extract_as_list,
> + join_args, unholder,
> + )
> +-from ..dependencies import Dependency, PkgConfigDependency, InternalDependency
> ++from ..dependencies import Dependency, PkgConfigDependency, InternalDependency, ExternalProgram
> + from ..interpreterbase import noKwargs, permittedKwargs, FeatureNew, FeatureNewKwargs
> +
> + # gresource compilation is broken due to the way
> +@@ -735,21 +735,29 @@ class GnomeModule(ExtensionModule):
> + # these utilities via pkg-config, so it would be best to use the
> + # results from pkg-config when possible.
> + gi_util_dirs_check = [state.environment.get_build_dir(), state.environment.get_source_dir()]
> +- giscanner = self.interpreter.find_program_impl('g-ir-scanner')
> +- if giscanner.found():
> +- giscanner_path = giscanner.get_command()[0]
> +- if not any(x in giscanner_path for x in gi_util_dirs_check):
> +- giscanner = self.gir_dep.get_pkgconfig_variable('g_ir_scanner', {})
> ++ giscanner_bin = state.environment.lookup_binary_entry(MachineChoice.HOST, 'g-ir-scanner')
> ++ if giscanner_bin is not None:
> ++ giscanner = ExternalProgram.from_entry('g-ir-scanner', giscanner_bin)
> + else:
> +- giscanner = self.gir_dep.get_pkgconfig_variable('g_ir_scanner', {})
> ++ giscanner = self.interpreter.find_program_impl('g-ir-scanner')
> ++ if giscanner.found():
> ++ giscanner_path = giscanner.get_command()[0]
> ++ if not any(x in giscanner_path for x in gi_util_dirs_check):
> ++ giscanner = self.gir_dep.get_pkgconfig_variable('g_ir_scanner', {})
> ++ else:
> ++ giscanner = self.gir_dep.get_pkgconfig_variable('g_ir_scanner', {})
> +
> +- gicompiler = self.interpreter.find_program_impl('g-ir-compiler')
> +- if gicompiler.found():
> +- gicompiler_path = gicompiler.get_command()[0]
> +- if not any(x in gicompiler_path for x in gi_util_dirs_check):
> +- gicompiler = self.gir_dep.get_pkgconfig_variable('g_ir_compiler', {})
> ++ gicompiler_bin = state.environment.lookup_binary_entry(MachineChoice.HOST, 'g-ir-compiler')
> ++ if gicompiler_bin is not None:
> ++ gicompiler = ExternalProgram.from_entry('g-ir-compiler', gicompiler_bin)
> + else:
> +- gicompiler = self.gir_dep.get_pkgconfig_variable('g_ir_compiler', {})
> ++ gicompiler = self.interpreter.find_program_impl('g-ir-compiler')
> ++ if gicompiler.found():
> ++ gicompiler_path = gicompiler.get_command()[0]
> ++ if not any(x in gicompiler_path for x in gi_util_dirs_check):
> ++ gicompiler = self.gir_dep.get_pkgconfig_variable('g_ir_compiler', {})
> ++ else:
> ++ gicompiler = self.gir_dep.get_pkgconfig_variable('g_ir_compiler', {})
> +
> + ns = kwargs.pop('namespace')
> + nsversion = kwargs.pop('nsversion')
> +--
> +2.25.1
> +
> diff --git a/package/meson/cross-compilation.conf.in b/package/meson/cross-compilation.conf.in
> index d80c472de6..e9344e2b2f 100644
> --- a/package/meson/cross-compilation.conf.in
> +++ b/package/meson/cross-compilation.conf.in
> @@ -9,6 +9,8 @@ cpp = '@TARGET_CROSS at g++'
> ar = '@TARGET_CROSS at ar'
> strip = '@TARGET_CROSS at strip'
> pkgconfig = '@HOST_DIR@/bin/pkgconf'
> +g-ir-compiler = '@STAGING_DIR@/usr/bin/g-ir-compiler'
> +g-ir-scanner = '@STAGING_DIR@/usr/bin/g-ir-scanner'
>
> [properties]
> needs_exe_wrapper = true
> --
> 2.25.1
>
> _______________________________________________
> buildroot mailing list
> buildroot at busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot
--
.-----------------.--------------------.------------------.--------------------.
| Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ |
| +33 561 099 427 `------------.-------: X AGAINST | \e/ There is no |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. |
'------------------------------^-------^------------------^--------------------'
More information about the buildroot
mailing list