diff options
author | Jussi Pakkanen <jpakkane@gmail.com> | 2018-04-16 22:22:02 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-04-16 22:22:02 +0300 |
commit | 0e00470d8c9711e62848a1d697d156cbab66e0bc (patch) | |
tree | 192047ead98b0c212f5b6b5b730f3f7d9ed87157 /mesonbuild/modules | |
parent | 5e45f4c621f14176478e3160e2bb3c6c77796b41 (diff) | |
parent | 6cdd14fc4eca8bddd4716ab5a9ebf09476846e6b (diff) | |
download | meson-0e00470d8c9711e62848a1d697d156cbab66e0bc.zip meson-0e00470d8c9711e62848a1d697d156cbab66e0bc.tar.gz meson-0e00470d8c9711e62848a1d697d156cbab66e0bc.tar.bz2 |
Merge pull request #3218 from mesonbuild/findoverrider
Make it possible to override find_program [skip ci]
Diffstat (limited to 'mesonbuild/modules')
-rw-r--r-- | mesonbuild/modules/__init__.py | 15 | ||||
-rw-r--r-- | mesonbuild/modules/gnome.py | 30 | ||||
-rw-r--r-- | mesonbuild/modules/i18n.py | 4 | ||||
-rw-r--r-- | mesonbuild/modules/modtest.py | 4 | ||||
-rw-r--r-- | mesonbuild/modules/pkgconfig.py | 4 | ||||
-rw-r--r-- | mesonbuild/modules/python3.py | 8 | ||||
-rw-r--r-- | mesonbuild/modules/qt4.py | 8 | ||||
-rw-r--r-- | mesonbuild/modules/qt5.py | 8 | ||||
-rw-r--r-- | mesonbuild/modules/rpm.py | 4 | ||||
-rw-r--r-- | mesonbuild/modules/unstable_icestorm.py | 18 | ||||
-rw-r--r-- | mesonbuild/modules/unstable_simd.py | 8 | ||||
-rw-r--r-- | mesonbuild/modules/windows.py | 4 |
12 files changed, 52 insertions, 63 deletions
diff --git a/mesonbuild/modules/__init__.py b/mesonbuild/modules/__init__.py index bf513fd..55bbbd3 100644 --- a/mesonbuild/modules/__init__.py +++ b/mesonbuild/modules/__init__.py @@ -18,26 +18,15 @@ class permittedSnippetKwargs: return f(s, interpreter, state, args, kwargs) return wrapped -_found_programs = {} - class ExtensionModule: - def __init__(self): + def __init__(self, interpreter): + self.interpreter = interpreter self.snippets = set() # List of methods that operate only on the interpreter. def is_snippet(self, funcname): return funcname in self.snippets -def find_program(program_name, target_name): - if program_name in _found_programs: - return _found_programs[program_name] - program = dependencies.ExternalProgram(program_name) - if not program.found(): - m = "Target {!r} can't be generated as {!r} could not be found" - raise MesonException(m.format(target_name, program_name)) - _found_programs[program_name] = program - return program - def get_include_args(include_dirs, prefix='-I'): ''' diff --git a/mesonbuild/modules/gnome.py b/mesonbuild/modules/gnome.py index 4dc29c3..5455118 100644 --- a/mesonbuild/modules/gnome.py +++ b/mesonbuild/modules/gnome.py @@ -25,7 +25,7 @@ from .. import mesonlib from .. import compilers from .. import interpreter from . import GResourceTarget, GResourceHeaderTarget, GirTarget, TypelibTarget, VapiTarget -from . import find_program, get_include_args +from . import get_include_args from . import ExtensionModule from . import ModuleReturnValue from ..mesonlib import MesonException, OrderedSet, Popen_safe, extract_as_list @@ -45,14 +45,14 @@ gdbuswarning_printed = False gresource_warning_printed = False _gir_has_extra_lib_arg = None -def gir_has_extra_lib_arg(): +def gir_has_extra_lib_arg(intr_obj): global _gir_has_extra_lib_arg if _gir_has_extra_lib_arg is not None: return _gir_has_extra_lib_arg _gir_has_extra_lib_arg = False try: - g_ir_scanner = find_program('g-ir-scanner', '').get_command() + g_ir_scanner = intr_obj.find_program_impl('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): @@ -302,7 +302,7 @@ class GnomeModule(ExtensionModule): link_command.append('-Wl,-rpath,' + libdir) if depends: depends.append(lib) - if gir_has_extra_lib_arg() and use_gir_args: + if gir_has_extra_lib_arg(self.interpreter) and use_gir_args: link_command.append('--extra-library=' + lib.name) else: link_command.append('-l' + lib.name) @@ -369,7 +369,7 @@ class GnomeModule(ExtensionModule): mlog.log('dependency {!r} not handled to build gir files'.format(dep)) continue - if gir_has_extra_lib_arg() and use_gir_args: + if gir_has_extra_lib_arg(self.interpreter) and use_gir_args: fixed_ldflags = OrderedSet() for ldflag in ldflags: if ldflag.startswith("-l"): @@ -388,8 +388,8 @@ class GnomeModule(ExtensionModule): raise MesonException('Gir takes one argument') if kwargs.get('install_dir'): raise MesonException('install_dir is not supported with generate_gir(), see "install_dir_gir" and "install_dir_typelib"') - giscanner = find_program('g-ir-scanner', 'Gir') - gicompiler = find_program('g-ir-compiler', 'Gir') + giscanner = self.interpreter.find_program_impl('g-ir-scanner') + gicompiler = self.interpreter.find_program_impl('g-ir-compiler') girtarget = args[0] while hasattr(girtarget, 'held_object'): girtarget = girtarget.held_object @@ -637,7 +637,7 @@ class GnomeModule(ExtensionModule): srcdir = os.path.join(state.build_to_src, state.subdir) outdir = state.subdir - cmd = [find_program('glib-compile-schemas', 'gsettings-compile')] + cmd = [self.interpreter.find_program_impl('glib-compile-schemas')] cmd += ['--targetdir', outdir, srcdir] kwargs['command'] = cmd kwargs['input'] = [] @@ -876,7 +876,7 @@ This will become a hard error in the future.''') namebase = args[0] xml_file = args[1] target_name = namebase + '-gdbus' - cmd = [find_program('gdbus-codegen', target_name)] + cmd = [self.interpreter.find_program_impl('gdbus-codegen')] if 'interface_prefix' in kwargs: cmd += ['--interface-prefix', kwargs.pop('interface_prefix')] if 'namespace' in kwargs: @@ -1013,7 +1013,7 @@ This will become a hard error in the future.''') elif arg not in known_custom_target_kwargs: raise MesonException( 'Mkenums does not take a %s keyword argument.' % (arg, )) - cmd = [find_program('glib-mkenums', 'mkenums')] + cmd + cmd = [self.interpreter.find_program_impl(['glib-mkenums', 'mkenums'])] + cmd custom_kwargs = {} for arg in known_custom_target_kwargs: if arg in kwargs: @@ -1209,7 +1209,7 @@ G_END_DECLS''' new_genmarshal = mesonlib.version_compare(self._get_native_glib_version(state), '>= 2.53.3') - cmd = [find_program('glib-genmarshal', output + '_genmarshal')] + cmd = [self.interpreter.find_program_impl('glib-genmarshal')] known_kwargs = ['internal', 'nostdinc', 'skip_source', 'stdinc', 'valist_marshallers', 'extra_args'] known_custom_target_kwargs = ['build_always', 'depends', @@ -1355,9 +1355,9 @@ G_END_DECLS''' pkg_cmd, vapi_depends, vapi_packages, vapi_includes = self._extract_vapi_packages(state, kwargs) target_name = 'generate_vapi({})'.format(library) if 'VAPIGEN' in os.environ: - cmd = [find_program(os.environ['VAPIGEN'], target_name)] + cmd = [self.interpreter.find_program_impl(os.environ['VAPIGEN'])] else: - cmd = [find_program('vapigen', target_name)] + cmd = [self.interpreter.find_program_impl('vapigen')] cmd += ['--quiet', '--library=' + library, '--directory=' + build_dir] cmd += self._vapi_args_to_command('--vapidir=', 'vapi_dirs', kwargs) cmd += self._vapi_args_to_command('--metadatadir=', 'metadata_dirs', kwargs) @@ -1412,5 +1412,5 @@ G_END_DECLS''' created_values.append(rv) return ModuleReturnValue(rv, created_values) -def initialize(): - return GnomeModule() +def initialize(*args, **kwargs): + return GnomeModule(*args, **kwargs) diff --git a/mesonbuild/modules/i18n.py b/mesonbuild/modules/i18n.py index 6c02fbb..4281200 100644 --- a/mesonbuild/modules/i18n.py +++ b/mesonbuild/modules/i18n.py @@ -143,5 +143,5 @@ class I18nModule(ExtensionModule): return ModuleReturnValue(None, targets) -def initialize(): - return I18nModule() +def initialize(*args, **kwargs): + return I18nModule(*args, **kwargs) diff --git a/mesonbuild/modules/modtest.py b/mesonbuild/modules/modtest.py index 758eeae..533989f 100644 --- a/mesonbuild/modules/modtest.py +++ b/mesonbuild/modules/modtest.py @@ -24,5 +24,5 @@ class TestModule(ExtensionModule): rv = ModuleReturnValue(None, []) return rv -def initialize(): - return TestModule() +def initialize(*args, **kwargs): + return TestModule(*args, **kwargs) diff --git a/mesonbuild/modules/pkgconfig.py b/mesonbuild/modules/pkgconfig.py index 6f0e717..934e2f4 100644 --- a/mesonbuild/modules/pkgconfig.py +++ b/mesonbuild/modules/pkgconfig.py @@ -393,5 +393,5 @@ class PkgConfigModule(ExtensionModule): res = build.Data(mesonlib.File(True, state.environment.get_scratch_dir(), pcfile), pkgroot) return ModuleReturnValue(res, [res]) -def initialize(): - return PkgConfigModule() +def initialize(*args, **kwargs): + return PkgConfigModule(*args, **kwargs) diff --git a/mesonbuild/modules/python3.py b/mesonbuild/modules/python3.py index d2bf1dc..79da29a 100644 --- a/mesonbuild/modules/python3.py +++ b/mesonbuild/modules/python3.py @@ -23,8 +23,8 @@ from ..build import known_shmod_kwargs class Python3Module(ExtensionModule): - def __init__(self): - super().__init__() + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) self.snippets.add('extension_module') @permittedSnippetKwargs(known_shmod_kwargs) @@ -69,5 +69,5 @@ class Python3Module(ExtensionModule): return ModuleReturnValue(path, []) -def initialize(): - return Python3Module() +def initialize(*args, **kwargs): + return Python3Module(*args, **kwargs) diff --git a/mesonbuild/modules/qt4.py b/mesonbuild/modules/qt4.py index 3011de7..29992d5 100644 --- a/mesonbuild/modules/qt4.py +++ b/mesonbuild/modules/qt4.py @@ -19,11 +19,11 @@ from . import ExtensionModule class Qt4Module(ExtensionModule, QtBaseModule): - def __init__(self): + def __init__(self, interpreter): QtBaseModule.__init__(self, qt_version=4) - ExtensionModule.__init__(self) + ExtensionModule.__init__(self, interpreter) -def initialize(): +def initialize(*args, **kwargs): mlog.warning('rcc dependencies will not work properly until this upstream issue is fixed:', mlog.bold('https://bugreports.qt.io/browse/QTBUG-45460')) - return Qt4Module() + return Qt4Module(*args, **kwargs) diff --git a/mesonbuild/modules/qt5.py b/mesonbuild/modules/qt5.py index 7b7acbb..19623ac 100644 --- a/mesonbuild/modules/qt5.py +++ b/mesonbuild/modules/qt5.py @@ -19,11 +19,11 @@ from . import ExtensionModule class Qt5Module(ExtensionModule, QtBaseModule): - def __init__(self): + def __init__(self, interpreter): QtBaseModule.__init__(self, qt_version=5) - ExtensionModule.__init__(self) + ExtensionModule.__init__(self, interpreter) -def initialize(): +def initialize(*args, **kwargs): mlog.warning('rcc dependencies will not work reliably until this upstream issue is fixed:', mlog.bold('https://bugreports.qt.io/browse/QTBUG-45460')) - return Qt5Module() + return Qt5Module(*args, **kwargs) diff --git a/mesonbuild/modules/rpm.py b/mesonbuild/modules/rpm.py index 5c9ed14..ba5bcaa 100644 --- a/mesonbuild/modules/rpm.py +++ b/mesonbuild/modules/rpm.py @@ -167,5 +167,5 @@ class RPMModule(ExtensionModule): mlog.log('RPM spec template written to %s.spec.\n' % proj) return ModuleReturnValue(None, []) -def initialize(): - return RPMModule() +def initialize(*args, **kwargs): + return RPMModule(*args, **kwargs) diff --git a/mesonbuild/modules/unstable_icestorm.py b/mesonbuild/modules/unstable_icestorm.py index 1f548b6..55c647f 100644 --- a/mesonbuild/modules/unstable_icestorm.py +++ b/mesonbuild/modules/unstable_icestorm.py @@ -18,17 +18,17 @@ from . import ExtensionModule class IceStormModule(ExtensionModule): - def __init__(self): - super().__init__() + def __init__(self, interpreter): + super().__init__(interpreter) self.snippets.add('project') self.yosys_bin = None def detect_binaries(self, interpreter): - self.yosys_bin = interpreter.func_find_program(None, ['yosys'], {}) - self.arachne_bin = interpreter.func_find_program(None, ['arachne-pnr'], {}) - self.icepack_bin = interpreter.func_find_program(None, ['icepack'], {}) - self.iceprog_bin = interpreter.func_find_program(None, ['iceprog'], {}) - self.icetime_bin = interpreter.func_find_program(None, ['icetime'], {}) + self.yosys_bin = interpreter.find_program_impl(['yosys']) + self.arachne_bin = interpreter.find_program_impl(['arachne-pnr']) + self.icepack_bin = interpreter.find_program_impl(['icepack']) + self.iceprog_bin = interpreter.find_program_impl(['iceprog']) + self.icetime_bin = interpreter.find_program_impl(['icetime']) def project(self, interpreter, state, args, kwargs): if not self.yosys_bin: @@ -80,5 +80,5 @@ class IceStormModule(ExtensionModule): interpreter.func_run_target(None, [time_name], { 'command': [self.icetime_bin, bin_target]}) -def initialize(): - return IceStormModule() +def initialize(*args, **kwargs): + return IceStormModule(*args, **kwargs) diff --git a/mesonbuild/modules/unstable_simd.py b/mesonbuild/modules/unstable_simd.py index b774cff..c41e96c 100644 --- a/mesonbuild/modules/unstable_simd.py +++ b/mesonbuild/modules/unstable_simd.py @@ -18,8 +18,8 @@ from . import ExtensionModule class SimdModule(ExtensionModule): - def __init__(self): - super().__init__() + def __init__(self, interpreter): + super().__init__(interpreter) self.snippets.add('check') # FIXME add Altivec and AVX512. self.isets = ('mmx', @@ -79,5 +79,5 @@ class SimdModule(ExtensionModule): result.append(interpreter.func_static_lib(None, [libname], lib_kwargs)) return [result, cdata] -def initialize(): - return SimdModule() +def initialize(*args, **kwargs): + return SimdModule(*args, **kwargs) diff --git a/mesonbuild/modules/windows.py b/mesonbuild/modules/windows.py index dc6e9d8..62cb9d1 100644 --- a/mesonbuild/modules/windows.py +++ b/mesonbuild/modules/windows.py @@ -104,5 +104,5 @@ class WindowsModule(ExtensionModule): return ModuleReturnValue(res_targets, [res_targets]) -def initialize(): - return WindowsModule() +def initialize(*args, **kwargs): + return WindowsModule(*args, **kwargs) |