commit:     54cdf7e6cf9ec2030283ab23d659e10562267c6b
Author:     Zac Medico <zmedico <AT> gentoo <DOT> org>
AuthorDate: Sat Jun 13 23:59:43 2020 +0000
Commit:     Zac Medico <zmedico <AT> gentoo <DOT> org>
CommitDate: Sun Jun 14 00:00:16 2020 +0000
URL:        https://gitweb.gentoo.org/proj/portage.git/commit/?id=54cdf7e6

PipeLogger: fix FEATURES=compress-build-logs (bug 709746)

For FEATURES=compress-build-logs, use log_file.write since data written
directly to the file descriptor bypasses compression.

Fixes: 3e46825a0470 ("PipeLogger: non-blocking write to pipe (bug 709746)")
Bug: https://bugs.gentoo.org/709746
Signed-off-by: Zac Medico <zmedico <AT> gentoo.org>

 lib/portage/util/_async/PipeLogger.py | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/lib/portage/util/_async/PipeLogger.py 
b/lib/portage/util/_async/PipeLogger.py
index 83669e05e..1776cc860 100644
--- a/lib/portage/util/_async/PipeLogger.py
+++ b/lib/portage/util/_async/PipeLogger.py
@@ -131,6 +131,13 @@ class PipeLogger(AbstractPollTask):
                                                                fcntl.F_GETFL) 
^ os.O_NONBLOCK)
 
                                if log_file is not None:
+                                       if isinstance(log_file, gzip.GzipFile):
+                                               # Use log_file.write since data 
written directly
+                                               # to the file descriptor 
bypasses compression.
+                                               log_file.write(buf)
+                                               log_file.flush()
+                                               continue
+
                                        write_buf = buf
                                        while write_buf:
                                                try:

Reply via email to