aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/modules
diff options
context:
space:
mode:
authorJussi Pakkanen <jpakkane@gmail.com>2018-04-16 22:22:02 +0300
committerGitHub <noreply@github.com>2018-04-16 22:22:02 +0300
commit0e00470d8c9711e62848a1d697d156cbab66e0bc (patch)
tree192047ead98b0c212f5b6b5b730f3f7d9ed87157 /mesonbuild/modules
parent5e45f4c621f14176478e3160e2bb3c6c77796b41 (diff)
parent6cdd14fc4eca8bddd4716ab5a9ebf09476846e6b (diff)
downloadmeson-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__.py15
-rw-r--r--mesonbuild/modules/gnome.py30
-rw-r--r--mesonbuild/modules/i18n.py4
-rw-r--r--mesonbuild/modules/modtest.py4
-rw-r--r--mesonbuild/modules/pkgconfig.py4
-rw-r--r--mesonbuild/modules/python3.py8
-rw-r--r--mesonbuild/modules/qt4.py8
-rw-r--r--mesonbuild/modules/qt5.py8
-rw-r--r--mesonbuild/modules/rpm.py4
-rw-r--r--mesonbuild/modules/unstable_icestorm.py18
-rw-r--r--mesonbuild/modules/unstable_simd.py8
-rw-r--r--mesonbuild/modules/windows.py4
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)