logging: set stdout and stderr to None in some cases

For very long processes, we might want to keep stdout and stderr
by default to None.
So no redirection will occur in the child process as explained in:
https://docs.python.org/2/library/subprocess.html
That will result in the child process stdin and stderr to be same
than in common.py and avoid to have the logs blocked during the
child process execution and flushed only when child process terminates.
Since the logs are continously displayed, it allows to easily confirm
that the process is not blocked.

Bug: 133380588
Test: generate iota & Check that the logs are not blocked.

Change-Id: I6d6cb56547bf3a4a4334dfa22b6b2b05d2c36a5e
Signed-off-by: Regnier, Philippe <philippe.regnier@intel.com>
This commit is contained in:
Regnier, Philippe 2019-05-22 10:10:57 +08:00 committed by Xihua Chen
parent 40b5340a94
commit 2f7e11ef27
2 changed files with 7 additions and 5 deletions

View File

@ -242,6 +242,8 @@ def RunAndCheckOutput(args, verbose=None, **kwargs):
"""
proc = Run(args, verbose=verbose, **kwargs)
output, _ = proc.communicate()
if output is None:
output = ""
# Don't log any if caller explicitly says so.
if verbose != False:
logger.info("%s", output.rstrip())

View File

@ -517,7 +517,7 @@ class PayloadSigner(object):
"""Signs the given input file. Returns the output filename."""
out_file = common.MakeTempFile(prefix="signed-", suffix=".bin")
cmd = [self.signer] + self.signer_args + ['-in', in_file, '-out', out_file]
common.RunAndCheckOutput(cmd)
common.RunAndCheckOutput(cmd, stdout=None, stderr=None)
return out_file
@ -559,7 +559,7 @@ class Payload(object):
if source_file is not None:
cmd.extend(["--source_image", source_file])
cmd.extend(additional_args)
common.RunAndCheckOutput(cmd)
common.RunAndCheckOutput(cmd, stdout=None, stderr=None)
self.payload_file = payload_file
self.payload_properties = None
@ -583,7 +583,7 @@ class Payload(object):
"--signature_size", str(payload_signer.key_size),
"--metadata_hash_file", metadata_sig_file,
"--payload_hash_file", payload_sig_file]
common.RunAndCheckOutput(cmd)
common.RunAndCheckOutput(cmd, stdout=None, stderr=None)
# 2. Sign the hashes.
signed_payload_sig_file = payload_signer.Sign(payload_sig_file)
@ -598,7 +598,7 @@ class Payload(object):
"--signature_size", str(payload_signer.key_size),
"--metadata_signature_file", signed_metadata_sig_file,
"--payload_signature_file", signed_payload_sig_file]
common.RunAndCheckOutput(cmd)
common.RunAndCheckOutput(cmd, stdout=None, stderr=None)
# 4. Dump the signed payload properties.
properties_file = common.MakeTempFile(prefix="payload-properties-",
@ -606,7 +606,7 @@ class Payload(object):
cmd = ["brillo_update_payload", "properties",
"--payload", signed_payload_file,
"--properties_file", properties_file]
common.RunAndCheckOutput(cmd)
common.RunAndCheckOutput(cmd, stdout=None, stderr=None)
if self.secondary:
with open(properties_file, "a") as f: