diff options
author | Daniel Mensinger <daniel@mensinger-ka.de> | 2021-06-17 00:26:50 +0200 |
---|---|---|
committer | Daniel Mensinger <daniel@mensinger-ka.de> | 2021-06-18 23:48:33 +0200 |
commit | 34c28dc92cb4f28e32e633297e4b8a737228aae5 (patch) | |
tree | dbe99c4d0d76eca3b08797a751d1b81ce05fd928 /mesonbuild/modules | |
parent | 84a3e459a8618956eb3364900d2bd522a70b7fe7 (diff) | |
download | meson-34c28dc92cb4f28e32e633297e4b8a737228aae5.zip meson-34c28dc92cb4f28e32e633297e4b8a737228aae5.tar.gz meson-34c28dc92cb4f28e32e633297e4b8a737228aae5.tar.bz2 |
holders: remove unholder
Diffstat (limited to 'mesonbuild/modules')
-rw-r--r-- | mesonbuild/modules/__init__.py | 18 | ||||
-rw-r--r-- | mesonbuild/modules/cmake.py | 17 | ||||
-rw-r--r-- | mesonbuild/modules/gnome.py | 70 | ||||
-rw-r--r-- | mesonbuild/modules/hotdoc.py | 11 | ||||
-rw-r--r-- | mesonbuild/modules/i18n.py | 3 | ||||
-rw-r--r-- | mesonbuild/modules/pkgconfig.py | 15 | ||||
-rw-r--r-- | mesonbuild/modules/sourceset.py | 1 | ||||
-rw-r--r-- | mesonbuild/modules/unstable_cuda.py | 11 | ||||
-rw-r--r-- | mesonbuild/modules/unstable_rust.py | 11 | ||||
-rw-r--r-- | mesonbuild/modules/unstable_simd.py | 4 | ||||
-rw-r--r-- | mesonbuild/modules/windows.py | 12 |
11 files changed, 85 insertions, 88 deletions
diff --git a/mesonbuild/modules/__init__.py b/mesonbuild/modules/__init__.py index 69bb552..2b53de5 100644 --- a/mesonbuild/modules/__init__.py +++ b/mesonbuild/modules/__init__.py @@ -18,13 +18,12 @@ import os from .. import build -from ..mesonlib import unholder, relpath +from ..mesonlib import relpath, HoldableObject import typing as T if T.TYPE_CHECKING: from ..interpreter import Interpreter - from ..interpreter.interpreterobjects import IncludeDirsHolder, ExternalProgramHolder - from ..interpreterbase import TYPE_var, TYPE_nvar, TYPE_nkwargs + from ..interpreterbase import TYPE_var, TYPE_kwargs from ..programs import ExternalProgram class ModuleState: @@ -61,7 +60,7 @@ class ModuleState: self.target_machine = interpreter.builtin['target_machine'].held_object self.current_node = interpreter.current_node - def get_include_args(self, include_dirs: T.Iterable[T.Union[str, 'IncludeDirsHolder']], prefix: str = '-I') -> T.List[str]: + def get_include_args(self, include_dirs: T.Iterable[T.Union[str, build.IncludeDirs]], prefix: str = '-I') -> T.List[str]: if not include_dirs: return [] @@ -69,7 +68,7 @@ class ModuleState: builddir = self.environment.get_build_dir() dirs_str: T.List[str] = [] - for dirs in unholder(include_dirs): + for dirs in include_dirs: if isinstance(dirs, str): dirs_str += [f'{prefix}{dirs}'] continue @@ -89,14 +88,17 @@ class ModuleState: def find_program(self, prog: T.Union[str, T.List[str]], required: bool = True, version_func: T.Optional[T.Callable[['ExternalProgram'], str]] = None, - wanted: T.Optional[str] = None) -> 'ExternalProgramHolder': + wanted: T.Optional[str] = None) -> 'ExternalProgram': return self._interpreter.find_program_impl(prog, required=required, version_func=version_func, wanted=wanted) -class ModuleObject: +class ModuleObject(HoldableObject): """Base class for all objects returned by modules """ def __init__(self) -> None: - self.methods = {} # type: T.Dict[str, T.Callable[[ModuleState, T.List[TYPE_nvar], TYPE_nkwargs], T.Union[ModuleReturnValue, TYPE_var]]] + self.methods: T.Dict[ + str, + T.Callable[[ModuleState, T.List[TYPE_var], TYPE_kwargs], T.Union[ModuleReturnValue, TYPE_var]] + ] = {} class MutableModuleObject(ModuleObject): pass diff --git a/mesonbuild/modules/cmake.py b/mesonbuild/modules/cmake.py index fac3b24..cb37edc 100644 --- a/mesonbuild/modules/cmake.py +++ b/mesonbuild/modules/cmake.py @@ -18,9 +18,9 @@ import typing as T from . import ExtensionModule, ModuleReturnValue, ModuleObject -from .. import build, mesonlib, mlog +from .. import build, mesonlib, mlog, dependencies from ..cmake import SingleTargetOptions, TargetOptions, cmake_defines_to_args -from ..interpreter import ConfigurationDataHolder, SubprojectHolder, DependencyHolder +from ..interpreter import ConfigurationDataObject, SubprojectHolder from ..interpreterbase import ( FeatureNew, FeatureNewKwargs, @@ -32,6 +32,7 @@ from ..interpreterbase import ( noKwargs, InvalidArguments, + InterpreterException, ) from ..programs import ExternalProgram @@ -109,11 +110,11 @@ class CMakeSubproject(ModuleObject): def dependency(self, state, args, kwargs): info = self._args_to_info(args) orig = self.get_variable(state, [info['dep']], {}) - assert isinstance(orig, DependencyHolder) - actual = orig.include_type_method([], {}) + assert isinstance(orig, dependencies.Dependency) + actual = orig.include_type if 'include_type' in kwargs and kwargs['include_type'] != actual: mlog.debug('Current include type is {}. Converting to requested {}'.format(actual, kwargs['include_type'])) - return orig.as_system_method([kwargs['include_type']], {}) + return orig.generate_system_dependency(kwargs['include_type']) return orig @noKwargs @@ -351,7 +352,7 @@ class CmakeModule(ExtensionModule): if 'configuration' not in kwargs: raise mesonlib.MesonException('"configuration" not specified.') conf = kwargs['configuration'] - if not isinstance(conf, ConfigurationDataHolder): + if not isinstance(conf, ConfigurationDataObject): raise mesonlib.MesonException('Argument "configuration" is not of type configuration_data') prefix = state.environment.coredata.get_option(mesonlib.OptionKey('prefix')) @@ -365,7 +366,7 @@ class CmakeModule(ExtensionModule): extra = PACKAGE_INIT_EXT.replace('@absInstallDir@', abs_install_dir) extra = extra.replace('@installPrefix@', prefix) - self.create_package_file(ifile_abs, ofile_abs, PACKAGE_RELATIVE_PATH, extra, conf.held_object) + self.create_package_file(ifile_abs, ofile_abs, PACKAGE_RELATIVE_PATH, extra, conf.conf_data) conf.mark_used() conffile = os.path.normpath(inputfile.relative_name()) @@ -389,7 +390,7 @@ class CmakeModule(ExtensionModule): raise InterpreterException('"options" cannot be used together with "cmake_options"') dirname = args[0] subp = self.interpreter.do_subproject(dirname, 'cmake', kwargs) - if not subp.held_object: + if not subp.found(): return subp return CMakeSubproject(subp, dirname) diff --git a/mesonbuild/modules/gnome.py b/mesonbuild/modules/gnome.py index 0a72ad6..0ae1c70 100644 --- a/mesonbuild/modules/gnome.py +++ b/mesonbuild/modules/gnome.py @@ -30,7 +30,7 @@ from . import ExtensionModule from . import ModuleReturnValue from ..mesonlib import ( MachineChoice, MesonException, OrderedSet, Popen_safe, extract_as_list, - join_args, unholder, + join_args, HoldableObject ) from ..dependencies import Dependency, PkgConfigDependency, InternalDependency from ..interpreterbase import noPosargs, noKwargs, permittedKwargs, FeatureNew, FeatureNewKwargs, FeatureDeprecatedKwargs @@ -39,6 +39,7 @@ from ..build import CustomTarget, CustomTargetIndex, GeneratedList if T.TYPE_CHECKING: from ..compilers import Compiler + from ..interpreter import Interpreter # gresource compilation is broken due to the way # the resource compiler and Ninja clash about it @@ -103,14 +104,13 @@ class GnomeModule(ExtensionModule): def _get_dep(self, state, depname, native=False, required=True): kwargs = {'native': native, 'required': required} - holder = self.interpreter.func_dependency(state.current_node, [depname], kwargs) - return holder.held_object + return self.interpreter.func_dependency(state.current_node, [depname], kwargs) def _get_native_binary(self, state, name, depname, varname, required=True): # Look in overrides in case glib/gtk/etc are built as subproject prog = self.interpreter.program_from_overrides([name], []) if prog is not None: - return unholder(prog) + return prog # Look in machine file prog = state.environment.lookup_binary_entry(MachineChoice.HOST, name) @@ -125,7 +125,7 @@ class GnomeModule(ExtensionModule): return ExternalProgram(name, value) # Normal program lookup - return unholder(state.find_program(name, required=required)) + return state.find_program(name, required=required) @permittedKwargs({'glib_compile_schemas', 'gio_querymodules', 'gtk_update_icon_cache'}) @noPosargs @@ -179,7 +179,7 @@ class GnomeModule(ExtensionModule): # Validate dependencies subdirs = [] depends = [] - for (ii, dep) in enumerate(unholder(dependencies)): + for (ii, dep) in enumerate(dependencies): if isinstance(dep, mesonlib.File): subdirs.append(dep.subdir) elif isinstance(dep, (build.CustomTarget, build.CustomTargetIndex)): @@ -323,7 +323,7 @@ class GnomeModule(ExtensionModule): subdirs = [] for resfile in dep_files[:]: resbasename = os.path.basename(resfile) - for dep in unholder(dependencies): + for dep in dependencies: if isinstance(dep, mesonlib.File): if dep.fname != resbasename: continue @@ -399,7 +399,7 @@ class GnomeModule(ExtensionModule): # require two args in order, such as -framework AVFoundation external_ldflags_nodedup = [] gi_includes = OrderedSet() - deps = mesonlib.unholder(mesonlib.listify(deps)) + deps = mesonlib.listify(deps) for dep in deps: if isinstance(dep, Dependency): @@ -409,7 +409,7 @@ class GnomeModule(ExtensionModule): if isinstance(dep, InternalDependency): cflags.update(dep.get_compile_args()) cflags.update(state.get_include_args(dep.include_directories)) - for lib in unholder(dep.libraries): + for lib in dep.libraries: if isinstance(lib, build.SharedLibrary): internal_ldflags.update(self._get_link_args(state, lib, depends, include_rpath)) libdepflags = self._get_dependencies_flags(lib.get_external_deps(), state, depends, include_rpath, @@ -426,7 +426,7 @@ class GnomeModule(ExtensionModule): external_ldflags.update(extdepflags[2]) external_ldflags_nodedup += extdepflags[3] gi_includes.update(extdepflags[4]) - for source in unholder(dep.sources): + for source in dep.sources: if isinstance(source, GirTarget): gi_includes.update([os.path.join(state.environment.get_build_dir(), source.get_subdir())]) @@ -480,9 +480,6 @@ class GnomeModule(ExtensionModule): return cflags, internal_ldflags, external_ldflags, external_ldflags_nodedup, gi_includes def _unwrap_gir_target(self, girtarget, state): - while hasattr(girtarget, 'held_object'): - girtarget = girtarget.held_object - if not isinstance(girtarget, (build.Executable, build.SharedLibrary, build.StaticLibrary)): raise MesonException('Gir target must be an executable or library') @@ -512,8 +509,6 @@ class GnomeModule(ExtensionModule): @functools.lru_cache(maxsize=None) def _gir_has_option(self, option) -> bool: exe = self.giscanner - if hasattr(exe, 'held_object'): - exe = exe.held_object if isinstance(exe, OverrideProgram): # Handle overridden g-ir-scanner assert option in ['--extra-library', '--sources-top-dirs'] @@ -539,7 +534,7 @@ class GnomeModule(ExtensionModule): link_with = mesonlib.extract_as_list(kwargs, 'link_with', pop = True) for link in link_with: - ret += self._get_link_args(state, link.held_object, depends, + ret += self._get_link_args(state, link, depends, use_gir_args=True) return ret @@ -549,7 +544,7 @@ class GnomeModule(ExtensionModule): if 'includes' in kwargs: includes = mesonlib.extract_as_list(kwargs, 'includes', pop = True) - for inc in unholder(includes): + for inc in includes: if isinstance(inc, str): ret += [f'--include={inc}'] elif isinstance(inc, GirTarget): @@ -605,7 +600,7 @@ class GnomeModule(ExtensionModule): def _scan_inc_dirs(self, kwargs): ret = mesonlib.extract_as_list(kwargs, 'include_directories', pop = True) for incd in ret: - if not isinstance(incd.held_object, (str, build.IncludeDirs)): + if not isinstance(incd, (str, build.IncludeDirs)): raise MesonException( 'Gir include dirs should be include_directories().') return ret @@ -708,7 +703,7 @@ class GnomeModule(ExtensionModule): gir_filelist_filename = os.path.join(gir_filelist_dir, f'{ns}_{nsversion}_gir_filelist') with open(gir_filelist_filename, 'w', encoding='utf-8') as gir_filelist: - for s in unholder(libsources): + for s in libsources: if isinstance(s, (build.CustomTarget, build.CustomTargetIndex)): for custom_output in s.get_outputs(): gir_filelist.write(os.path.join(state.environment.get_build_dir(), @@ -763,11 +758,11 @@ class GnomeModule(ExtensionModule): # dependencies and also find the include directories needed for the # typelib generation custom target below. typelib_includes = [] - for dep in unholder(deps): + for dep in deps: # Add a dependency on each GirTarget listed in dependencies and add # the directory where it will be generated to the typelib includes if isinstance(dep, InternalDependency): - for source in unholder(dep.sources): + for source in dep.sources: if isinstance(source, GirTarget) and source not in depends: depends.append(source) subdir = os.path.join(state.environment.get_build_dir(), @@ -846,7 +841,7 @@ class GnomeModule(ExtensionModule): langs_compilers = self._get_girtargets_langs_compilers(girtargets) cflags, internal_ldflags, external_ldflags = self._get_langs_compilers_flags(state, langs_compilers) deps = self._get_gir_targets_deps(girtargets) - deps += mesonlib.unholder(extract_as_list(kwargs, 'dependencies', pop=True)) + deps += extract_as_list(kwargs, 'dependencies', pop=True) deps += [gir_dep] typelib_includes = self._gather_typelib_includes_and_update_depends(state, deps, depends) # ldflags will be misinterpreted by gir scanner (showing @@ -898,7 +893,7 @@ class GnomeModule(ExtensionModule): if fatal_warnings: scan_command.append('--warn-error') - generated_files = [unholder(f) for f in libsources if isinstance(unholder(f), (GeneratedList, CustomTarget, CustomTargetIndex))] + generated_files = [f for f in libsources if isinstance(f, (GeneratedList, CustomTarget, CustomTargetIndex))] scan_target = self._make_gir_target(state, girfile, scan_command, generated_files, depends, kwargs) @@ -1044,8 +1039,7 @@ class GnomeModule(ExtensionModule): src_dirs = mesonlib.extract_as_list(kwargs, 'src_dir') header_dirs = [] for src_dir in src_dirs: - if hasattr(src_dir, 'held_object'): - src_dir = src_dir.held_object + if isinstance(src_dir, HoldableObject): if not isinstance(src_dir, build.IncludeDirs): raise MesonException('Invalid keyword argument for src_dir.') for inc_dir in src_dir.get_incdirs(): @@ -1068,7 +1062,7 @@ class GnomeModule(ExtensionModule): for tool in ['scan', 'scangobj', 'mkdb', 'mkhtml', 'fixxref']: program_name = 'gtkdoc-' + tool program = state.find_program(program_name) - path = program.held_object.get_path() + path = program.get_path() args.append(f'--{program_name}={path}') if namespace: args.append('--namespace=' + namespace) @@ -1082,7 +1076,7 @@ class GnomeModule(ExtensionModule): depends = [] content_files = [] - for s in unholder(mesonlib.extract_as_list(kwargs, 'content_files')): + for s in mesonlib.extract_as_list(kwargs, 'content_files'): if isinstance(s, (build.CustomTarget, build.CustomTargetIndex)): depends.append(s) for o in s.get_outputs(): @@ -1134,14 +1128,14 @@ class GnomeModule(ExtensionModule): def _get_build_args(self, kwargs, state, depends): args = [] - deps = mesonlib.unholder(extract_as_list(kwargs, 'dependencies')) + deps = extract_as_list(kwargs, 'dependencies') cflags = [] cflags.extend(mesonlib.stringlistify(kwargs.pop('c_args', []))) deps_cflags, internal_ldflags, external_ldflags, gi_includes = \ self._get_dependencies_flags(deps, state, depends, include_rpath=True) inc_dirs = mesonlib.extract_as_list(kwargs, 'include_directories') for incd in inc_dirs: - if not isinstance(incd.held_object, (str, build.IncludeDirs)): + if not isinstance(incd, (str, build.IncludeDirs)): raise MesonException( 'Gir include dirs should be include_directories().') @@ -1678,7 +1672,7 @@ G_END_DECLS''' vapi_includes = [] ret = [] remaining_args = [] - for arg in unholder(arg_list): + for arg in arg_list: if isinstance(arg, InternalDependency): targets = [t for t in arg.sources if isinstance(t, VapiTarget)] for target in targets: @@ -1752,11 +1746,11 @@ G_END_DECLS''' for i in inputs: if isinstance(i, str): cmd.append(os.path.join(source_dir, i)) - elif hasattr(i, 'held_object') and isinstance(i.held_object, GirTarget): - link_with += self._get_vapi_link_with(i.held_object) + elif isinstance(i, GirTarget): + link_with += self._get_vapi_link_with(i) subdir = os.path.join(state.environment.get_build_dir(), - i.held_object.get_subdir()) - gir_file = os.path.join(subdir, i.held_object.get_outputs()[0]) + i.get_subdir()) + gir_file = os.path.join(subdir, i.get_outputs()[0]) cmd.append(gir_file) else: raise MesonException('Input must be a str or GirTarget') @@ -1791,4 +1785,10 @@ G_END_DECLS''' return ModuleReturnValue(rv, created_values) def initialize(*args, **kwargs): - return GnomeModule(*args, **kwargs) + mod = GnomeModule(*args, **kwargs) + mod.interpreter.append_holder_map(GResourceTarget, interpreter.CustomTargetHolder) + mod.interpreter.append_holder_map(GResourceHeaderTarget, interpreter.CustomTargetHolder) + mod.interpreter.append_holder_map(GirTarget, interpreter.CustomTargetHolder) + mod.interpreter.append_holder_map(TypelibTarget, interpreter.CustomTargetHolder) + mod.interpreter.append_holder_map(VapiTarget, interpreter.CustomTargetHolder) + return mod diff --git a/mesonbuild/modules/hotdoc.py b/mesonbuild/modules/hotdoc.py index 90635e6..26026fb 100644 --- a/mesonbuild/modules/hotdoc.py +++ b/mesonbuild/modules/hotdoc.py @@ -105,7 +105,6 @@ class HotdocTargetBuilder: self.cmd.extend([option, value]) def check_extra_arg_type(self, arg, value): - value = getattr(value, 'held_object', value) if isinstance(value, list): for v in value: self.check_extra_arg_type(arg, v) @@ -188,7 +187,6 @@ class HotdocTargetBuilder: def process_dependencies(self, deps): cflags = set() for dep in mesonlib.listify(ensure_list(deps)): - dep = getattr(dep, "held_object", dep) if isinstance(dep, InternalDependency): inc_args = self.state.get_include_args(dep.include_directories) cflags.update([self.replace_dirs_in_string(x) @@ -232,7 +230,6 @@ class HotdocTargetBuilder: def flatten_config_command(self): cmd = [] for arg in mesonlib.listify(self.cmd, flatten=True): - arg = getattr(arg, 'held_object', arg) if isinstance(arg, mesonlib.File): arg = arg.absolute_path(self.state.environment.get_source_dir(), self.state.environment.get_build_dir()) @@ -371,7 +368,7 @@ class HotdocTargetHolder(CustomTargetHolder): def config_path_method(self, *args, **kwargs): conf = self.held_object.hotdoc_conf.absolute_path(self.interpreter.environment.source_dir, self.interpreter.environment.build_dir) - return self.interpreter.holderify(conf) + return conf class HotdocTarget(build.CustomTarget): @@ -422,7 +419,7 @@ class HotDocModule(ExtensionModule): project_name = args[0] builder = HotdocTargetBuilder(project_name, state, self.hotdoc, self.interpreter, kwargs) target, install_script = builder.make_targets() - targets = [HotdocTargetHolder(target, self.interpreter)] + targets = [target] if install_script: targets.append(install_script) @@ -430,4 +427,6 @@ class HotDocModule(ExtensionModule): def initialize(interpreter): - return HotDocModule(interpreter) + mod = HotDocModule(interpreter) + mod.interpreter.append_holder_map(HotdocTarget, HotdocTargetHolder) + return mod diff --git a/mesonbuild/modules/i18n.py b/mesonbuild/modules/i18n.py index 98a8b0d..f10fdbe 100644 --- a/mesonbuild/modules/i18n.py +++ b/mesonbuild/modules/i18n.py @@ -108,7 +108,8 @@ class I18nModule(ExtensionModule): kwargs['command'] = command inputfile = kwargs['input'] - if hasattr(inputfile, 'held_object'): + # I have no idea why/how this if isinstance(inputfile, mesonlib.HoldableObject) works / used to work... + if isinstance(inputfile, mesonlib.HoldableObject): ct = build.CustomTarget(kwargs['output'] + '_merge', state.subdir, state.subproject, kwargs) else: if isinstance(inputfile, list): diff --git a/mesonbuild/modules/pkgconfig.py b/mesonbuild/modules/pkgconfig.py index 13af3a6..f42c1e6 100644 --- a/mesonbuild/modules/pkgconfig.py +++ b/mesonbuild/modules/pkgconfig.py @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -import os, types +import os from pathlib import PurePath from .. import build @@ -22,7 +22,9 @@ from .. import mesonlib from .. import mlog from . import ModuleReturnValue from . import ExtensionModule -from ..interpreterbase import permittedKwargs, FeatureNew, FeatureNewKwargs +from ..interpreterbase import permittedKwargs, FeatureNew, FeatureNewKwargs, TYPE_var, TYPE_kwargs + +import typing as T already_warned_objs = set() @@ -75,7 +77,7 @@ class DependenciesHelper: def _process_reqs(self, reqs): '''Returns string names of requirements''' processed_reqs = [] - for obj in mesonlib.unholder(mesonlib.listify(reqs)): + for obj in mesonlib.listify(reqs): if not isinstance(obj, str): FeatureNew.single_use('pkgconfig.generate requirement from non-string object', '0.46.0', self.state.subproject) if hasattr(obj, 'generated_pc'): @@ -108,14 +110,13 @@ class DependenciesHelper: def add_cflags(self, cflags): self.cflags += mesonlib.stringlistify(cflags) - def _process_libs(self, libs, public): - libs = mesonlib.unholder(mesonlib.listify(libs)) + def _process_libs(self, libs, public: bool): + libs = mesonlib.listify(libs) libs = [x.get_preferred_library() if isinstance(x, build.BothLibraries) else x for x in libs] processed_libs = [] processed_reqs = [] processed_cflags = [] for obj in libs: - shared_library_only = getattr(obj, 'shared_library_only', False) if hasattr(obj, 'pcdep'): pcdeps = mesonlib.listify(obj.pcdep) for d in pcdeps: @@ -488,7 +489,7 @@ class PkgConfigModule(ExtensionModule): FeatureNew.single_use('pkgconfig.generate implicit version keyword', '0.46.0', state.subproject) elif len(args) == 1: FeatureNew.single_use('pkgconfig.generate optional positional argument', '0.46.0', state.subproject) - mainlib = getattr(args[0], 'held_object', args[0]) + mainlib = args[0] if not isinstance(mainlib, (build.StaticLibrary, build.SharedLibrary)): raise mesonlib.MesonException('Pkgconfig_gen first positional argument must be a library object') default_name = mainlib.name diff --git a/mesonbuild/modules/sourceset.py b/mesonbuild/modules/sourceset.py index e413e32..eea3dbd 100644 --- a/mesonbuild/modules/sourceset.py +++ b/mesonbuild/modules/sourceset.py @@ -101,7 +101,6 @@ class SourceSet(MutableModuleObject): 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, SourceSet): diff --git a/mesonbuild/modules/unstable_cuda.py b/mesonbuild/modules/unstable_cuda.py index af65af3..a80f9ca 100644 --- a/mesonbuild/modules/unstable_cuda.py +++ b/mesonbuild/modules/unstable_cuda.py @@ -16,8 +16,7 @@ import typing as T import re from ..mesonlib import version_compare -from ..interpreter import CompilerHolder -from ..compilers import CudaCompiler +from ..compilers import CudaCompiler, Compiler from . import ModuleObject @@ -83,7 +82,7 @@ class CudaModule(ModuleObject): @permittedKwargs(['detected']) def nvcc_arch_flags(self, state: 'ModuleState', - args: T.Tuple[T.Union[CompilerHolder, CudaCompiler, str]], + args: T.Tuple[T.Union[Compiler, CudaCompiler, str]], kwargs: T.Dict[str, T.Any]) -> T.List[str]: nvcc_arch_args = self._validate_nvcc_arch_args(args, kwargs) ret = self._nvcc_arch_flags(*nvcc_arch_args)[0] @@ -91,7 +90,7 @@ class CudaModule(ModuleObject): @permittedKwargs(['detected']) def nvcc_arch_readable(self, state: 'ModuleState', - args: T.Tuple[T.Union[CompilerHolder, CudaCompiler, str]], + args: T.Tuple[T.Union[Compiler, CudaCompiler, str]], kwargs: T.Dict[str, T.Any]) -> T.List[str]: nvcc_arch_args = self._validate_nvcc_arch_args(args, kwargs) ret = self._nvcc_arch_flags(*nvcc_arch_args)[1] @@ -105,16 +104,12 @@ class CudaModule(ModuleObject): @staticmethod def _detected_cc_from_compiler(c): - if isinstance(c, CompilerHolder): - c = c.compiler if isinstance(c, CudaCompiler): return c.detected_cc return '' @staticmethod def _version_from_compiler(c): - if isinstance(c, CompilerHolder): - c = c.compiler if isinstance(c, CudaCompiler): return c.version if isinstance(c, str): diff --git a/mesonbuild/modules/unstable_rust.py b/mesonbuild/modules/unstable_rust.py index f602e09..e5af2d7 100644 --- a/mesonbuild/modules/unstable_rust.py +++ b/mesonbuild/modules/unstable_rust.py @@ -109,7 +109,7 @@ class RustModule(ExtensionModule): ``` """ name = args[0] - base_target: BuildTarget = unholder(args[1]) + base_target: BuildTarget = args[1] if not base_target.uses_rust(): raise InterpreterException('Second positional argument to rustmod.test() must be a rust based target') extra_args = kwargs['args'] @@ -129,7 +129,7 @@ class RustModule(ExtensionModule): del extra_args[i] break - dependencies = [d.held_object for d in kwargs['dependencies']] + dependencies = [d for d in kwargs['dependencies']] # We need to cast here, as currently these don't have protocol in them, but test itself does. tkwargs = T.cast('_kwargs.FuncTest', kwargs.copy()) @@ -168,7 +168,7 @@ class RustModule(ExtensionModule): header: 'SourceOutputs' _deps: T.Sequence['SourceOutputs'] try: - header, *_deps = unholder(self.interpreter.source_strings_to_files(listify(kwargs['input']))) + header, *_deps = self.interpreter.source_strings_to_files(listify(kwargs['input'])) except KeyError: raise InvalidArguments('rustmod.bindgen() `input` argument must have at least one element.') @@ -179,7 +179,7 @@ class RustModule(ExtensionModule): if not isinstance(output, str): raise InvalidArguments('rustmod.bindgen() `output` argument must be a string.') - include_dirs: T.List[IncludeDirs] = typeslistify(unholder(listify(kwargs.get('include_directories', []))), IncludeDirs) + include_dirs: T.List[IncludeDirs] = typeslistify(listify(kwargs.get('include_directories', [])), IncludeDirs) c_args: T.List[str] = stringlistify(listify(kwargs.get('c_args', []))) bind_args: T.List[str] = stringlistify(listify(kwargs.get('args', []))) @@ -198,8 +198,7 @@ class RustModule(ExtensionModule): inc_strs.extend([f'-I{x}' for x in i.to_string_list(state.environment.get_source_dir())]) if self._bindgen_bin is None: - # there's some bugs in the interpreter typeing. - self._bindgen_bin = state.find_program('bindgen').held_object + self._bindgen_bin = state.find_program('bindgen') name: str if isinstance(header, File): diff --git a/mesonbuild/modules/unstable_simd.py b/mesonbuild/modules/unstable_simd.py index df5faa1..3339cea 100644 --- a/mesonbuild/modules/unstable_simd.py +++ b/mesonbuild/modules/unstable_simd.py @@ -54,11 +54,11 @@ class SimdModule(ExtensionModule): for key, value in kwargs.items(): if key not in self.isets and key != 'compiler': basic_kwargs[key] = value - compiler = kwargs['compiler'].compiler + compiler = kwargs['compiler'] if not isinstance(compiler, compilers.compilers.Compiler): raise mesonlib.MesonException('Compiler argument must be a compiler object.') cdata = self.interpreter.func_configuration_data(None, [], {}) - conf = cdata.held_object + conf = cdata.conf_data for iset in self.isets: if iset not in kwargs: continue diff --git a/mesonbuild/modules/windows.py b/mesonbuild/modules/windows.py index 441fb9f..d322833 100644 --- a/mesonbuild/modules/windows.py +++ b/mesonbuild/modules/windows.py @@ -18,10 +18,9 @@ import re from .. import mlog from .. import mesonlib, build -from ..mesonlib import MachineChoice, MesonException, extract_as_list, unholder +from ..mesonlib import MachineChoice, MesonException, extract_as_list from . import ModuleReturnValue from . import ExtensionModule -from ..interpreter import CustomTargetHolder from ..interpreterbase import permittedKwargs, FeatureNewKwargs, flatten from ..programs import ExternalProgram @@ -86,11 +85,13 @@ class WindowsModule(ExtensionModule): wrc_depend_files = extract_as_list(kwargs, 'depend_files', pop = True) wrc_depends = extract_as_list(kwargs, 'depends', pop = True) for d in wrc_depends: - if isinstance(d, CustomTargetHolder): - extra_args += state.get_include_args([d.outdir_include()]) + if isinstance(d, build.CustomTarget): + extra_args += state.get_include_args([ + build.IncludeDirs('', [], False, [os.path.join('@BUILD_ROOT@', self.interpreter.backend.get_target_dir(d))]) + ]) inc_dirs = extract_as_list(kwargs, 'include_directories', pop = True) for incd in inc_dirs: - if not isinstance(incd.held_object, (str, build.IncludeDirs)): + if not isinstance(incd, (str, build.IncludeDirs)): raise MesonException('Resource include dirs should be include_directories().') extra_args += state.get_include_args(inc_dirs) @@ -120,7 +121,6 @@ class WindowsModule(ExtensionModule): for subsrc in src: add_target(subsrc) return - src = unholder(src) if isinstance(src, str): name_formatted = src |