diff options
author | Ed Bartosh <ed.bartosh@linux.intel.com> | 2016-07-05 01:08:14 +0300 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2016-07-08 09:55:39 +0100 |
commit | 732001cb268683f5b56e251e2964ec5b694a2147 (patch) | |
tree | adeff3343e2752f1324dbc60dbc11b3bb5f3811e | |
parent | 875910451e1ce97d0c42b41b1140c8160ed1f40a (diff) | |
download | openembedded-core-732001cb268683f5b56e251e2964ec5b694a2147.tar.gz openembedded-core-732001cb268683f5b56e251e2964ec5b694a2147.tar.bz2 openembedded-core-732001cb268683f5b56e251e2964ec5b694a2147.zip |
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.
Signed-off-by: Ed Bartosh <ed.bartosh@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r-- | meta/classes/devshell.bbclass | 4 | ||||
-rwxr-xr-x | 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 041ed15d46..be71aff35f 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 7761f667ef..31a75ac29f 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()) |