Use canonical builder source hash
All checks were successful
build / build (push) Successful in 13s

This commit is contained in:
robert
2026-06-08 09:41:31 -03:00
parent 4d1dcfb2df
commit e511295023
2 changed files with 41 additions and 4 deletions

View File

@@ -1278,7 +1278,22 @@ def _write_builder_state(
def _source_bundle_hash(bundle: bytes) -> str:
return hashlib.sha256(bundle).hexdigest()
digest = hashlib.sha256()
with tarfile.open(fileobj=io.BytesIO(bundle), mode="r:gz") as tf:
members = sorted(
(member for member in tf.getmembers() if member.isfile()),
key=lambda member: member.name,
)
for member in members:
extracted = tf.extractfile(member)
body = extracted.read() if extracted is not None else b""
digest.update(member.name.encode("utf-8"))
digest.update(b"\0")
digest.update(str(len(body)).encode("ascii"))
digest.update(b"\0")
digest.update(body)
digest.update(b"\0")
return digest.hexdigest()
def _record_sandbox_result(