aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mesonbuild/interpreter.py6
-rw-r--r--mesonbuild/modules/gnome.py10
2 files changed, 13 insertions, 3 deletions
diff --git a/mesonbuild/interpreter.py b/mesonbuild/interpreter.py
index 7a858ab..dad15cf 100644
--- a/mesonbuild/interpreter.py
+++ b/mesonbuild/interpreter.py
@@ -62,6 +62,10 @@ def stringifyUserArguments(args):
raise InvalidArguments('Function accepts only strings, integers, lists and lists thereof.')
+class OverrideProgram(dependencies.ExternalProgram):
+ pass
+
+
class FeatureOptionHolder(InterpreterObject, ObjectHolder):
def __init__(self, env, name, option):
InterpreterObject.__init__(self)
@@ -1901,7 +1905,7 @@ class MesonMain(InterpreterObject):
self.interpreter.environment.build_dir)
if not os.path.exists(abspath):
raise InterpreterException('Tried to override %s with a file that does not exist.' % name)
- exe = dependencies.ExternalProgram(abspath)
+ exe = OverrideProgram(abspath)
if not isinstance(exe, (dependencies.ExternalProgram, build.Executable)):
raise InterpreterException('Second argument must be an external program or executable.')
self.interpreter.add_find_program_override(name, exe)
diff --git a/mesonbuild/modules/gnome.py b/mesonbuild/modules/gnome.py
index dc5ef20..4e97d3a 100644
--- a/mesonbuild/modules/gnome.py
+++ b/mesonbuild/modules/gnome.py
@@ -54,8 +54,14 @@ def gir_has_option(intr_obj, option):
_gir_has_option[option] = False
try:
- g_ir_scanner = intr_obj.find_program_impl('g-ir-scanner').get_command()
- opts = Popen_safe(g_ir_scanner + ['--help'], stderr=subprocess.STDOUT)[1]
+ g_ir_scanner = intr_obj.find_program_impl('g-ir-scanner')
+ # Handle overriden g-ir-scanner
+ if isinstance(getattr(g_ir_scanner, "held_object", g_ir_scanner), interpreter.OverrideProgram):
+ assert option in ['--extra-library', '--sources-top-dirs']
+ _gir_has_option[option] = True
+ return True
+
+ opts = Popen_safe(g_ir_scanner.get_command() + ['--help'], stderr=subprocess.STDOUT)[1]
_gir_has_option[option] = option in opts
except (MesonException, FileNotFoundError, subprocess.CalledProcessError):
pass