Repository navigation
Publish release media as versioned, checksummed bundles - #4
Merged
Merged
Conversation
RubyOS and RemoteOS-SDL both ship <name>-<version>-<platform>.tar.gz with a .sha256 beside it. PythonOS attached bare pythonos.iso and pythonos-arm64.elf: no version in the filename, nothing to verify a download against, and no README or licence travelling with the image. Wrap each CI image the way scripts/package-release.sh already wraps a local one, and attach the pair plus its checksum. The asset count still differs from the siblings, and should. Their tarballs are host bundles -- a runtime, the display service, and guest images for both architectures -- so they have one per host platform. These are guest media, so the platform field is the guest architecture and there are two. Making the counts match would mean shipping a host Python runtime, which is a different decision from how the files are named. Verified against the images v0.4.3 published: both bundles unpack to byte-identical media and their checksums verify. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
The macOS Intel job failed the desktop smoke with every sampled pixel black and 3072 of 3072 tiles differing -- the screenshot was taken before the desktop had painted, not after it painted something wrong. desktop_smoke_test.py polls for the window's signature pixels against a hardcoded 60 second deadline. Its own comment notes that startup "under TCG takes much longer than under KVM"; on a runner that is both TCG and inside a VM it is marginal, which is why this passed twice before failing here. PYTHONOS_GUI_FRAME_TIMEOUT makes it settable and the macOS entry gets 240, alongside the command budget raised for the same reason. The tolerant environment reader moves to qmp_helper, which every GUI test already imports, and desktop_smoke_test.py's boot timeout now uses it too -- it had the same bare float(os.environ.get(...)) that would raise on the empty string a partially-populated matrix key produces. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
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.
Why
RubyOS and RemoteOS-SDL both publish
<name>-<version>-<platform>.tar.gzwith a.sha256beside it. PythonOS attached barepythonos.isoandpythonos-arm64.elf— no version in the filename, nothing to verify a download against, and no README or licence travelling with the image.pythonos.isopythonos-0.4.3-x86_64.tar.gz.sha256per bundleWhat it does
package_release_imagewraps each CI image the wayscripts/package-release.shalready wraps a local one, and the release attaches each bundle with its checksum.On the asset count
It still differs from the siblings, and it should. Their tarballs are host bundles — a runtime, the display service, and guest images for both architectures — so there is one per host platform (linux-arm64, linux-x86_64, macos-arm64). PythonOS ships guest media, so the platform field is the guest architecture and there are two of them.
Making the counts match would mean PythonOS also shipping a host Python runtime, which is a different decision from how the files are named — and not one this PR takes.
Testing
Exercised the real helper against the images v0.4.3 actually published:
Both bundles unpack to byte-identical media and their checksums verify.
tests/ci_gate_test.pypasses (41 checks) — the previousattaches both imagesassertion is replaced by three that check the packaging contract, the checksum pairing, and the bundled docs.🤖 Generated with Claude Code