Repository navigation
fix: make runtime boot animation archives deterministic - #111
Merged
Merged
Conversation
|
Important
This repository does not receive automatic reviews because it has fewer than 10 stars. ⚙️ Run configurationConfiguration used: Organization UI Review profile: ASSERTIVE Plan: Advanced Run ID: Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Failure found by finished-OTA verification
The force-publish after PR #110 successfully:
/media/bootanimation.zipand/media/bootanimation-dark.zip;product.img;Publication was correctly blocked only because the finished-OTA verifier rebuilt the expected runtime ZIP later and got different bytes.
The reason is Python
ZipFile.writestr(filename, ...): when passed only a filename, it stamps the new ZIP entry with the current time. The adapter therefore claimed to produce a deterministic runtime archive but did not.Fix
Canonicalize every runtime ZIP entry with:
1980-01-01 00:00:00;ZIP_STORED;This makes the runtime animation byte-for-byte reproducible regardless of source ZIP timestamps or the time the build/verifier runs.
Regression coverage
Two source animations with identical contents but different entry timestamps must now produce identical runtime ZIP bytes. Tests also require the canonical timestamp and stored compression.
The selection contract is bumped to
product-image-root-theme-context-deterministic-stored-v7so previous artifacts cannot satisfy existing-build preflight.