diff options
author | Eli Schwartz <eschwartz@archlinux.org> | 2022-05-26 15:46:10 -0400 |
---|---|---|
committer | Eli Schwartz <eschwartz@archlinux.org> | 2022-05-26 17:42:14 -0400 |
commit | fda4c49c34f2650b739ebf741e45228c5ebafb0c (patch) | |
tree | de8d5d765aa116ccbdc4203f479535a8b04594b3 | |
parent | 9b9154017e9edc7b5b3bd93dce74ffa9c8b22a03 (diff) | |
download | meson-fda4c49c34f2650b739ebf741e45228c5ebafb0c.zip meson-fda4c49c34f2650b739ebf741e45228c5ebafb0c.tar.gz meson-fda4c49c34f2650b739ebf741e45228c5ebafb0c.tar.bz2 |
fix custom_target crash if boolean true is specified in install_dir
We accept boolean false to indicate "do not install this one particular
output", but the type checking simply checked if it is a bool. We do
this correctly for configure_file, so copy the same validator from
there.
-rw-r--r-- | mesonbuild/interpreter/kwargs.py | 2 | ||||
-rw-r--r-- | mesonbuild/interpreter/type_checking.py | 3 |
2 files changed, 3 insertions, 2 deletions
diff --git a/mesonbuild/interpreter/kwargs.py b/mesonbuild/interpreter/kwargs.py index f2460ac..bb56ff2 100644 --- a/mesonbuild/interpreter/kwargs.py +++ b/mesonbuild/interpreter/kwargs.py @@ -183,7 +183,7 @@ class CustomTarget(TypedDict): input: T.List[T.Union[str, build.BuildTarget, build.CustomTarget, build.CustomTargetIndex, build.ExtractedObjects, build.GeneratedList, ExternalProgram, File]] install: bool - install_dir: T.List[T.Union[str, bool]] + install_dir: T.List[T.Union[str, T.Literal[False]]] install_mode: FileMode install_tag: T.List[T.Optional[str]] output: T.List[str] diff --git a/mesonbuild/interpreter/type_checking.py b/mesonbuild/interpreter/type_checking.py index 328f032..ee6eef5 100644 --- a/mesonbuild/interpreter/type_checking.py +++ b/mesonbuild/interpreter/type_checking.py @@ -297,11 +297,12 @@ INSTALL_TAG_KW: KwargInfo[T.Optional[str]] = KwargInfo('install_tag', (str, None INSTALL_KW = KwargInfo('install', bool, default=False) -CT_INSTALL_DIR_KW: KwargInfo[T.List[T.Union[str, bool]]] = KwargInfo( +CT_INSTALL_DIR_KW: KwargInfo[T.List[T.Union[str, Literal[False]]]] = KwargInfo( 'install_dir', ContainerTypeInfo(list, (str, bool)), listify=True, default=[], + validator=lambda x: 'must be `false` if boolean' if True in x else None, ) CT_BUILD_BY_DEFAULT: KwargInfo[T.Optional[bool]] = KwargInfo('build_by_default', (bool, type(None)), since='0.40.0') |