[migration] Make upstream Skia synchronization portable - #5005
[migration] Make upstream Skia synchronization portable#5005mattleibow wants to merge 2 commits into
Conversation
📦 Try the packages from this PRWarning Do not run these scripts without first reviewing the code in this PR. Step 1 — Download the packages bash / macOS / Linux: curl -fsSL https://raw.githubusercontent.com/mono/SkiaSharp/main/scripts/get-skiasharp-pr.sh | bash -s -- 5005PowerShell / Windows: iex "& { $(irm https://raw.githubusercontent.com/mono/SkiaSharp/main/scripts/get-skiasharp-pr.ps1) } 5005"Step 2 — Add the local NuGet source dotnet nuget add source ~/.skiasharp/hives/pr-5005/packages --name skiasharp-pr-5005More options
Or download manually from Azure Pipelines — look for the Remove the source when you're done: dotnet nuget remove source skiasharp-pr-5005 |
📊 SkiaSharp benchmarks — PR #5005⭐ this PR (full source build) vs 🌙 nightly · Linux · Windows · macOS
Highlights⏱️ Time — 🔴 52 slower · 🟢 36 faster
📦 Allocations — 🔴 1 more alloc · 🟢 0 less alloc
Full per-OS benchmark deltasLinux⏱️ Time (vs 🌙 nightly
📦 Allocations (vs 🌙 nightly
Windows⏱️ Time (vs 🌙 nightly
macOS⏱️ Time (vs 🌙 nightly
|
Resolve the current SkiaSharp repository at runtime and the paired Skia repository from .gitmodules across detection, metadata, delivery, and direct submodule synchronization. Preserve guarded dual-repository delivery while validating mono, dotnet, and release-line behavior. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 8250c1ca-20e4-461e-bad3-9e2864ad57ea
e0f85b3 to
63fa4c7
Compare
Read .gitmodules from the exact parent branch selected for synchronization so supported release lines cannot inherit paired-repository identity from the workflow revision. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 8250c1ca-20e4-461e-bad3-9e2864ad57ea
|
Nightly handoff:
|
|
📖 Documentation Preview The documentation for this PR has been deployed and is available at: 🔗 View Staging Site This preview will be updated automatically when you push new commits to this PR. This comment is automatically updated by the documentation staging workflow. |
Description
Makes the upstream/two-repository Skia synchronization path portable for the planned
monotodotnettransfer. A small sync-local parser requiresGITHUB_REPOSITORYfor the current SkiaSharp repository and derives the paired Skia repository from the exact target branch's.gitmodules, then carries those identities through release-line discovery, ancestry comparison, checkout preparation, manifest reconciliation, guarded pushes, and reciprocal PR creation.The agentic workflow stages the parser immutably before branch switches, exports explicit handoff values, and authorizes the current and destination SkiaSharp/Skia repositories while retaining explicit
google/skia. The generated lock was produced only by strict deterministic compilation. Direct submodule synchronization also stages the parser before checking out a possibly older target branch and validates the matching manifest registration.No live repository URLs,
.gitmodules,cgmanifest.json, gitlinks, native source, publishing, package/site content, Backport, or unrelated agent workflows changed. The transfer cutover remains a coordinated.gitmodulesplus matchingcgmanifest.jsondata change.Related issues
Fixes #4990
Related to #4960
Required skia PR
None.
Areas affected
binding/)externals/skia/src/c,include/c)Changes
None — repository synchronization automation only; no public API or application behavior changes.
Testing
python3 .github/scripts/tests/skia_sync_identity_test.py -vbash .github/scripts/tests/skia-sync-detect.test.sh— equivalentmono/*and simulateddotnet/*matrices covering no-op/work detection, existing sync branches, milestone bumps, release lines whose.gitmodulesdiffers from the workflow checkout, and compare API failures.agents/skills/update-skia/scripts/*_test.pysuites, including destination manifest selection and immutable staged-parser importpython3 -m unittest discover -s .agents/skills/ci-status/scripts/tests -p 'test_*.py' -vpython3 scripts/infra/caching/repo-deps.py validate— 4,854 tracked files, zero uncoveredgh aw compile auto-skia-sync --strict --validate --shellchecktwice with byte-identical lock SHA-2566805073c6ac15486f5cb12f0a99fcf51c67c150478f4b83082b77bb638ae12abgit diff --checkmainconfirms the PR head is zero commits behindNo native, generated binding, rendering, or platform product code changed, so native/product test suites were not applicable.
Checklist
Changesabove lists all public API and behavioral changes (None)