diff options
author | Sander Sweers <infirit@gmail.com> | 2018-02-25 12:18:04 +0100 |
---|---|---|
committer | Nirbheek Chauhan <nirbheek.chauhan@gmail.com> | 2018-06-09 18:17:48 +0000 |
commit | 47785bf89b56bd111080d8a26d9f8bca9bb4d25c (patch) | |
tree | 8ff3ad0ff58c34aa3cbb113305c9feb9bddc49a3 /mesonbuild/interpreter.py | |
parent | 18e25b67737fa27ba38ee293718dc9ca40c81a43 (diff) | |
download | meson-47785bf89b56bd111080d8a26d9f8bca9bb4d25c.zip meson-47785bf89b56bd111080d8a26d9f8bca9bb4d25c.tar.gz meson-47785bf89b56bd111080d8a26d9f8bca9bb4d25c.tar.bz2 |
Add file encoding to configure_file
Input files can be in any file encoding, not just utf-8 or isolatin1. Meson
should not make assumptions here and allow for the user to specify the
encoding to use.
Diffstat (limited to 'mesonbuild/interpreter.py')
-rw-r--r-- | mesonbuild/interpreter.py | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/mesonbuild/interpreter.py b/mesonbuild/interpreter.py index 1e225da..6e58f62 100644 --- a/mesonbuild/interpreter.py +++ b/mesonbuild/interpreter.py @@ -1724,7 +1724,7 @@ permitted_kwargs = {'add_global_arguments': {'language'}, 'add_test_setup': {'exe_wrapper', 'gdb', 'timeout_multiplier', 'env'}, 'benchmark': {'args', 'env', 'should_fail', 'timeout', 'workdir', 'suite'}, 'build_target': known_build_target_kwargs, - 'configure_file': {'input', 'output', 'configuration', 'command', 'copy', 'install_dir', 'install_mode', 'capture', 'install', 'format', 'output_format'}, + 'configure_file': {'input', 'output', 'configuration', 'command', 'copy', 'install_dir', 'install_mode', 'capture', 'install', 'format', 'output_format', 'encoding'}, 'custom_target': {'input', 'output', 'command', 'install', 'install_dir', 'install_mode', 'build_always', 'capture', 'depends', 'depend_files', 'depfile', 'build_by_default'}, 'dependency': {'default_options', 'fallback', 'language', 'main', 'method', 'modules', 'optional_modules', 'native', 'required', 'static', 'version', 'private_headers'}, 'declare_dependency': {'include_directories', 'link_with', 'sources', 'dependencies', 'compile_args', 'link_args', 'link_whole', 'version'}, @@ -3332,8 +3332,10 @@ root and issuing %s. mlog.log('Configuring', mlog.bold(output), 'using configuration') if inputfile is not None: os.makedirs(os.path.join(self.environment.build_dir, self.subdir), exist_ok=True) + file_encoding = kwargs.setdefault('encoding', 'utf-8') missing_variables = mesonlib.do_conf_file(ifile_abs, ofile_abs, - conf.held_object, fmt) + conf.held_object, fmt, + file_encoding) if missing_variables: var_list = ", ".join(map(repr, sorted(missing_variables))) mlog.warning( @@ -3360,7 +3362,8 @@ root and issuing %s. (res.stdout, res.stderr)) if 'capture' in kwargs and kwargs['capture']: dst_tmp = ofile_abs + '~' - with open(dst_tmp, 'w', encoding='utf-8') as f: + file_encoding = kwargs.setdefault('encoding', 'utf-8') + with open(dst_tmp, 'w', encoding=file_encoding) as f: f.writelines(res.stdout) if ifile_abs: shutil.copymode(ifile_abs, dst_tmp) |