aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/cmake
diff options
context:
space:
mode:
Diffstat (limited to 'mesonbuild/cmake')
-rwxr-xr-xmesonbuild/cmake/data/run_ctgt.py26
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)