Open file in text mode (unicode) where appropriate.
authorZac Medico <zmedico@gentoo.org>
Wed, 5 Aug 2009 00:09:15 +0000 (00:09 -0000)
committerZac Medico <zmedico@gentoo.org>
Wed, 5 Aug 2009 00:09:15 +0000 (00:09 -0000)
svn path=/main/trunk/; revision=13913

pym/_emerge/Binpkg.py
pym/_emerge/BinpkgVerifier.py
pym/_emerge/EbuildBuild.py
pym/_emerge/EbuildFetcher.py
pym/_emerge/EbuildPhase.py
pym/_emerge/PackageUninstall.py
pym/_emerge/changelog.py
pym/_emerge/depgraph.py
pym/_emerge/emergelog.py

index 037f488bd06b170ca8872ecc897e9980f3a1843a..89f9925cc7c5884afb97abb26591c804655b1481 100644 (file)
@@ -17,6 +17,7 @@ except ImportError:
        import sys
        sys.path.insert(0, osp.join(osp.dirname(osp.dirname(osp.realpath(__file__))), "pym"))
        import portage
+import codecs
 import os
 from portage.output import colorize
 class Binpkg(CompositeTask):
@@ -35,7 +36,8 @@ class Binpkg(CompositeTask):
 
                log_path = self.settings.get("PORTAGE_LOG_FILE")
                if  log_path is not None:
-                       f = open(log_path, 'a')
+                       f = codecs.open(log_path, mode='a',
+                               encoding='utf_8', errors='replace')
                        try:
                                f.write(msg)
                        finally:
@@ -228,7 +230,8 @@ class Binpkg(CompositeTask):
                        else:
                                continue
 
-                       f = open(os.path.join(infloc, k), 'wb')
+                       f = codecs.open(os.path.join(infloc, k), mode='w',
+                               encoding='utf_8', errors='replace')
                        try:
                                f.write(v + "\n")
                        finally:
index 5827d07100b0933bf0c07231bf28958dccd321d1..e0bd82203918f9fef3afe0589b68c10ca9f53168 100644 (file)
@@ -12,6 +12,7 @@ except ImportError:
        import sys
        sys.path.insert(0, osp.join(osp.dirname(osp.dirname(osp.realpath(__file__))), "pym"))
        import portage
+import codecs
 import os
 class BinpkgVerifier(AsynchronousTask):
        __slots__ = ("logfile", "pkg",)
@@ -31,7 +32,8 @@ class BinpkgVerifier(AsynchronousTask):
                stderr_orig = sys.stderr
                log_file = None
                if self.background and self.logfile is not None:
-                       log_file = open(self.logfile, 'a')
+                       log_file = codecs.open(self.logfile, mode='a',
+                               encoding='utf_8', errors='replace')
                try:
                        if log_file is not None:
                                sys.stdout = log_file
index 1d98d88b57d52f82073e056a99596fb3e5e0e9c6..4bfd817adecd39bd76915ac95e7ba1ff7e95a096 100644 (file)
@@ -18,6 +18,7 @@ except ImportError:
        import sys
        sys.path.insert(0, osp.join(osp.dirname(osp.dirname(osp.realpath(__file__))), "pym"))
        import portage
+import codecs
 import os
 from portage.output import colorize
 class EbuildBuild(CompositeTask):
@@ -187,7 +188,8 @@ class EbuildBuild(CompositeTask):
 
                        log_path = self.settings.get("PORTAGE_LOG_FILE")
                        if log_path is not None:
-                               log_file = open(log_path, 'a')
+                               log_file = codecs.open(log_path, mode='a',
+                                       encoding='utf_8', errors='replace')
                                try:
                                        log_file.write(msg)
                                finally:
index cfb9093ce9daa8fea4f1fca60887e7bec88d8561..e8f810243ea777a314e50301979046ea78405a78 100644 (file)
@@ -12,6 +12,7 @@ except ImportError:
        import sys
        sys.path.insert(0, osp.join(osp.dirname(osp.dirname(osp.realpath(__file__))), "pym"))
        import portage
+import codecs
 import os
 from portage.elog.messages import eerror
 class EbuildFetcher(SpawnProcess):
@@ -92,7 +93,8 @@ class EbuildFetcher(SpawnProcess):
                                elog_out = None
                                if self.logfile is not None:
                                        if self.background:
