Files
2026-09-21 13:41:40 +09:00

16 lines
1.3 KiB
Python

#!/usr/bin/env python3
"""Verify and build an explicitly transferred source snapshot inside the guest."""
import hashlib,json,os,subprocess,tarfile
from pathlib import Path
incoming=Path.home()/'incoming';source=Path.home()/'docview-source';build=Path.home()/'docview-build'
record=json.loads((incoming/'source-snapshot.json').read_text())
with (incoming/'source-snapshot.tar.gz').open('rb') as f:assert hashlib.file_digest(f,'sha256').hexdigest()==record['archiveSha256']
source.mkdir(exist_ok=True)
with tarfile.open(incoming/'source-snapshot.tar.gz') as t:t.extractall(source,filter='data')
for row in record['files']:
with (source/row['path']).open('rb') as f:assert hashlib.file_digest(f,'sha256').hexdigest()==row['sha256']
env=os.environ.copy();env['PATH']='/opt/docview-deps/bin:/opt/docview-qt/6.11.2/gcc_64/bin:'+env['PATH'];env['PKG_CONFIG_PATH']='/opt/docview-deps/lib/pkgconfig';env['LD_LIBRARY_PATH']='/opt/docview-deps/lib:/opt/docview-qt/6.11.2/gcc_64/lib'
print('Verified',len(record['files']),'input files; snapshot',record['archiveSha256'],flush=True)
subprocess.run(['cmake','-S',str(source),'-B',str(build),'-G','Ninja','-DCMAKE_BUILD_TYPE=Release','-DCMAKE_PREFIX_PATH=/opt/docview-qt/6.11.2/gcc_64;/opt/docview-deps'],env=env,check=True)
subprocess.run(['cmake','--build',str(build),'--parallel','4'],env=env,check=True)