Add an option to print all logs on stdout.

This commit is contained in:
Matthieu Gautier 2017-01-24 13:59:15 +01:00
parent ea6bf84f2c
commit 70b87c8c53
1 changed files with 14 additions and 6 deletions

View File

@ -172,17 +172,22 @@ class BuildEnv:
os.makedirs(cwd, exist_ok=True) os.makedirs(cwd, exist_ok=True)
if env is None: if env is None:
env = dict(os.environ) env = dict(os.environ)
with open(context.log_file, 'w') as log: log = None
log.write("run command '{}'\n".format(command)) try:
log.write("env is :\n") if not self.options.verbose:
log = open(context.log_file, 'w')
print("run command '{}'".format(command), file=log)
print("env is :",file=log)
for k, v in env.items(): for k, v in env.items():
log.write(" {} : {!r}\n".format(k, v)) print(" {} : {!r}".format(k, v), file=log)
log.flush()
kwargs = dict() kwargs = dict()
if input: if input:
kwargs['stdin'] = input kwargs['stdin'] = input
return subprocess.check_call(command, shell=True, cwd=cwd, env=env, stdout=log, stderr=subprocess.STDOUT, **kwargs) return subprocess.check_call(command, shell=True, cwd=cwd, env=env, stdout=log or sys.stdout, stderr=subprocess.STDOUT, **kwargs)
finally:
if log:
log.close()
def download(self, what, where=None): def download(self, what, where=None):
where = where or self.archive_dir where = where or self.archive_dir
@ -564,6 +569,9 @@ def parse_args():
parser.add_argument('--libprefix', default=None) parser.add_argument('--libprefix', default=None)
parser.add_argument('--target_arch', default="x86_64") parser.add_argument('--target_arch', default="x86_64")
parser.add_argument('--build_static', action="store_true") parser.add_argument('--build_static', action="store_true")
parser.add_argument('--verbose', '-v', action="store_true",
help=("Print all logs on stdout instead of in specific"
" log files per commands"))
return parser.parse_args() return parser.parse_args()
if __name__ == "__main__": if __name__ == "__main__":