16 lines
1.3 KiB
Python
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)
|