diff options
author | Eli Schwartz <eschwartz@archlinux.org> | 2022-12-10 22:44:53 -0500 |
---|---|---|
committer | Eli Schwartz <eschwartz@archlinux.org> | 2022-12-11 18:28:39 -0500 |
commit | 100456de0761ee949e2277c97746cb8571b6ba39 (patch) | |
tree | f93a90aa2b615c23a3a1f35c28795d921d56a490 | |
parent | e5a92720348d45df000826536ca77a4c643bb662 (diff) | |
download | meson-100456de0761ee949e2277c97746cb8571b6ba39.zip meson-100456de0761ee949e2277c97746cb8571b6ba39.tar.gz meson-100456de0761ee949e2277c97746cb8571b6ba39.tar.bz2 |
fix broken fs.copyfile function that crashed if you tried to use it
At least, if you tried to use it when passing an install_dir. Because
T.Sequence is horrible and we should never use it, and the annotations
are a lie that produces bugs.
So, fix the annotations on CustomTarget to never allow this to happen
again, and also fix the function too. Move some definitions elsewhere
inline to satisfy the linter.
Fixes #11157
-rw-r--r-- | mesonbuild/build.py | 2 | ||||
-rw-r--r-- | mesonbuild/modules/fs.py | 2 | ||||
-rw-r--r-- | mesonbuild/modules/i18n.py | 6 | ||||
-rw-r--r-- | test cases/common/14 configure file/meson.build | 6 | ||||
-rw-r--r-- | test cases/common/14 configure file/test.json | 3 |
5 files changed, 11 insertions, 8 deletions
diff --git a/mesonbuild/build.py b/mesonbuild/build.py index eb18d84..60cd0cf 100644 --- a/mesonbuild/build.py +++ b/mesonbuild/build.py @@ -2416,7 +2416,7 @@ class CustomTarget(Target, CommandBase): env: T.Optional[EnvironmentVariables] = None, feed: bool = False, install: bool = False, - install_dir: T.Optional[T.Sequence[T.Union[str, Literal[False]]]] = None, + install_dir: T.Optional[T.List[T.Union[str, Literal[False]]]] = None, install_mode: T.Optional[FileMode] = None, install_tag: T.Optional[T.List[T.Optional[str]]] = None, absolute_paths: bool = False, diff --git a/mesonbuild/modules/fs.py b/mesonbuild/modules/fs.py index eb19ec4..7d96995 100644 --- a/mesonbuild/modules/fs.py +++ b/mesonbuild/modules/fs.py @@ -302,7 +302,7 @@ class FSModule(ExtensionModule): [dest], build_by_default=True, install=kwargs['install'], - install_dir=kwargs['install_dir'], + install_dir=[kwargs['install_dir']], install_mode=kwargs['install_mode'], install_tag=[kwargs['install_tag']], backend=state.backend, diff --git a/mesonbuild/modules/i18n.py b/mesonbuild/modules/i18n.py index 2a7a9ad..fcb0aa7 100644 --- a/mesonbuild/modules/i18n.py +++ b/mesonbuild/modules/i18n.py @@ -189,7 +189,6 @@ class I18nModule(ExtensionModule): if build_by_default is None: build_by_default = kwargs['install'] - install_dir = [kwargs['install_dir']] if kwargs['install_dir'] is not None else None install_tag = [kwargs['install_tag']] if kwargs['install_tag'] is not None else None ct = build.CustomTarget( @@ -202,7 +201,7 @@ class I18nModule(ExtensionModule): [kwargs['output']], build_by_default=build_by_default, install=kwargs['install'], - install_dir=install_dir, + install_dir=[kwargs['install_dir']] if kwargs['install_dir'] is not None else None, install_tag=install_tag, ) @@ -367,7 +366,6 @@ class I18nModule(ExtensionModule): if build_by_default is None: build_by_default = kwargs['install'] - install_dir = [kwargs['install_dir']] if kwargs['install_dir'] is not None else None install_tag = [kwargs['install_tag']] if kwargs['install_tag'] is not None else None ct = build.CustomTarget( @@ -381,7 +379,7 @@ class I18nModule(ExtensionModule): build_by_default=build_by_default, extra_depends=mo_targets, install=kwargs['install'], - install_dir=install_dir, + install_dir=[kwargs['install_dir']] if kwargs['install_dir'] is not None else None, install_tag=install_tag, ) diff --git a/test cases/common/14 configure file/meson.build b/test cases/common/14 configure file/meson.build index 1dd6734..569dd09 100644 --- a/test cases/common/14 configure file/meson.build +++ b/test cases/common/14 configure file/meson.build @@ -210,7 +210,11 @@ endif # Test the fs replacement # Test copying of an empty configuration data object inf = 'invalid-utf8.bin.in' -outf = fs.copyfile(inf, 'invalid-utf8-1.bin') +outf = fs.copyfile(inf, 'invalid-utf8-1.bin', + install: true, + install_dir: get_option('datadir') / meson.project_name(), + install_tag: 'copyfile', +) test('fs.copyfile string', check_file, args: [files(inf), outf]) # Test with default outname of string diff --git a/test cases/common/14 configure file/test.json b/test cases/common/14 configure file/test.json index 92f7b18..5a6ccd5 100644 --- a/test cases/common/14 configure file/test.json +++ b/test cases/common/14 configure file/test.json @@ -3,6 +3,7 @@ {"type": "file", "file": "usr/share/appdir/config2.h"}, {"type": "file", "file": "usr/share/appdir/config2b.h"}, {"type": "file", "file": "usr/share/appdireh/config2-1.h"}, - {"type": "file", "file": "usr/share/appdirok/config2-2.h"} + {"type": "file", "file": "usr/share/appdirok/config2-2.h"}, + {"type": "file", "file": "usr/share/configure file test/invalid-utf8-1.bin"} ] } |