diff options
Diffstat (limited to 'mesonbuild/modules/sourceset.py')
-rw-r--r-- | mesonbuild/modules/sourceset.py | 46 |
1 files changed, 23 insertions, 23 deletions
diff --git a/mesonbuild/modules/sourceset.py b/mesonbuild/modules/sourceset.py index 73cfbe1..1340959 100644 --- a/mesonbuild/modules/sourceset.py +++ b/mesonbuild/modules/sourceset.py @@ -15,10 +15,9 @@ from collections import namedtuple from .. import mesonlib from ..mesonlib import listify, OrderedSet -from . import ExtensionModule +from . import ExtensionModule, ModuleObject, MutableModuleObject from ..interpreterbase import ( noPosargs, noKwargs, permittedKwargs, - InterpreterObject, MutableInterpreterObject, ObjectHolder, InterpreterException, InvalidArguments, InvalidCode, FeatureNew, ) from ..interpreter import ( @@ -29,10 +28,10 @@ from ..interpreter import ( SourceSetRule = namedtuple('SourceSetRule', 'keys sources if_false sourcesets dependencies extra_deps') SourceFiles = namedtuple('SourceFiles', 'sources dependencies') -class SourceSetHolder(MutableInterpreterObject, ObjectHolder): +class SourceSet(MutableModuleObject): def __init__(self, interpreter): - MutableInterpreterObject.__init__(self) - ObjectHolder.__init__(self, list()) + super().__init__() + self.rules = [] self.subproject = interpreter.subproject self.environment = interpreter.environment self.subdir = interpreter.subdir @@ -77,7 +76,7 @@ class SourceSetHolder(MutableInterpreterObject, ObjectHolder): return keys, deps @permittedKwargs(['when', 'if_false', 'if_true']) - def add_method(self, args, kwargs): + def add_method(self, state, args, kwargs): if self.frozen: raise InvalidCode('Tried to use \'add\' after querying the source set') when = listify(kwargs.get('when', [])) @@ -90,10 +89,10 @@ class SourceSetHolder(MutableInterpreterObject, ObjectHolder): keys, dependencies = self.check_conditions(when) sources, extra_deps = self.check_source_files(if_true, True) if_false, _ = self.check_source_files(if_false, False) - self.held_object.append(SourceSetRule(keys, sources, if_false, [], dependencies, extra_deps)) + self.rules.append(SourceSetRule(keys, sources, if_false, [], dependencies, extra_deps)) @permittedKwargs(['when', 'if_true']) - def add_all_method(self, args, kwargs): + def add_all_method(self, state, args, kwargs): if self.frozen: raise InvalidCode('Tried to use \'add_all\' after querying the source set') when = listify(kwargs.get('when', [])) @@ -102,17 +101,18 @@ class SourceSetHolder(MutableInterpreterObject, ObjectHolder): if_true = args elif args: raise InterpreterException('add_all called with both positional and keyword arguments') + if_true = mesonlib.unholder(if_true) keys, dependencies = self.check_conditions(when) for s in if_true: - if not isinstance(s, SourceSetHolder): + if not isinstance(s, SourceSet): raise InvalidCode('Arguments to \'add_all\' after the first must be source sets') s.frozen = True - self.held_object.append(SourceSetRule(keys, [], [], if_true, dependencies, [])) + self.rules.append(SourceSetRule(keys, [], [], if_true, dependencies, [])) def collect(self, enabled_fn, all_sources, into=None): if not into: into = SourceFiles(OrderedSet(), OrderedSet()) - for entry in self.held_object: + for entry in self.rules: if all(x.found() for x in entry.dependencies) and \ all(enabled_fn(key) for key in entry.keys): into.sources.update(entry.sources) @@ -127,7 +127,7 @@ class SourceSetHolder(MutableInterpreterObject, ObjectHolder): @noKwargs @noPosargs - def all_sources_method(self, args, kwargs): + def all_sources_method(self, state, args, kwargs): self.frozen = True files = self.collect(lambda x: True, True) return list(files.sources) @@ -135,13 +135,13 @@ class SourceSetHolder(MutableInterpreterObject, ObjectHolder): @noKwargs @noPosargs @FeatureNew('source_set.all_dependencies() method', '0.52.0') - def all_dependencies_method(self, args, kwargs): + def all_dependencies_method(self, state, args, kwargs): self.frozen = True files = self.collect(lambda x: True, True) return list(files.dependencies) @permittedKwargs(['strict']) - def apply_method(self, args, kwargs): + def apply_method(self, state, args, kwargs): if len(args) != 1: raise InterpreterException('Apply takes exactly one argument') config_data = args[0] @@ -163,13 +163,13 @@ class SourceSetHolder(MutableInterpreterObject, ObjectHolder): return config_cache[key] files = self.collect(_get_from_config_data, False) - res = SourceFilesHolder(files) + res = SourceFilesObject(files) return res -class SourceFilesHolder(InterpreterObject, ObjectHolder): +class SourceFilesObject(ModuleObject): def __init__(self, files): - InterpreterObject.__init__(self) - ObjectHolder.__init__(self, files) + super().__init__() + self.files = files self.methods.update({ 'sources': self.sources_method, 'dependencies': self.dependencies_method, @@ -177,13 +177,13 @@ class SourceFilesHolder(InterpreterObject, ObjectHolder): @noPosargs @noKwargs - def sources_method(self, args, kwargs): - return list(self.held_object.sources) + def sources_method(self, state, args, kwargs): + return list(self.files.sources) @noPosargs @noKwargs - def dependencies_method(self, args, kwargs): - return list(self.held_object.dependencies) + def dependencies_method(self, state, args, kwargs): + return list(self.files.dependencies) class SourceSetModule(ExtensionModule): @FeatureNew('SourceSet module', '0.51.0') @@ -193,7 +193,7 @@ class SourceSetModule(ExtensionModule): @noKwargs @noPosargs def source_set(self, state, args, kwargs): - return SourceSetHolder(self.interpreter) + return SourceSet(self.interpreter) def initialize(*args, **kwargs): return SourceSetModule(*args, **kwargs) |