[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 <module>
    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
This commit is contained in:
Fabio Erculiani
2013-02-20 13:05:36 +01:00
parent 9eb56dbc14
commit dc4f23ef01

View File

@@ -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: