瀏覽代碼

buildman: properly translate strings for log and err files to ASCII

The build output can still produce unicode encoded output. But in
the buildman's log and err files we only want plain ASCII characters.

To handle all situations with unicode and non-unicode output, encode
the stdout and stderr strings to UTF-8 and afterwards to ASCII with
replacing all special characters.

Signed-off-by: Daniel Schwierzeck <daniel.schwierzeck@gmail.com>
Daniel Schwierzeck 8 年之前
父節點
當前提交
aafbe82fb6
共有 1 個文件被更改,包括 4 次插入2 次删除
  1. 4 2
      tools/buildman/builderthread.py

+ 4 - 2
tools/buildman/builderthread.py

@@ -280,13 +280,15 @@ class BuilderThread(threading.Thread):
         outfile = os.path.join(build_dir, 'log')
         outfile = os.path.join(build_dir, 'log')
         with open(outfile, 'w') as fd:
         with open(outfile, 'w') as fd:
             if result.stdout:
             if result.stdout:
-                fd.write(result.stdout.encode('latin-1', 'ignore'))
+                # We don't want unicode characters in log files
+                fd.write(result.stdout.decode('UTF-8').encode('ASCII', 'replace'))
 
 
         errfile = self.builder.GetErrFile(result.commit_upto,
         errfile = self.builder.GetErrFile(result.commit_upto,
                 result.brd.target)
                 result.brd.target)
         if result.stderr:
         if result.stderr:
             with open(errfile, 'w') as fd:
             with open(errfile, 'w') as fd:
-                fd.write(result.stderr.encode('latin-1', 'ignore'))
+                # We don't want unicode characters in log files
+                fd.write(result.stderr.decode('UTF-8').encode('ASCII', 'replace'))
         elif os.path.exists(errfile):
         elif os.path.exists(errfile):
             os.remove(errfile)
             os.remove(errfile)