summaryrefslogtreecommitdiff
path: root/mesonbuild/interpreter
diff options
context:
space:
mode:
authorDylan Baker <dylan@pnwbakers.com>2024-12-06 12:51:48 -0800
committerDylan Baker <dylan@pnwbakers.com>2025-10-20 15:15:53 -0700
commitb7be98f15324d8d51ab82ff35d926b7ece06c34a (patch)
tree1317e5527fae55dfae69f884dfd4c4a648adca96 /mesonbuild/interpreter
parentf22a129748a52b7923a5cdc6cba2890f52322a8c (diff)
downloadmeson-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.py1
-rw-r--r--mesonbuild/interpreter/kwargs.py3
-rw-r--r--mesonbuild/interpreter/type_checking.py32
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'),