linamh/sys-apps/rigo-daemon/files/fileobjs-rigo.patch

76 lines
2.9 KiB
Diff
Raw Normal View History

2021-08-20 15:58:48 +02:00
(part of)
commit 0019b6e68af9bda8b368a7073e5eb927607f00e2
Author: Sławomir Nizio <slawomir.nizio@sabayon.org>
Date: Sat Mar 21 22:08:50 2020 +0100
[entropy.misc, rigo] fix file-like objects with Python 3
FakeOutFile and LogFile need .buffer like Python 3 "text" file objects
which is needed when in rigo standard output/error is replaced, and then
it reaches Portage which does this:
if sys.hexversion >= 0x3000000 and fd in (sys.stdout, sys.stderr):
fd = fd.buffer
fd.write(mystr)
(/usr/lib64/python3.6/site-packages/portage/util/__init__.py).
Entropy internal code did not need this.
Note, after this commit, changes done previously:
1)
commit 0869912ec4c630d2946e835b2585367e233c1c15
[entropy.spm] Rigo related Python 3 fix
File "/usr/lib64/python3.6/site-packages/entropy/spm/plugins/interfaces/portage_plugin/__init__.py", line 101, in _pusher
self._std.buffer.write(chunk)
AttributeError: 'FakeOutFile' object has no attribute 'buffer'
2)
commit 8700aade27cb4117bf102afc7bd22ba6acfd8aa8
[entropy.spm, rigo] Rigo related Python 3 fixes
1)
File "/usr/lib/python-exec/python3.6/RigoDaemon_app.py", line 362, in _pusher
fobj.write(chunk)
TypeError: write() argument must be str, not bytes
2)
File "/usr/lib64/python3.6/site-packages/entropy/spm/plugins/interfaces/portage_plugin/__init__.py", line 77, in __init__
self.buffer = Writer(self, self._std.buffer)
AttributeError: 'FakeOutFile' object has no attribute 'buffer'
(...)
could be likely reverted; not tested, it could be better to have them anyway to
avoid futher re/encoding/checks if conversions are needed (subjective).
Fixes bug 5899.
diff --git a/app/RigoDaemon_app.py b/app/RigoDaemon_app.py
index 39c4aeefe..33b45e5b8 100755
--- a/app/RigoDaemon_app.py
+++ b/app/RigoDaemon_app.py
@@ -79,7 +79,7 @@ from entropy.exceptions import DependenciesNotFound, \
EntropyPackageException, InterruptError, RepositoryError
from entropy.i18n import _
from entropy.misc import LogFile, ParallelTask, TimeScheduled, \
- ReadersWritersSemaphore
+ ReadersWritersSemaphore, FileobjCompatBuffer
from entropy.fetchers import UrlFetcher, MultipleUrlFetcher
from entropy.output import TextInterface, purple, teal
from entropy.client.interfaces import Client
@@ -340,6 +340,10 @@ class FakeOutFile(object):
self._app_mgmt_mutex = app_mgmt_mutex
self._app_mgmt_notes = app_mgmt_notes
self._rfd, self._wfd = os.pipe()
+
+ if const_is_python3():
+ self.buffer = FileobjCompatBuffer(self)
+
task = ParallelTask(self._pusher)
task.name = "FakeOutFilePusher"
task.daemon = True