27 lines
1.7 KiB
Python
27 lines
1.7 KiB
Python
#!/usr/bin/env python3
|
|
"""Release-local budgets. Existing Demo/Playground payload regression is checked
|
|
by the repository make ci gate, not inferred from the standalone file size."""
|
|
import argparse, json
|
|
from pathlib import Path
|
|
p = argparse.ArgumentParser()
|
|
p.add_argument('--artifact', required=True, type=Path)
|
|
a = p.parse_args()
|
|
m = json.loads((a.artifact / 'manifest.json').read_text())
|
|
w = m['wasm']
|
|
files = {v['path']: v for v in m['files']}
|
|
if not w['bytes'] <= 8 * 1024 * 1024:
|
|
raise RuntimeError('WASM > 8 MiB')
|
|
if not files[w['path'] + '.gz']['bytes'] <= 3 * 1024 * 1024:
|
|
raise RuntimeError('WASM gzip > 3 MiB')
|
|
allowed = {'aego/art', 'aego/art/internal/aseprite', 'aego/tools/artstudio/host', 'aego/tools/artstudio/wasm'}
|
|
for dep in (a.artifact / 'dependency-audit.txt').read_text().splitlines():
|
|
if not (not dep.startswith('aego/') or dep in allowed):
|
|
raise RuntimeError(f'unexpected engine dependency: {dep}')
|
|
preview = m.get('previewWasm')
|
|
if not preview or preview['bytes'] > 32 * 1024 * 1024 or files[preview['path'] + '.gz']['bytes'] > 10 * 1024 * 1024:
|
|
raise RuntimeError('Missing or oversized lazy GPU preview')
|
|
for dep in (a.artifact / 'preview-dependency-audit.txt').read_text().splitlines():
|
|
if dep.startswith(('aego/app/', 'aego/editor/', 'aego/project/', 'aego/asset/pipeline', 'aego/asset/importers/')):
|
|
raise RuntimeError(f'unexpected desktop dependency in GPU preview: {dep}')
|
|
print(json.dumps({'standaloneBudget': 'PASS', 'wasmBytes': w['bytes'], 'gzipBytes': files[w['path'] + '.gz']['bytes'], 'previewWasmBytes': preview['bytes'], 'previewGzipBytes': files[preview['path'] + '.gz']['bytes'], 'previousDemoPlaygroundBudget': 'Required in separate full make ci gate; not inferred here.'}))
|