diff options
-rw-r--r-- | mesonbuild/interpreter.py | 30 | ||||
-rw-r--r-- | mesonbuild/modules/__init__.py | 7 | ||||
-rw-r--r-- | mesonbuild/modules/gnome.py | 3 | ||||
-rw-r--r-- | mesonbuild/modules/i18n.py | 9 | ||||
-rw-r--r-- | mesonbuild/modules/modtest.py | 3 | ||||
-rw-r--r-- | mesonbuild/modules/pkgconfig.py | 6 | ||||
-rw-r--r-- | mesonbuild/modules/python3.py | 13 | ||||
-rw-r--r-- | mesonbuild/modules/qt4.py | 3 | ||||
-rw-r--r-- | mesonbuild/modules/qt5.py | 3 | ||||
-rw-r--r-- | mesonbuild/modules/rpm.py | 3 | ||||
-rw-r--r-- | mesonbuild/modules/windows.py | 7 |
11 files changed, 54 insertions, 33 deletions
diff --git a/mesonbuild/interpreter.py b/mesonbuild/interpreter.py index bfc1453..29a5772 100644 --- a/mesonbuild/interpreter.py +++ b/mesonbuild/interpreter.py @@ -359,11 +359,11 @@ class BuildMachine(InterpreterObject): environment.detect_cpu_family(self.compilers), environment.detect_cpu(self.compilers), sys.byteorder) - self.methods.update({'system' : self.system_method, - 'cpu_family' : self.cpu_family_method, - 'cpu' : self.cpu_method, - 'endian' : self.endian_method, - }) + self.methods.update({'system': self.system_method, + 'cpu_family': self.cpu_family_method, + 'cpu': self.cpu_method, + 'endian': self.endian_method, + }) def cpu_family_method(self, args, kwargs): return self.held_object.cpu_family @@ -392,11 +392,11 @@ class CrossMachineInfo(InterpreterObject): cross_info['cpu_family'], cross_info['cpu'], cross_info['endian']) - self.methods.update({'system' : self.system_method, - 'cpu' : self.cpu_method, - 'cpu_family' : self.cpu_family_method, - 'endian' : self.endian_method, - }) + self.methods.update({'system': self.system_method, + 'cpu': self.cpu_method, + 'cpu_family': self.cpu_family_method, + 'endian': self.endian_method, + }) def cpu_family_method(self, args, kwargs): return self.held_object.cpu_family @@ -1011,10 +1011,12 @@ class ModuleHolder(InterpreterObject): state.build_machine = self.interpreter.builtin['build_machine'].held_object state.host_machine = self.interpreter.builtin['host_machine'].held_object state.target_machine = self.interpreter.builtin['target_machine'].held_object - state.interpreter = self.interpreter - value = fn(state, args, kwargs) - if num_targets != len(self.interpreter.build.targets): - raise InterpreterException('Extension module altered internal state illegally.') + if self.held_object.is_snippet(method_name): + value = fn(self.interpreter, state, args, kwargs) + else: + value = fn(state, args, kwargs) + if num_targets != len(self.interpreter.build.targets): + raise InterpreterException('Extension module altered internal state illegally.') return self.interpreter.module_method_callback(value) class MesonMain(InterpreterObject): diff --git a/mesonbuild/modules/__init__.py b/mesonbuild/modules/__init__.py index 16cada0..c7f24d4 100644 --- a/mesonbuild/modules/__init__.py +++ b/mesonbuild/modules/__init__.py @@ -6,6 +6,13 @@ from ..mesonlib import MesonException _found_programs = {} +class ExtensionModule: + def __init__(self): + 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] diff --git a/mesonbuild/modules/gnome.py b/mesonbuild/modules/gnome.py index ad34640..47fa68e 100644 --- a/mesonbuild/modules/gnome.py +++ b/mesonbuild/modules/gnome.py @@ -29,6 +29,7 @@ from .. import compilers from .. import interpreter from . import GResourceTarget, GResourceHeaderTarget, GirTarget, TypelibTarget, VapiTarget from . import find_program, get_include_args +from . import ExtensionModule # gresource compilation is broken due to the way @@ -57,7 +58,7 @@ def gir_has_extra_lib_arg(): pass return _gir_has_extra_lib_arg -class GnomeModule: +class GnomeModule(ExtensionModule): gir_dep = None @staticmethod diff --git a/mesonbuild/modules/i18n.py b/mesonbuild/modules/i18n.py index fa52463..5738cb3 100644 --- a/mesonbuild/modules/i18n.py +++ b/mesonbuild/modules/i18n.py @@ -12,13 +12,14 @@ # See the License for the specific language governing permissions and # limitations under the License. +import sys +import shutil + from os import path from .. import coredata, mesonlib, build from ..mesonlib import MesonException from . import ModuleReturnValue - -import sys -import shutil +from . import ExtensionModule PRESET_ARGS = { 'glib': [ @@ -46,7 +47,7 @@ PRESET_ARGS = { ] } -class I18nModule: +class I18nModule(ExtensionModule): def merge_file(self, state, args, kwargs): podir = kwargs.pop('po_dir', None) diff --git a/mesonbuild/modules/modtest.py b/mesonbuild/modules/modtest.py index dc347e2..3e11b70 100644 --- a/mesonbuild/modules/modtest.py +++ b/mesonbuild/modules/modtest.py @@ -13,8 +13,9 @@ # limitations under the License. from . import ModuleReturnValue +from . import ExtensionModule -class TestModule: +class TestModule(ExtensionModule): def print_hello(self, state, args, kwargs): print('Hello from a Meson module') diff --git a/mesonbuild/modules/pkgconfig.py b/mesonbuild/modules/pkgconfig.py index 38358f3..c558d48 100644 --- a/mesonbuild/modules/pkgconfig.py +++ b/mesonbuild/modules/pkgconfig.py @@ -12,14 +12,16 @@ # See the License for the specific language governing permissions and # limitations under the License. +import os + from .. import build from .. import mesonlib from .. import mlog from . import ModuleReturnValue +from . import ExtensionModule -import os -class PkgConfigModule: +class PkgConfigModule(ExtensionModule): def _get_lname(self, l, msg, pcfile): # Nothing special diff --git a/mesonbuild/modules/python3.py b/mesonbuild/modules/python3.py index 370e925..9b6e71e 100644 --- a/mesonbuild/modules/python3.py +++ b/mesonbuild/modules/python3.py @@ -12,13 +12,16 @@ # See the License for the specific language governing permissions and # limitations under the License. -from .. import coredata, build from .. import mesonlib -import os -class Python3Module: +from . import ExtensionModule - def extension_module(self, state, args, kwargs): +class Python3Module(ExtensionModule): + def __init__(self): + super().__init__() + self.snippets.add('extension_module') + + def extension_module(self, interpreter, state, args, kwargs): if 'name_prefix' in kwargs: raise mesonlib.MesonException('Name_prefix is set automatically, specifying it is forbidden.') if 'name_suffix' in kwargs: @@ -34,7 +37,7 @@ class Python3Module: suffix = [] kwargs['name_prefix'] = '' kwargs['name_suffix'] = suffix - return state.interpreter.func_shared_module(None, args, kwargs) + return interpreter.func_shared_module(None, args, kwargs) def initialize(): return Python3Module() diff --git a/mesonbuild/modules/qt4.py b/mesonbuild/modules/qt4.py index 6759270..9a9ec04 100644 --- a/mesonbuild/modules/qt4.py +++ b/mesonbuild/modules/qt4.py @@ -17,10 +17,11 @@ from .. import mlog from .. import build from ..mesonlib import MesonException, Popen_safe from ..dependencies import Qt4Dependency +from . import ExtensionModule import xml.etree.ElementTree as ET from . import ModuleReturnValue -class Qt4Module(): +class Qt4Module(ExtensionModule): tools_detected = False def _detect_tools(self, env): diff --git a/mesonbuild/modules/qt5.py b/mesonbuild/modules/qt5.py index 53f1cb5..cb5c261 100644 --- a/mesonbuild/modules/qt5.py +++ b/mesonbuild/modules/qt5.py @@ -17,10 +17,11 @@ from .. import mlog from .. import build from ..mesonlib import MesonException, Popen_safe from ..dependencies import Qt5Dependency +from . import ExtensionModule import xml.etree.ElementTree as ET from . import ModuleReturnValue -class Qt5Module(): +class Qt5Module(ExtensionModule): tools_detected = False def _detect_tools(self, env): diff --git a/mesonbuild/modules/rpm.py b/mesonbuild/modules/rpm.py index a696db9..bd8a3c4 100644 --- a/mesonbuild/modules/rpm.py +++ b/mesonbuild/modules/rpm.py @@ -21,10 +21,11 @@ import datetime from .. import mlog from . import GirTarget, TypelibTarget from . import ModuleReturnValue +from . import ExtensionModule import os -class RPMModule: +class RPMModule(ExtensionModule): def generate_spec_template(self, state, args, kwargs): compiler_deps = set() diff --git a/mesonbuild/modules/windows.py b/mesonbuild/modules/windows.py index 8574dbe..8203789 100644 --- a/mesonbuild/modules/windows.py +++ b/mesonbuild/modules/windows.py @@ -12,14 +12,15 @@ # See the License for the specific language governing permissions and # limitations under the License. +import os + from .. import mesonlib, dependencies, build from ..mesonlib import MesonException from . import get_include_args from . import ModuleReturnValue +from . import ExtensionModule -import os - -class WindowsModule: +class WindowsModule(ExtensionModule): def detect_compiler(self, compilers): for l in ('c', 'cpp'): |