[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:
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user