Files
OrcaSlicer-bambulab/scripts/generate_linux_payload_manifest.py
2026-05-11 19:29:55 +01:00

37 lines
1.3 KiB
Python

#!/usr/bin/env python3
import argparse, hashlib, json
from pathlib import Path
def sha256(p: Path) -> str:
h = hashlib.sha256()
with p.open('rb') as f:
for chunk in iter(lambda: f.read(1024 * 1024), b''):
h.update(chunk)
return h.hexdigest()
def main():
ap = argparse.ArgumentParser()
ap.add_argument('plugin_dir', type=Path)
ap.add_argument('--abi-version', default='02.05.02.58')
ap.add_argument('--out', type=Path, default=None)
args = ap.parse_args()
net = args.plugin_dir / 'libbambu_networking.so'
src = args.plugin_dir / 'libBambuSource.so'
if not net.exists() or not src.exists():
raise SystemExit('missing linux payload files')
files = [
{'name': net.name, 'sha256': sha256(net), 'abi_version': args.abi_version},
{'name': src.name, 'sha256': sha256(src)},
]
for extra_name in ('liblive555.so', 'libagora_rtc_sdk.so', 'libagora-fdkaac.so'):
extra = args.plugin_dir / extra_name
if extra.exists():
files.append({'name': extra.name, 'sha256': sha256(extra)})
manifest = {'files': files}
out = args.out or (args.plugin_dir / 'linux_payload_manifest.json')
out.write_text(json.dumps(manifest, indent=2) + '\n')
print(out)
if __name__ == '__main__':
main()