aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEli Schwartz <eschwartz@archlinux.org>2022-12-10 22:44:53 -0500
committerEli Schwartz <eschwartz@archlinux.org>2022-12-11 18:28:39 -0500
commit100456de0761ee949e2277c97746cb8571b6ba39 (patch)
treef93a90aa2b615c23a3a1f35c28795d921d56a490
parente5a92720348d45df000826536ca77a4c643bb662 (diff)
downloadmeson-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.py2
-rw-r--r--mesonbuild/modules/fs.py2
-rw-r--r--mesonbuild/modules/i18n.py6
-rw-r--r--test cases/common/14 configure file/meson.build6
-rw-r--r--test cases/common/14 configure file/test.json3
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"}
]
}