the-custodian/docs/changes/netkingdom-target-2026-10-17/apps-access-engine-integration-r2/prepare_composite.py

33 lines
1.6 KiB
Python

"""Reconstruct this frozen consumer directly from verified public archives."""
from pathlib import Path
import argparse
import hashlib
import json
import subprocess
import tarfile
HERE = Path(__file__).resolve().parent
parser = argparse.ArgumentParser()
parser.add_argument('--inputs', type=Path, required=True)
parser.add_argument('--workspace', type=Path, required=True)
args = parser.parse_args()
work = args.workspace.resolve()
assert work.is_relative_to('/tmp') and not work.exists()
manifest = json.loads((HERE / 'composed-source-inventory.json').read_text())
patch = (HERE / 'composed-forgejo-source.patch').read_bytes()
assert hashlib.sha256(patch).hexdigest() == manifest['patch_sha256']
archives = [('forgejo-v11.0.3.tar.gz', manifest['archive_sha256']),
('go1.24.3.tar.gz', '3333f6ea53afa971e9078895eaa4ac7204a8c6b5c68c10e6bc9a33e8e391bdd8')]
for name, digest in archives:
assert hashlib.sha256((args.inputs / name).read_bytes()).hexdigest() == digest
work.mkdir()
for name, _ in archives:
with tarfile.open(args.inputs / name) as tar:
tar.extractall(work, filter='data')
(work / 'forgejo').rename(work / 'source')
run = subprocess.run(['patch', '--fuzz=0', '-p1'], input=patch, cwd=work / 'source', capture_output=True)
assert run.returncode == 0, 'Pinned composite patch refused; workspace retained'
for row in manifest['files']:
assert hashlib.sha256((work / 'source' / row['path']).read_bytes()).hexdigest() == row['after_sha256'], row['path']
(work / 'home').mkdir()
print(json.dumps({'status': 'prepared', 'workspace': str(work), 'paths_verified': len(manifest['files']), 'native_changes': False}))