From 2f7e11ef27bc00108088eb2b0f5a5d9cc605afdd Mon Sep 17 00:00:00 2001 From: "Regnier, Philippe" Date: Wed, 22 May 2019 10:10:57 +0800 Subject: [PATCH] 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 --- tools/releasetools/common.py | 2 ++ tools/releasetools/ota_from_target_files.py | 10 +++++----- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/tools/releasetools/common.py b/tools/releasetools/common.py index e6422978d..c2c2ad00a 100644 --- a/tools/releasetools/common.py +++ b/tools/releasetools/common.py @@ -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()) diff --git a/tools/releasetools/ota_from_target_files.py b/tools/releasetools/ota_from_target_files.py index f686ca095..75f7564c5 100755 --- a/tools/releasetools/ota_from_target_files.py +++ b/tools/releasetools/ota_from_target_files.py @@ -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: