Phase 6: Native Executables implementieren und Change archivieren
This commit is contained in:
42
tests/support/build-runtime.py
Normal file
42
tests/support/build-runtime.py
Normal file
@@ -0,0 +1,42 @@
|
||||
#!/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()
|
||||
Reference in New Issue
Block a user