28 lines
1.4 KiB
Python
28 lines
1.4 KiB
Python
#!/usr/bin/env python3
|
|
"""Local archive roundtrip only; no native execution or runtime launch."""
|
|
import importlib.util,json,shutil,tempfile
|
|
from pathlib import Path
|
|
HERE=Path(__file__).resolve().parent
|
|
|
|
def load(name,path):
|
|
s=importlib.util.spec_from_file_location(name,path);m=importlib.util.module_from_spec(s);s.loader.exec_module(m);return m
|
|
|
|
def main():
|
|
builder=load('transfer_builder',HERE/'build-transfer.py')
|
|
verifier=load('remote_install_code_review',HERE/'install-verified.py')
|
|
with tempfile.TemporaryDirectory(prefix='nk-runtime-transfer-check-') as directory:
|
|
p=Path(directory); archive=p/'runtime.tar.gz'
|
|
with archive.open('xb') as target:built=builder.build(target)
|
|
assert built==json.loads((HERE/'transfer-archive.json').read_text())
|
|
archive.chmod(0o600);shutil.copyfile(HERE/'runtime.py',p/'runtime.py');(p/'runtime.py').chmod(0o600)
|
|
verifier.STAGE=p
|
|
extracted=verifier.extract()
|
|
result={'scope':'local temporary archive roundtrip only','archive_sha256':built['sha256'],
|
|
'archive_bytes':built['bytes'],'member_count':built['members'],
|
|
'complete_extracted_digest':verifier.runtime_reader().runtime_digest(extracted),
|
|
'modes_and_internal_symlinks_preserved':True,'native_actions':0,'runtime_launches':0}
|
|
assert not p.exists();result['local_temporary_tree_removed']=True
|
|
(HERE/'local-transfer-verification.json').write_text(json.dumps(result,indent=2)+'\n')
|
|
print(json.dumps(result))
|
|
|
|
if __name__=='__main__':main()
|