aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/mesonlib.py
diff options
context:
space:
mode:
authorSander Sweers <infirit@gmail.com>2018-02-25 12:18:04 +0100
committerNirbheek Chauhan <nirbheek.chauhan@gmail.com>2018-06-09 18:17:48 +0000
commit47785bf89b56bd111080d8a26d9f8bca9bb4d25c (patch)
tree8ff3ad0ff58c34aa3cbb113305c9feb9bddc49a3 /mesonbuild/mesonlib.py
parent18e25b67737fa27ba38ee293718dc9ca40c81a43 (diff)
downloadmeson-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/mesonlib.py')
-rw-r--r--mesonbuild/mesonlib.py11
1 files changed, 7 insertions, 4 deletions
diff --git a/mesonbuild/mesonlib.py b/mesonbuild/mesonlib.py
index 9f1da3e..e4951f9 100644
--- a/mesonbuild/mesonlib.py
+++ b/mesonbuild/mesonlib.py
@@ -623,9 +623,9 @@ def do_mesondefine(line, confdata):
raise MesonException('#mesondefine argument "%s" is of unknown type.' % varname)
-def do_conf_file(src, dst, confdata, format):
+def do_conf_file(src, dst, confdata, format, encoding='utf-8'):
try:
- with open(src, encoding='utf-8') as f:
+ with open(src, encoding=encoding) as f:
data = f.readlines()
except Exception as e:
raise MesonException('Could not read input file %s: %s' % (src, str(e)))
@@ -652,8 +652,11 @@ def do_conf_file(src, dst, confdata, format):
missing_variables.update(missing)
result.append(line)
dst_tmp = dst + '~'
- with open(dst_tmp, 'w', encoding='utf-8') as f:
- f.writelines(result)
+ try:
+ with open(dst_tmp, 'w', encoding=encoding) as f:
+ f.writelines(result)
+ except Exception as e:
+ raise MesonException('Could not write output file %s: %s' % (dst, str(e)))
shutil.copymode(src, dst_tmp)
replace_if_different(dst, dst_tmp)
return missing_variables