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..c1db98f5a0 --- /dev/null +++ b/package/meson/0003-Allow-overriding-g-ir-scanner-and-g-ir-compiler-bina.patch @@ -0,0 +1,74 @@ +From 49b1c8df7e4ff3a441d831f926d87920952025bf Mon Sep 17 00:00:00 2001 +From: James Hilliard +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@gmail.com: backport and largely adapt upstream commit +1e073c4c1bd7de06bc74d84e3807c9b210e57a22, as the version in master has +undergone haevy refactorisation] +--- + 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@g++' ar = '@TARGET_CROSS@ar' strip = '@TARGET_CROSS@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