summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--pym/_emerge/SpawnProcess.py6
-rw-r--r--pym/portage/tests/ebuild/test_pty_eof.py4
-rw-r--r--pym/portage/util/_pty.py4
3 files changed, 8 insertions, 6 deletions
diff --git a/pym/_emerge/SpawnProcess.py b/pym/_emerge/SpawnProcess.py
index 0cddbe801..bc861e9c5 100644
--- a/pym/_emerge/SpawnProcess.py
+++ b/pym/_emerge/SpawnProcess.py
@@ -1,4 +1,4 @@
-# Copyright 1999-2010 Gentoo Foundation
+# Copyright 1999-2011 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
from _emerge.SubProcess import SubProcess
@@ -72,7 +72,9 @@ class SpawnProcess(SubProcess):
else:
fd_pipes[0] = fd_pipes_orig[0]
- files.process = os.fdopen(master_fd, 'rb')
+ # WARNING: It is very important to use unbuffered mode here,
+ # in order to avoid issue 5380 with python3.
+ files.process = os.fdopen(master_fd, 'rb', 0)
if logfile is not None:
fd_pipes[1] = slave_fd
diff --git a/pym/portage/tests/ebuild/test_pty_eof.py b/pym/portage/tests/ebuild/test_pty_eof.py
index c4386e944..251b63c43 100644
--- a/pym/portage/tests/ebuild/test_pty_eof.py
+++ b/pym/portage/tests/ebuild/test_pty_eof.py
@@ -14,7 +14,7 @@ class PtyEofTestCase(TestCase):
# The result is only valid if openpty does not raise EnvironmentError.
if _can_test_pty_eof():
try:
- self.assertEqual(_test_pty_eof(), True)
+ self.assertEqual(_test_pty_eof(fdopen_buffered=True), True)
except EnvironmentError:
pass
@@ -26,6 +26,6 @@ class PtyEofTestCase(TestCase):
# The result is only valid if openpty does not raise EnvironmentError.
if _can_test_pty_eof():
try:
- self.assertEqual(_test_pty_eof(fdopen_buffered=False), True)
+ self.assertEqual(_test_pty_eof(), True)
except EnvironmentError:
pass
diff --git a/pym/portage/util/_pty.py b/pym/portage/util/_pty.py
index 7e769d204..c96bf74fd 100644
--- a/pym/portage/util/_pty.py
+++ b/pym/portage/util/_pty.py
@@ -1,4 +1,4 @@
-# Copyright 2010 Gentoo Foundation
+# Copyright 2010-2011 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
import array
@@ -28,7 +28,7 @@ def _can_test_pty_eof():
"""
return platform.system() in ("Linux",)
-def _test_pty_eof(fdopen_buffered=True):
+def _test_pty_eof(fdopen_buffered=False):
"""
Returns True if this issues is fixed for the currently
running version of python: http://bugs.python.org/issue5380