diff options
| author | Dylan Baker <dylan@pnwbakers.com> | 2024-12-06 13:03:16 -0800 |
|---|---|---|
| committer | Dylan Baker <dylan@pnwbakers.com> | 2025-10-20 15:15:53 -0700 |
| commit | ac49d7e2a8183d4e68c9b006318c4ed4c2efabae (patch) | |
| tree | 35ddf374d40aed3de187f940a23944f0cc56e9ac /mesonbuild | |
| parent | b7d2e1778c24057b4c20d87996568f6a72a46d73 (diff) | |
| download | meson-ac49d7e2a8183d4e68c9b006318c4ed4c2efabae.tar.gz | |
interpreter: port dependency version to typed_kwargs
Diffstat (limited to 'mesonbuild')
| -rw-r--r-- | mesonbuild/dependencies/base.py | 6 | ||||
| -rw-r--r-- | mesonbuild/dependencies/configtool.py | 8 | ||||
| -rw-r--r-- | mesonbuild/dependencies/detect.py | 2 | ||||
| -rw-r--r-- | mesonbuild/dependencies/dev.py | 9 | ||||
| -rw-r--r-- | mesonbuild/dependencies/misc.py | 2 | ||||
| -rw-r--r-- | mesonbuild/dependencies/qt.py | 4 | ||||
| -rw-r--r-- | mesonbuild/interpreter/kwargs.py | 1 | ||||
| -rw-r--r-- | mesonbuild/interpreter/type_checking.py | 1 | ||||
| -rw-r--r-- | mesonbuild/mdevenv.py | 2 |
9 files changed, 12 insertions, 23 deletions
diff --git a/mesonbuild/dependencies/base.py b/mesonbuild/dependencies/base.py index 58a40bd38..547beb61e 100644 --- a/mesonbuild/dependencies/base.py +++ b/mesonbuild/dependencies/base.py @@ -56,6 +56,7 @@ if T.TYPE_CHECKING: private_headers: bool required: bool static: T.Optional[bool] + version: T.List[str] _MissingCompilerBase = Compiler else: @@ -407,10 +408,7 @@ class ExternalDependency(Dependency): self.name = type_name # default self.is_found = False self.language = language - version_reqs = kwargs.get('version', None) - if isinstance(version_reqs, str): - version_reqs = [version_reqs] - self.version_reqs = T.cast('T.Optional[T.List[str]]', version_reqs) + self.version_reqs = kwargs.get('version', []) self.required = kwargs.get('required', True) self.silent = T.cast('bool', kwargs.get('silent', False)) static = kwargs.get('static') diff --git a/mesonbuild/dependencies/configtool.py b/mesonbuild/dependencies/configtool.py index dca9e8c04..2761bfb5d 100644 --- a/mesonbuild/dependencies/configtool.py +++ b/mesonbuild/dependencies/configtool.py @@ -10,8 +10,6 @@ from .. import mlog import re import typing as T -from mesonbuild import mesonlib - if T.TYPE_CHECKING: from ..environment import Environment from ..interpreter.type_checking import PkgConfigDefineType @@ -49,11 +47,7 @@ class ConfigToolDependency(ExternalDependency): if 'version_arg' in kwargs: self.version_arg = kwargs['version_arg'] # type: ignore[typeddict-item] - req_version_raw = kwargs.get('version', None) - if req_version_raw is not None: - req_version = mesonlib.stringlistify(req_version_raw) - else: - req_version = [] + req_version = kwargs.get('version', []) tool, version = self.find_config(req_version, kwargs.get('returncode_value', 0), exclude_paths=exclude_paths) # type: ignore[arg-type] self.config = tool self.is_found = self.report_config(version, req_version) diff --git a/mesonbuild/dependencies/detect.py b/mesonbuild/dependencies/detect.py index c1d335c3b..6095dd5a3 100644 --- a/mesonbuild/dependencies/detect.py +++ b/mesonbuild/dependencies/detect.py @@ -95,8 +95,6 @@ def find_external_dependency(name: str, env: 'Environment', kwargs: DependencyOb lname = name.lower() if lname not in _packages_accept_language and kwargs.get('language') is not None: raise DependencyException(f'{name} dependency does not accept "language" keyword argument') - if not isinstance(kwargs.get('version', ''), (str, list)): - raise DependencyException('Keyword "Version" must be string or list.') # display the dependency name with correct casing display_name = display_name_map.get(lname, lname) diff --git a/mesonbuild/dependencies/dev.py b/mesonbuild/dependencies/dev.py index 62583880f..d9f8fb1ee 100644 --- a/mesonbuild/dependencies/dev.py +++ b/mesonbuild/dependencies/dev.py @@ -33,9 +33,6 @@ if T.TYPE_CHECKING: from ..interpreter.type_checking import PkgConfigDefineType from .base import DependencyObjectKWs - class JNISystemDependencyKW(DependencyObjectKWs): - version: T.Optional[str] - def get_shared_library_suffix(environment: 'Environment', for_machine: MachineChoice) -> str: """This is only guaranteed to work for languages that compile to machine @@ -557,7 +554,7 @@ class ZlibSystemDependency(SystemDependency): class JNISystemDependency(SystemDependency): - def __init__(self, environment: 'Environment', kwargs: JNISystemDependencyKW): + def __init__(self, environment: 'Environment', kwargs: DependencyObjectKWs): super().__init__('jni', environment, kwargs) self.feature_since = ('0.62.0', '') @@ -580,7 +577,7 @@ class JNISystemDependency(SystemDependency): self.is_found = False return - if 'version' in kwargs and not version_compare_many(self.version, kwargs['version'])[0]: + if kwargs.get('version') and not version_compare_many(self.version, kwargs['version'])[0]: mlog.error(f'Incorrect JDK version found ({self.version}), wanted {kwargs["version"]}') self.is_found = False return @@ -685,7 +682,7 @@ packages['jni'] = JNISystemDependency class JDKSystemDependency(JNISystemDependency): - def __init__(self, environment: 'Environment', kwargs: JNISystemDependencyKW): + def __init__(self, environment: 'Environment', kwargs: DependencyObjectKWs): super().__init__(environment, kwargs) self.feature_since = ('0.59.0', '') diff --git a/mesonbuild/dependencies/misc.py b/mesonbuild/dependencies/misc.py index 672f58ae2..96337e0be 100644 --- a/mesonbuild/dependencies/misc.py +++ b/mesonbuild/dependencies/misc.py @@ -390,7 +390,7 @@ class CursesSystemDependency(SystemDependency): self.version = f'{v_major}.{v_minor}' # Check the version if possible, emit a warning if we can't - req = T.cast('T.Iterable[str]', kwargs.get('version')) + req = kwargs.get('version', []) if req: if self.version: self.is_found, *_ = mesonlib.version_compare_many(self.version, req) diff --git a/mesonbuild/dependencies/qt.py b/mesonbuild/dependencies/qt.py index 4ef430bca..9aef02ef4 100644 --- a/mesonbuild/dependencies/qt.py +++ b/mesonbuild/dependencies/qt.py @@ -261,9 +261,9 @@ class QmakeQtDependency(_QtBase, ConfigToolDependency, metaclass=abc.ABCMeta): # is requested, add "">= 5, < 6", but if the user has ">= 5.6", don't # lose that. kwargs = kwargs.copy() - _vers = mesonlib.listify(kwargs.get('version', [])) + _vers = kwargs.get('version', []) _vers.extend([f'>= {self.qtver}', f'< {int(self.qtver) + 1}']) - kwargs['version'] = _vers # type: ignore[typeddict-unknown-key] + kwargs['version'] = _vers ConfigToolDependency.__init__(self, name, env, kwargs) if not self.found(): diff --git a/mesonbuild/interpreter/kwargs.py b/mesonbuild/interpreter/kwargs.py index 2a0d1f867..5332067fd 100644 --- a/mesonbuild/interpreter/kwargs.py +++ b/mesonbuild/interpreter/kwargs.py @@ -510,3 +510,4 @@ class FuncDependency(ExtractRequired): optional_modules: T.List[str] private_headers: bool static: T.Optional[bool] + version: T.List[str] diff --git a/mesonbuild/interpreter/type_checking.py b/mesonbuild/interpreter/type_checking.py index 6a7cfb86f..1ac0eb9ed 100644 --- a/mesonbuild/interpreter/type_checking.py +++ b/mesonbuild/interpreter/type_checking.py @@ -952,4 +952,5 @@ DEPENDENCY_KWS: T.List[KwargInfo] = [ KwargInfo('optional_modules', ContainerTypeInfo(list, str), listify=True, default=[]), KwargInfo('private_headers', bool, default=False), KwargInfo('static', (bool, NoneType)), + KwargInfo('version', ContainerTypeInfo(list, str), listify=True, default=[]), ] diff --git a/mesonbuild/mdevenv.py b/mesonbuild/mdevenv.py index 7298e846c..4ef87a700 100644 --- a/mesonbuild/mdevenv.py +++ b/mesonbuild/mdevenv.py @@ -84,7 +84,7 @@ def bash_completion_files(b: build.Build, install_data: 'InstallData') -> T.List from .dependencies.pkgconfig import PkgConfigDependency result = [] dep = PkgConfigDependency('bash-completion', b.environment, - {'required': False, 'silent': True, 'version': '>=2.10'}) # type: ignore[typeddict-unknown-key] + {'required': False, 'silent': True, 'version': ['>=2.10']}) # type: ignore[typeddict-unknown-key] if dep.found(): prefix = b.environment.coredata.optstore.get_value_for(OptionKey('prefix')) assert isinstance(prefix, str), 'for mypy' |
