Код: Выделить всё
Index: pym/portage/cache/sqlite.py
===================================================================
--- pym/portage/cache/sqlite.py (revision 14170)
+++ pym/portage/cache/sqlite.py (revision 14171)
@@ -48,7 +48,7 @@
def _db_escape_string(self, s):
"""meta escaping, returns quoted string for use in sql statements"""
# This is equivalent to the _quote function from pysqlite 1.1.
- return "'%s'" % str(s).replace("'","''")
+ return "'%s'" % s.replace("'", "''")
def _db_init_connection(self, config):
self._dbpath = self.location + ".sqlite"Сказали:
If this patch is saved as /tmp/unicode_error.patch, then it can be applied as
follows:
patch /usr/lib/portage/pym/portage/cache/sqlite.py /tmp/unicode_error.patch
После этого сдохли портежи, начали вываливаться с ошибками при --sync'е:
Код: Выделить всё
>>> Updating Portage cache
0% [> ]Traceback (most recent call last):
File "/usr/bin/emerge", line 40, in <module>
retval = emerge_main()
File "/usr/lib/portage/pym/_emerge/main.py", line 1328, in emerge_main
return action_sync(settings, trees, mtimedb, myopts, myaction)
File "/usr/lib/portage/pym/_emerge/actions.py", line 2171, in action_sync
action_metadata(settings, portdb, myopts, porttrees=[myportdir])
File "/usr/lib/portage/pym/_emerge/actions.py", line 1632, in action_metadata
tree_data.dest_db[cpv] = src
File "/usr/lib/portage/pym/portage/cache/template.py", line 77, in __setitem__
self._setitem(cpv, d)
File "/usr/lib/portage/pym/portage/cache/sqlite.py", line 181, in _setitem
values_parameters.append(self._db_escape_string(values.get(k, '')))
File "/usr/lib/portage/pym/portage/cache/sqlite.py", line 51, in _db_escape_string
return "'%s'" % s.replace("'", "''")
AttributeError: 'long' object has no attribute 'replace'На багзилле сказали отменить этот патч и применить другой. Но этот не отменяется.
Код: Выделить всё
pc tmp # patch -R /usr/lib/portage/pym/portage/cache/sqlite.py /tmp/unicode_error.patch
patching file /usr/lib/portage/pym/portage/cache/sqlite.py
Hunk #1 FAILED at 47.
1 out of 1 hunk FAILED -- saving rejects to file /usr/lib/portage/pym/portage/cache/sqlite.py.rejКак восстановить это?
Как я понял, там сломан тока один файл. Если да, то выложите его кто-нить