[gnome-continuous-yocto/gnomeostree-3.28-rocko: 1172/8267] devpyshell: python3: flush stdout explicitly
- From: Emmanuele Bassi <ebassi src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-continuous-yocto/gnomeostree-3.28-rocko: 1172/8267] devpyshell: python3: flush stdout explicitly
- Date: Sat, 16 Dec 2017 21:27:19 +0000 (UTC)
commit e8feb1976a04d0a0850fc316cfff390d0569ec4a
Author: Ed Bartosh <ed bartosh linux intel com>
Date: Tue Jul 5 01:08:14 2016 +0300
devpyshell: python3: flush stdout explicitly
Opening text stream in unbuffered mode raises the following
exception In Python 3:
ValueError: can't have unbuffered text I/O
Fixed by leaving std* streams in text mode and flushing
stdout explicitly.
(From OE-Core rev: 732001cb268683f5b56e251e2964ec5b694a2147)
Signed-off-by: Ed Bartosh <ed bartosh linux intel com>
Signed-off-by: Richard Purdie <richard purdie linuxfoundation org>
meta/classes/devshell.bbclass | 4 ++--
scripts/oepydevshell-internal.py | 4 +---
2 files changed, 3 insertions(+), 5 deletions(-)
---
diff --git a/meta/classes/devshell.bbclass b/meta/classes/devshell.bbclass
index 041ed15..be71aff 100644
--- a/meta/classes/devshell.bbclass
+++ b/meta/classes/devshell.bbclass
@@ -65,8 +65,6 @@ def devpyshell(d):
os.dup2(m, sys.stdout.fileno())
os.dup2(m, sys.stderr.fileno())
- sys.stdin = os.fdopen(sys.stdin.fileno(), 'r', 0)
-
bb.utils.nonblockingfd(sys.stdout)
bb.utils.nonblockingfd(sys.stderr)
bb.utils.nonblockingfd(sys.stdin)
@@ -92,6 +90,7 @@ def devpyshell(d):
else:
prompt = ps1
sys.stdout.write(prompt)
+ sys.stdout.flush()
# Restore Ctrl+C since bitbake masks this
def signal_handler(signal, frame):
@@ -113,6 +112,7 @@ def devpyshell(d):
continue
except EOFError as e:
sys.stdout.write("\n")
+ sys.stdout.flush()
except (OSError, IOError) as e:
if e.errno == 11:
continue
diff --git a/scripts/oepydevshell-internal.py b/scripts/oepydevshell-internal.py
index 7761f66..31a75ac 100755
--- a/scripts/oepydevshell-internal.py
+++ b/scripts/oepydevshell-internal.py
@@ -29,9 +29,6 @@ if len(sys.argv) != 3:
pty = open(sys.argv[1], "w+b", 0)
parent = int(sys.argv[2])
-# Don't buffer output by line endings
-sys.stdout = os.fdopen(sys.stdout.fileno(), 'w', 0)
-sys.stdin = os.fdopen(sys.stdin.fileno(), 'r', 0)
nonblockingfd(pty)
nonblockingfd(sys.stdin)
@@ -64,6 +61,7 @@ try:
# Write a page at a time to avoid overflowing output
# d.keys() is a good way to do that
sys.stdout.write(i[:4096])
+ sys.stdout.flush()
i = i[4096:]
if sys.stdin in ready:
echonocbreak(sys.stdin.fileno())
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]