patman: Provide a way to get program output in binary mode
At present cros_subprocess and the tools library use a string to obtain stdout from a program. This works fine on Python 2. With Python 3 we end up with unicode errors in some cases. Fix this by providing a binary mode, which returns the data as bytes() instead of a string. Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
parent
3e4b51e8d6
commit
a92939a4aa
2 changed files with 4 additions and 3 deletions
|
@ -54,7 +54,7 @@ class Popen(subprocess.Popen):
|
|||
"""
|
||||
|
||||
def __init__(self, args, stdin=None, stdout=PIPE_PTY, stderr=PIPE_PTY,
|
||||
shell=False, cwd=None, env=None, **kwargs):
|
||||
shell=False, cwd=None, env=None, binary=False, **kwargs):
|
||||
"""Cut-down constructor
|
||||
|
||||
Args:
|
||||
|
@ -72,6 +72,7 @@ class Popen(subprocess.Popen):
|
|||
"""
|
||||
stdout_pty = None
|
||||
stderr_pty = None
|
||||
self.binary = binary
|
||||
|
||||
if stdout == PIPE_PTY:
|
||||
stdout_pty = pty.openpty()
|
||||
|
|
|
@ -167,9 +167,9 @@ def PathHasFile(fname):
|
|||
return True
|
||||
return False
|
||||
|
||||
def Run(name, *args):
|
||||
def Run(name, *args, **kwargs):
|
||||
try:
|
||||
return command.Run(name, *args, cwd=outdir, capture=True)
|
||||
return command.Run(name, *args, cwd=outdir, capture=True, **kwargs)
|
||||
except:
|
||||
if not PathHasFile(name):
|
||||
msg = "Plesae install tool '%s'" % name
|
||||
|
|
Loading…
Reference in a new issue