From bda9fe51c8e22d4c8c5ad8325094abd6ed25706d Mon Sep 17 00:00:00 2001 From: Pedro Alvarez Date: Sun, 21 Feb 2016 02:45:15 +0000 Subject: Avoid UnicodeDecodeError when writing to log files This is the counterpart fix to b3ecd02236e58386ac4d7566ef70e751ff0d7e26, which had broken the Morph test suite, as it turns out. Change-Id: I5392c2c762c733d7d88cd20898970ec314525d89 --- distbuild/initiator.py | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/distbuild/initiator.py b/distbuild/initiator.py index e02f6404..86868618 100644 --- a/distbuild/initiator.py +++ b/distbuild/initiator.py @@ -1,6 +1,6 @@ # distbuild/initiator.py -- state machine for the initiator # -# Copyright (C) 2012, 2014-2015 Codethink Limited +# Copyright (C) 2012, 2014-2016 Codethink Limited # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -17,7 +17,6 @@ import cliapp -import codecs import itertools import logging import os @@ -196,7 +195,7 @@ class Initiator(distbuild.StateMachine): path = self._get_step_output_dir() filename = os.path.join(path, 'build-step-%s.log' % msg['step_name']) - f = codecs.open(filename, 'a', encoding='utf-8') + f = open(filename, 'a') self._step_outputs[msg['step_name']] = f def _close_output(self, msg): @@ -230,8 +229,15 @@ class Initiator(distbuild.StateMachine): step_name = msg['step_name'] if step_name in self._step_outputs: f = self._get_output(msg) - f.write(msg['stdout']) - f.write(msg['stderr']) + if isinstance(msg['stdout'], unicode): + f.write(msg['stdout'].encode('utf-8')) + else: + f.write(msg['stdout']) + + if isinstance(msg['stderr'], unicode): + f.write(msg['stderr'].encode('utf-8')) + else: + f.write(msg['stderr']) f.flush() else: logging.warning( -- cgit v1.2.1