diff options
author | Nirbheek Chauhan <nirbheek@centricular.com> | 2016-12-15 13:42:28 +0530 |
---|---|---|
committer | Nirbheek Chauhan <nirbheek@centricular.com> | 2016-12-16 00:04:38 +0530 |
commit | 5e5b3f00d8485949634b4411d8304cc467ad8fc7 (patch) | |
tree | 9479277d86a4188034327ad9a9e1870923e6b255 /mesonbuild/modules/gnome.py | |
parent | d5f7ba862bb37ad75b68e007b8b55f40b6f6fd19 (diff) | |
download | meson-5e5b3f00d8485949634b4411d8304cc467ad8fc7.zip meson-5e5b3f00d8485949634b4411d8304cc467ad8fc7.tar.gz meson-5e5b3f00d8485949634b4411d8304cc467ad8fc7.tar.bz2 |
modules: Cache programs found by find_program
This avoids printing several 'Found:' messages during configure, and
also avoids doing several searches for the same binary. This is already
done by the interpreter for `find_program` calls from build files.
Also move it to the module-wide __init__.py file so it can be used by
other modules as-needed.
Also use it for g-ir-scanner where it was missed in one place, also fix
exception name in the same place.
Diffstat (limited to 'mesonbuild/modules/gnome.py')
-rw-r--r-- | mesonbuild/modules/gnome.py | 16 |
1 files changed, 5 insertions, 11 deletions
diff --git a/mesonbuild/modules/gnome.py b/mesonbuild/modules/gnome.py index eca894a..e291c98 100644 --- a/mesonbuild/modules/gnome.py +++ b/mesonbuild/modules/gnome.py @@ -25,7 +25,7 @@ from .. import dependencies from .. import mlog from .. import mesonlib from .. import interpreter -from . import GResourceTarget, GResourceHeaderTarget, GirTarget, TypelibTarget, VapiTarget +from . import find_program, GResourceTarget, GResourceHeaderTarget, GirTarget, TypelibTarget, VapiTarget # gresource compilation is broken due to the way # the resource compiler and Ninja clash about it @@ -46,19 +46,13 @@ def gir_has_extra_lib_arg(): _gir_has_extra_lib_arg = False try: - scanner_options = subprocess.check_output(['g-ir-scanner', '--help']).decode() - _gir_has_extra_lib_arg = '--extra-library' in scanner_options - except (FileNotFound, subprocess.CalledProcessError): + g_ir_scanner = find_program('g-ir-scanner', '').get_command() + opts = Popen_safe(g_ir_scanner + ['--help'], stderr=subprocess.STDOUT)[1] + _gir_has_extra_lib_arg = '--extra-library' in opts + except (MesonException, FileNotFoundError, subprocess.CalledProcessError): pass return _gir_has_extra_lib_arg -def find_program(program_name, target_name): - program = dependencies.ExternalProgram(program_name) - if not program.found(): - raise MesonException('%s can\'t be generated as %s could not be found' % ( - target_name, program_name)) - return program - class GnomeModule: @staticmethod |