Files
TerminalBasic/tests/support/build-runtime.py

43 lines
1.6 KiB
Python

#!/usr/bin/env python3
"""Builder-Aufruf für eine geprüfte tbrt-Vorlage; keine Cross-Toolchain-Installation."""
import argparse
import os
from pathlib import Path
import shutil
import subprocess
TARGETS = ('x86_64-pc-windows-msvc', 'aarch64-apple-darwin',
'x86_64-unknown-linux-gnu', 'aarch64-unknown-linux-gnu')
def main():
parser = argparse.ArgumentParser(description=__doc__)
parser.add_argument('--target', choices=TARGETS, required=True)
parser.add_argument('--output', type=Path, required=True,
help='neues Verzeichnis für tbrt und tbrt.meta')
args = parser.parse_args()
output = args.output.resolve()
root = Path(__file__).resolve().parents[2]
if output.exists():
parser.error(f'Ausgabeverzeichnis existiert bereits: {output}')
subprocess.run(['cargo', 'build', '--locked', '--release', '--target', args.target,
'-p', 'tb-runner', '--bin', 'tbrt'], cwd=root, check=True)
name = 'tbrt.exe' if args.target == TARGETS[0] else 'tbrt'
target_dir = Path(os.environ.get('CARGO_TARGET_DIR', root / 'target'))
if not target_dir.is_absolute():
target_dir = root / target_dir
output.mkdir(parents=True)
try:
shutil.copy2(target_dir / args.target / 'release' / name, output / name)
subprocess.run(['cargo', 'run', '--locked', '--release', '-p', 'tb-export',
'--bin', 'tb-template', '--', str(output / name), args.target],
cwd=root, check=True)
except BaseException:
shutil.rmtree(output)
raise
print(output)
if __name__ == '__main__':
main()