43 lines
1.6 KiB
Python
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()
|