diff options
author | Jussi Pakkanen <jpakkane@gmail.com> | 2016-11-26 12:57:17 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-11-26 12:57:17 -0500 |
commit | 88d7898bb4b52e3e3dc2af58c8a346b7592c894e (patch) | |
tree | 9a7a5ad28d86e22d8213f583f97f875d402bd8bf | |
parent | 09fd24ea78876924c16d9d029f4ade6d53e85c8b (diff) | |
parent | 34394afce6db988800cfecbfa32b67301fd7ba3d (diff) | |
download | meson-88d7898bb4b52e3e3dc2af58c8a346b7592c894e.zip meson-88d7898bb4b52e3e3dc2af58c8a346b7592c894e.tar.gz meson-88d7898bb4b52e3e3dc2af58c8a346b7592c894e.tar.bz2 |
Merge pull request #1092 from centricular/always-use-utf-8-py3
Always use utf-8 to write configured file and warn if the encoding is not UTF-8 compatible
-rwxr-xr-x | meson.py | 15 | ||||
-rw-r--r-- | mesonbuild/mesonlib.py | 2 |
2 files changed, 14 insertions, 3 deletions
@@ -14,10 +14,21 @@ # See the License for the specific language governing permissions and # limitations under the License. -from mesonbuild import mesonmain -import sys, os +from mesonbuild import mlog, mesonmain +import sys, os, locale def main(): + # Warn if the locale is not UTF-8. This can cause various unfixable issues + # such as os.stat not being able to decode filenames with unicode in them. + # There is no way to reset both the preferred encoding and the filesystem + # encoding, so we can just warn about it. + e = locale.getpreferredencoding() + if e.upper() != 'UTF-8': + mlog.warning('You are using {!r} which is not a a Unicode-compatible ' + 'locale.'.format(e)) + mlog.warning('You might see errors if you use UTF-8 strings as ' + 'filenames, as strings, or as file contents.') + mlog.warning('Please switch to a UTF-8 locale for your platform.') # Always resolve the command path so Ninja can find it for regen, tests, etc. launcher = os.path.realpath(sys.argv[0]) return mesonmain.run(launcher, sys.argv[1:]) diff --git a/mesonbuild/mesonlib.py b/mesonbuild/mesonlib.py index b92be5f..4d9cc69 100644 --- a/mesonbuild/mesonlib.py +++ b/mesonbuild/mesonlib.py @@ -303,7 +303,7 @@ def do_conf_file(src, dst, confdata): replace_if_different(dst, dst_tmp) def dump_conf_header(ofilename, cdata): - with open(ofilename, 'w') as ofile: + with open(ofilename, 'w', encoding='utf-8') as ofile: ofile.write('''/* * Autogenerated by the Meson build system. * Do not edit, your changes will be lost. |