diff options
author | Daniel Mensinger <daniel@mensinger-ka.de> | 2020-04-12 15:11:54 +0200 |
---|---|---|
committer | Daniel Mensinger <daniel@mensinger-ka.de> | 2020-04-12 15:11:54 +0200 |
commit | 1be660ff64f2cb69cac0376ae57f65908b34238b (patch) | |
tree | a1b9d7a446b2706db34db3ed27ec65e553ff2e55 /mesonbuild/cmake | |
parent | 4199cb32a513370b6dd68ea90cdd0e5b852dff23 (diff) | |
download | meson-1be660ff64f2cb69cac0376ae57f65908b34238b.zip meson-1be660ff64f2cb69cac0376ae57f65908b34238b.tar.gz meson-1be660ff64f2cb69cac0376ae57f65908b34238b.tar.bz2 |
cmake: Capture stdout with UNIX pipes
Diffstat (limited to 'mesonbuild/cmake')
-rwxr-xr-x | mesonbuild/cmake/data/run_ctgt.py | 26 |
1 files changed, 25 insertions, 1 deletions
diff --git a/mesonbuild/cmake/data/run_ctgt.py b/mesonbuild/cmake/data/run_ctgt.py index 1897a1b..9d5d437 100755 --- a/mesonbuild/cmake/data/run_ctgt.py +++ b/mesonbuild/cmake/data/run_ctgt.py @@ -5,6 +5,7 @@ import subprocess import shutil import os import sys +from pathlib import Path commands = [[]] SEPARATOR = ';;;' @@ -40,9 +41,32 @@ for i in commands: if not i: continue + cmd = [] + stdout = None + stderr = None + capture_file = '' + + for j in i: + if j in ['>', '>>']: + stdout = subprocess.PIPE + continue + elif j in ['&>', '&>>']: + stdout = subprocess.PIPE + stderr = subprocess.STDOUT + continue + + if stdout is not None or stderr is not None: + capture_file += j + else: + cmd += [j] + try: os.makedirs(args.directory, exist_ok=True) - subprocess.run(i, cwd=args.directory, check=True) + + res = subprocess.run(cmd, stdout=stdout, stderr=stderr, cwd=args.directory, check=True) + if capture_file: + out_file = Path(args.directory) / capture_file + out_file.write_bytes(res.stdout) except subprocess.CalledProcessError: exit(1) |