diff options
| author | Dylan Baker <dylan@pnwbakers.com> | 2024-12-06 12:51:48 -0800 |
|---|---|---|
| committer | Dylan Baker <dylan@pnwbakers.com> | 2025-10-20 15:15:53 -0700 |
| commit | b7be98f15324d8d51ab82ff35d926b7ece06c34a (patch) | |
| tree | 1317e5527fae55dfae69f884dfd4c4a648adca96 /mesonbuild/interpreter | |
| parent | f22a129748a52b7923a5cdc6cba2890f52322a8c (diff) | |
| download | meson-b7be98f15324d8d51ab82ff35d926b7ece06c34a.tar.gz | |
interpreter: port dependency method to typed_kwargs
This allows us a bunch of nice things:
1. We can use the DependencyMethods enum everywhere
2. The deprecated methods can be checked in the Interpreter, so we can
now emit deprecation warnings for stuff that was deperecated in
0.44!
3. We can share this more strongly typed method everywhere
Diffstat (limited to 'mesonbuild/interpreter')
| -rw-r--r-- | mesonbuild/interpreter/interpreter.py | 1 | ||||
| -rw-r--r-- | mesonbuild/interpreter/kwargs.py | 3 | ||||
| -rw-r--r-- | mesonbuild/interpreter/type_checking.py | 32 |
3 files changed, 33 insertions, 3 deletions
diff --git a/mesonbuild/interpreter/interpreter.py b/mesonbuild/interpreter/interpreter.py index c58824206..8d349a4ac 100644 --- a/mesonbuild/interpreter/interpreter.py +++ b/mesonbuild/interpreter/interpreter.py @@ -1790,7 +1790,6 @@ class Interpreter(InterpreterBase, HoldableObject): # When adding kwargs, please check if they make sense in dependencies.get_dep_identifier() @FeatureNewKwargs('dependency', '0.50.0', ['not_found_message']) @FeatureNewKwargs('dependency', '0.49.0', ['disabler']) - @FeatureNewKwargs('dependency', '0.40.0', ['method']) @disablerIfNotFound @permittedKwargs(permitted_dependency_kwargs) @typed_pos_args('dependency', varargs=str, min_varargs=1) diff --git a/mesonbuild/interpreter/kwargs.py b/mesonbuild/interpreter/kwargs.py index 5cd26a393..8db7d1a89 100644 --- a/mesonbuild/interpreter/kwargs.py +++ b/mesonbuild/interpreter/kwargs.py @@ -12,7 +12,7 @@ from typing_extensions import TypedDict, Literal, Protocol, NotRequired from .. import build from .. import options from ..compilers import Compiler -from ..dependencies.base import Dependency, IncludeType +from ..dependencies.base import Dependency, DependencyMethods, IncludeType from ..mesonlib import EnvironmentVariables, MachineChoice, File, FileMode, FileOrString from ..options import OptionKey from ..modules.cmake import CMakeSubprojectOptions @@ -503,3 +503,4 @@ class FuncDependency(TypedDict): include_type: IncludeType language: T.Optional[str] main: bool + method: DependencyMethods diff --git a/mesonbuild/interpreter/type_checking.py b/mesonbuild/interpreter/type_checking.py index 0f10a14a8..b50911369 100644 --- a/mesonbuild/interpreter/type_checking.py +++ b/mesonbuild/interpreter/type_checking.py @@ -12,7 +12,7 @@ from ..build import (CustomTarget, BuildTarget, CustomTargetIndex, ExtractedObjects, GeneratedList, IncludeDirs, BothLibraries, SharedLibrary, StaticLibrary, Jar, Executable, StructuredSources) from ..options import OptionKey, UserFeatureOption -from ..dependencies import Dependency, InternalDependency +from ..dependencies import Dependency, DependencyMethods, InternalDependency from ..interpreterbase.decorators import KwargInfo, ContainerTypeInfo, FeatureBroken from ..mesonlib import (File, FileMode, MachineChoice, has_path_sep, listify, stringlistify, EnvironmentVariables) @@ -903,8 +903,38 @@ INCLUDE_TYPE = KwargInfo( validator=in_set_validator({'system', 'non-system', 'preserve'}) ) + +_DEPRECATED_DEPENDENCY_METHODS = frozenset( + {'sdlconfig', 'cups-config', 'pcap-config', 'libwmf-config', 'qmake'}) + + +def _dependency_method_convertor(value: str) -> DependencyMethods: + if value in _DEPRECATED_DEPENDENCY_METHODS: + return DependencyMethods.CONFIG_TOOL + return DependencyMethods(value) + + +DEPENDENCY_METHOD_KW = KwargInfo( + 'method', + str, + default='auto', + since='0.40.0', + validator=in_set_validator( + {m.value for m in DependencyMethods} | _DEPRECATED_DEPENDENCY_METHODS), + convertor=_dependency_method_convertor, + deprecated_values={ + 'sdlconfig': ('0.44.0', 'use config-tool instead'), + 'cups-config': ('0.44.0', 'use config-tool instead'), + 'pcap-config': ('0.44.0', 'use config-tool instead'), + 'libwmf-config': ('0.44.0', 'use config-tool instead'), + 'qmake': ('0.58.0', 'use config-tool instead'), + }, +) + + DEPENDENCY_KWS: T.List[KwargInfo] = [ DEFAULT_OPTIONS.evolve(since='0.38.0'), + DEPENDENCY_METHOD_KW, INCLUDE_TYPE, KwargInfo('allow_fallback', (bool, NoneType), since='0.56.0'), KwargInfo('cmake_args', ContainerTypeInfo(list, str), listify=True, default=[], since='0.50.0'), |
