Write down how a patch release is cut - #172
Merged
Merged
Conversation
2026.08.1 was cut by hand, and both times it got stuck it was for the same reason: a release branch is the one tree that does not derive its version, and nothing in the repository had ever been one. Those two are fixed -- a75f246 and 79a9278 -- but the flow that produced them lived nowhere, so the next person cutting one starts where this one started. The rule the whole thing hangs off is that a patch does not move the target runtime: a binary built against 2026.08.0 has to keep meaning the same thing after 2026.08.1. That is why a patch branches from master and rolls the target pins back, rather than branching from the release and forward-porting host fixes. Two corrections while writing it down. The x86_64 macOS toolchain file has not needed osxcross since it was rewritten to drive the system Xcode with -arch x86_64; osxcross is the alternative for a Linux build machine, which its own header says. And the arm64 file's first line says it targets x86_64.
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.
2026.08.1 was cut by hand last night, and both times it got stuck it was for the same reason: a release branch is the one tree that does not derive its version, and nothing in this repository had ever been one. Both are fixed —
a75f24689and79a927840— but the flow that produced them lived nowhere, so the next person cutting a patch starts where this one started.docs/patch-release.mdis that flow, reconstructed from the commits of the release itself. It hangs off the one rule that shapes every step: a patch does not move the target runtime. A binary built against 2026.08.0 has to keep meaning the same thing after 2026.08.1, which is why a patch branches frommasterand rolls the target pins back, rather than branching from the release and forward-porting the host fixes.Seven steps: declare the version, roll newlib/vita-headers/pthread-embedded back to what the series shipped, the fixes, build, catalogue, point the channel, tag. Plus what went wrong the first time, with the commits that closed it.
Two corrections while writing it down:
x86_64-apple-darwin.cmakerequires osxcross. It has not since it was rewritten to drive the system Xcode with-arch x86_64throughscripts/setup-macos-cross.sh; osxcross is the alternative for a Linux build machine, which the file's own header says.cmake/toolchains/aarch64-apple-darwin.cmakeopens by saying it targets x86_64.Step 6 describes the pair check that
vitasdk/autobuilds#37adds — that one first.AI tools were used in preparing this PR (Claude Opus 5, Anthropic).