Resolve referenced sibling pull requests on macOS and Windows - #738
Resolve referenced sibling pull requests on macOS and Windows#738zardus wants to merge 2 commits into
Conversation
The ci job cle inherits from angr/ci-settings resolves a sibling angr/binaries pull request out of the description before it builds, but Test macos-15 and Test windows-2022, which this workflow defines itself, check out binaries master unconditionally. A cle change that needs a new fixture therefore passes every inherited job and fails those two until the fixture lands. Both jobs now read the reference out of the pull request body the way resolve_refs.py does: angr/binaries#<number> or a pull request URL, first one found, and its head only while that pull request is still open. A push, or a body naming no binaries pull request, takes master. The body reaches the step as an environment variable and only the digits extracted from it reach the ref, so nothing in it is interpreted. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|
THIS MESSAGE WAS GENERATED BY AN AUTOMATED PROCESS Validation record for head
Everything on this head is green, 19 checks of 19. Caveats: a description edit does not retrigger CI and a re-run replays the original event payload, so a reference has to be in the description when the run starts. A GitHub API failure while checking that a referenced pull request is open leaves that sibling on master rather than failing the job. Only a |
|
Corpus decompilation diffs can be found at angr/dec-snapshots@master...angr/cle_738 |
cd25d62 to
9ad26c0
Compare
Test macos-15 and Test windows-2022 sync their own environment with uv, and tool.uv.sources pins archinfo and pyvex to the master branch of their repositories, so a cle change that needs a sibling fix is tested against master and fails in those two jobs while every inherited job passes. Every repository named in tool.uv.sources is now resolved out of the body the same way the angr/binaries reference already was, in the two spellings resolve_refs.py accepts, and only while the referenced pull request is open. The first reference to each is written to a uv configuration file in the runner temporary directory as no-sources-package plus upgrade-package, and UV_CONFIG_FILE points the rest of the job at it. uv sync then resolves that package from refs/pull/<number>/head and every other sibling from master, in one lock, so nothing has to be reinstalled over the top and the test run no longer needs --no-sync to keep master from coming back. The configuration lives outside the checkout, so no tracked file changes, and a pull request that names no sibling installs exactly what it installed before. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2b0085b to
b153602
Compare
THIS MESSAGE WAS GENERATED BY AN AUTOMATED PROCESS
The
cijobs cle inherits resolve the sibling pull requests a description names. Test macos-15 and Test windows-2022, which this workflow defines itself, did not: they took binaries from master, and their ownuv synctook archinfo and pyvex from master too, since[tool.uv.sources]pins both there.Both jobs now read every reference out of the body the way
resolve_refs.pydoes and writeno-sources-packageplusupgrade-packageto a uv configuration file under the runner temporary directory, souv syncresolves that package from the pull request head and leaves the checkout untouched. This description names angr/archinfo#367, so the run on it exercises the path. angr/angr#6821 and angr/angr-management#1716 now carry this same mechanism.Validation: #738 (comment).