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
pull/11159/head
Eli Schwartz 2 years ago
parent e5a9272034
commit 100456de07
No known key found for this signature in database
GPG Key ID: CEB167EFB5722BD6
  1. 2
      mesonbuild/build.py
  2. 2
      mesonbuild/modules/fs.py
  3. 6
      mesonbuild/modules/i18n.py
  4. 6
      test cases/common/14 configure file/meson.build
  5. 3
      test cases/common/14 configure file/test.json

@ -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,

@ -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,

@ -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,
)

@ -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

@ -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"}
]
}

Loading…
Cancel
Save