From dc4f23ef01ce53c1585065c1c056dcc854eb7b0a Mon Sep 17 00:00:00 2001 From: Fabio Erculiani Date: Wed, 20 Feb 2013 13:05:36 +0100 Subject: [PATCH] [entropy.spm] PortagePlugin: fix xblast CONTENTS mangling when splitdebug=disabled This is the exception generated by reading CONTENTS expecting valid UTF-8 encoded text (while it currently is raw_unicode_escape): stacktrace: Traceback (most recent call last): File "/usr/bin/equo", line 15, in main() File "/usr/lib/entropy/client/solo/main.py", line 333, in main exit_st = func(*func_args) File "/usr/lib/entropy/client/solo/commands/command.py", line 335, in _call_locked return func(client) File "/usr/lib/entropy/client/solo/commands/install.py", line 183, in _install relaxed, multifetch, packages) File "/usr/lib/entropy/client/solo/commands/install.py", line 609, in _install_action exit_st = pkg.run(xterm_header=xterm_header) File "/usr/lib/entropy/lib/entropy/client/interfaces/package.py", line 4266, in run rc = self._stepper(xterm_header) File "/usr/lib/entropy/lib/entropy/client/interfaces/package.py", line 4251, in _stepper rc = steps_data.get(step)() File "/usr/lib/entropy/lib/entropy/client/interfaces/package.py", line 4153, in do_install_spm self.pkgmeta['installed_package_id']) File "/usr/lib/entropy/lib/entropy/client/interfaces/package.py", line 2262, in _spm_install_package spm_uid = Spm.add_installed_package(self.pkgmeta) File "/usr/lib/entropy/lib/entropy/spm/plugins/interfaces/portage_plugin/__init__.py", line 3078, in add_installed_package splitdebug_dirs) File "/usr/lib/entropy/lib/entropy/spm/plugins/interfaces/portage_plugin/__init__.py", line 2859, in __splitdebug_update_contents_file line = cont_f.readline() File "/usr/lib64/python2.7/codecs.py", line 675, in readline return self.reader.readline(size) File "/usr/lib64/python2.7/codecs.py", line 530, in readline data = self.read(readsize, firstline=True) File "/usr/lib64/python2.7/codecs.py", line 477, in read newchars, decodedbytes = self.decode(data, self.errors) UnicodeDecodeError: 'utf8' codec can't decode byte 0xee in position 30: invalid continuation byte --- lib/entropy/spm/plugins/interfaces/portage_plugin/__init__.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/entropy/spm/plugins/interfaces/portage_plugin/__init__.py b/lib/entropy/spm/plugins/interfaces/portage_plugin/__init__.py index fa62250a0..c61c5e05b 100644 --- a/lib/entropy/spm/plugins/interfaces/portage_plugin/__init__.py +++ b/lib/entropy/spm/plugins/interfaces/portage_plugin/__init__.py @@ -2839,7 +2839,9 @@ class PortagePlugin(SpmPlugin): os.access(contents_path, os.R_OK)): return - enc = etpConst['conf_encoding'] + # Portage metadata is encoded using raw_unicode_escape. + # Do not change enc to UTF-8, or xblast installation will fail. + enc = etpConst['conf_raw_encoding'] with codecs.open(contents_path, "r", encoding=enc) as cont_f: with codecs.open(contents_path+".tmp", "w", encoding=enc) \ as cont_new_f: