diff options
| author | Dylan Baker <dylan@pnwbakers.com> | 2023-09-29 12:20:14 -0700 |
|---|---|---|
| committer | Dylan Baker <dylan@pnwbakers.com> | 2023-10-17 08:09:06 -0700 |
| commit | 2fc872907813fa58a13f029bcf2a85924decf067 (patch) | |
| tree | 8b155fe77333ae8611ef4c4a3cfc4ad5c16c26c2 | |
| parent | bae2e13b392aba48d3b89e9a0bb06fc72af8c805 (diff) | |
| download | meson-2fc872907813fa58a13f029bcf2a85924decf067.tar.gz | |
interpreter: use typed_kwargs for build_target.install_mode
| -rw-r--r-- | mesonbuild/interpreter/interpreter.py | 22 | ||||
| -rw-r--r-- | mesonbuild/interpreter/kwargs.py | 1 | ||||
| -rw-r--r-- | mesonbuild/interpreter/type_checking.py | 1 |
3 files changed, 2 insertions, 22 deletions
diff --git a/mesonbuild/interpreter/interpreter.py b/mesonbuild/interpreter/interpreter.py index 85f599e35..166e99085 100644 --- a/mesonbuild/interpreter/interpreter.py +++ b/mesonbuild/interpreter/interpreter.py @@ -2425,27 +2425,6 @@ class Interpreter(InterpreterBase, HoldableObject): pass self.subdir = prev_subdir - def _get_kwarg_install_mode(self, kwargs: T.Dict[str, T.Any]) -> T.Optional[FileMode]: - if kwargs.get('install_mode', None) is None: - return None - if isinstance(kwargs['install_mode'], FileMode): - return kwargs['install_mode'] - install_mode: T.List[str] = [] - mode = mesonlib.typeslistify(kwargs.get('install_mode', []), (str, int)) - for m in mode: - # We skip any arguments that are set to `false` - if m is False: - m = None - install_mode.append(m) - if len(install_mode) > 3: - raise InvalidArguments('Keyword argument install_mode takes at ' - 'most 3 arguments.') - if len(install_mode) > 0 and install_mode[0] is not None and \ - not isinstance(install_mode[0], str): - raise InvalidArguments('Keyword argument install_mode requires the ' - 'permissions arg to be a string or false') - return FileMode(*install_mode) - # This is either ignored on basically any OS nowadays, or silently gets # ignored (Solaris) or triggers an "illegal operation" error (FreeBSD). # It was likely added "because it exists", but should never be used. In @@ -3343,7 +3322,6 @@ class Interpreter(InterpreterBase, HoldableObject): sources = self.source_strings_to_files(sources) objs = extract_as_list(kwargs, 'objects') kwargs['dependencies'] = extract_as_list(kwargs, 'dependencies') - kwargs['install_mode'] = self._get_kwarg_install_mode(kwargs) if 'extra_files' in kwargs: ef = extract_as_list(kwargs, 'extra_files') kwargs['extra_files'] = self.source_strings_to_files(ef) diff --git a/mesonbuild/interpreter/kwargs.py b/mesonbuild/interpreter/kwargs.py index 57d2bbc01..546523adf 100644 --- a/mesonbuild/interpreter/kwargs.py +++ b/mesonbuild/interpreter/kwargs.py @@ -327,6 +327,7 @@ class _BaseBuildTarget(TypedDict): build_by_default: bool install: bool + install_mode: FileMode override_options: T.Dict[OptionKey, T.Union[str, int, bool, T.List[str]]] depend_files: NotRequired[T.List[File]] diff --git a/mesonbuild/interpreter/type_checking.py b/mesonbuild/interpreter/type_checking.py index bb984ef1d..dc055f108 100644 --- a/mesonbuild/interpreter/type_checking.py +++ b/mesonbuild/interpreter/type_checking.py @@ -554,6 +554,7 @@ _ALL_TARGET_KWS: T.List[KwargInfo] = [ OVERRIDE_OPTIONS_KW, KwargInfo('build_by_default', bool, default=True, since='0.38.0'), INSTALL_KW, + INSTALL_MODE_KW, ] # Applies to all build_target classes except jar |
