aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/modules/sourceset.py
diff options
context:
space:
mode:
Diffstat (limited to 'mesonbuild/modules/sourceset.py')
-rw-r--r--mesonbuild/modules/sourceset.py46
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)