-                                               elog_out = open(self.logfile, 'a')
+                                               elog_out = codecs.open(self.logfile, mode='a',
+                                                       encoding='utf_8', errors='replace')
                                msg = "Fetch failed for '%s'" % (self.pkg.cpv,)
                                if self.logfile is not None:
                                        msg += ", Log file:"
index c63863c762c6507a81f8e9a6b4178a9c41eb10dc..22b9f8bcb58e07d97a30e367c255ac45fb23822e 100644 (file)
@@ -13,6 +13,7 @@ except ImportError:
        import sys
        sys.path.insert(0, osp.join(osp.dirname(osp.dirname(osp.realpath(__file__))), "pym"))
        import portage
+import codecs
 import os
 class EbuildPhase(CompositeTask):
 
@@ -36,7 +37,8 @@ class EbuildPhase(CompositeTask):
                        log_path = self.settings.get("PORTAGE_LOG_FILE")
                        log_file = None
                        if self.background and log_path is not None:
-                               log_file = open(log_path, 'a')
+                               log_file = codecs.open(log_path, mode='a',
+                                       encoding='utf_8', errors='replace')
                                out = log_file
                        try:
                                portage._check_build_log(self.settings, out=out)
index 69a126bf309f402ac816e239b699de2534070d6e..948bae82bac30885911df1b20aed20e59d1c98ab 100644 (file)
@@ -2,6 +2,7 @@
 # Distributed under the terms of the GNU General Public License v2
 # $Id$
 
+import codecs
 import logging
 import os
 
@@ -47,7 +48,8 @@ class PackageUninstall(AsynchronousTask):
                                portage.util.writemsg_level(msg,
                                        level=level, noiselevel=noiselevel)
 
-                       f = open(log_path, 'a')
+                       f = codecs.open(log_path, mode='a',
+                               encoding='utf_8', errors='replace')
                        try:
                                f.write(msg)
                        finally:
index 76a7c9724c2d40a70a9bacdf49f75954bf0ff0b2..762cae024afa7de03e8dae1f56fc14cac7e871cc 100644 (file)
@@ -2,6 +2,7 @@
 # Distributed under the terms of the GNU General Public License v2
 # $Id$
 
+import codecs
 import os
 import re
 
@@ -24,7 +25,8 @@ def calc_changelog(ebuildpath,current,next):
                next = next[:-3]
        changelogpath = os.path.join(os.path.split(ebuildpath)[0],'ChangeLog')
        try:
-               changelog = open(changelogpath).read()
+               changelog = codecs.open(changelogpath, mode='r',
+                       encoding='utf_8', errors='replace').read()
        except SystemExit, e:
                raise # Needed else can't exit
        except:
index aba41de41c04185fcbd85449a302ffa5a7ff171f..3d126ad00a9b1daed9a226e7371b13a27c1309ab 100644 (file)
@@ -4354,6 +4354,14 @@ class depgraph(object):
                if "--changelog" in self._frozen_config.myopts:
                        print
                        for revision,text in changelogs:
+
+                               if sys.hexversion < 0x3000000:
+                                       # avoid potential UnicodeEncodeError
+                                       if isinstance(revision, unicode):
+                                               revision = revision.encode('utf_8', 'replace')
+                                       if isinstance(text, unicode):
+                                               text = text.encode('utf_8', 'replace')
+
                                print bold('*'+revision)
                                sys.stdout.write(text)
 
index 8a5ac6aefe891b3ad0a8649854025d68e2fbcbe1..1469f5265ccc4958acda7bd133a103ff495269f9 100644 (file)
@@ -2,6 +2,7 @@
 # Distributed under the terms of the GNU General Public License v2
 # $Id$
 
+import codecs
 import os
 import sys
 import time
@@ -24,7 +25,8 @@ def emergelog(xterm_titles, mystr, short_msg=None):
                xtermTitle(short_msg)
        try:
                file_path = os.path.join(_emerge_log_dir, 'emerge.log')
-               mylogfile = open(file_path, "a")
+               mylogfile = codecs.open(file_path, mode='a',
+                       encoding='utf_8', errors='replace')
                portage.util.apply_secpass_permissions(file_path,
                        uid=portage.portage_uid, gid=portage.portage_gid,
                        mode=0660)