summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDylan Baker <dylan@pnwbakers.com>2023-09-29 12:20:14 -0700
committerDylan Baker <dylan@pnwbakers.com>2023-10-17 08:09:06 -0700
commit2fc872907813fa58a13f029bcf2a85924decf067 (patch)
tree8b155fe77333ae8611ef4c4a3cfc4ad5c16c26c2
parentbae2e13b392aba48d3b89e9a0bb06fc72af8c805 (diff)
downloadmeson-2fc872907813fa58a13f029bcf2a85924decf067.tar.gz
interpreter: use typed_kwargs for build_target.install_mode
-rw-r--r--mesonbuild/interpreter/interpreter.py22
-rw-r--r--mesonbuild/interpreter/kwargs.py1
-rw-r--r--mesonbuild/interpreter/type_checking.py1
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