From db09588c79027d228f07333ef447e1e22f63e48d Mon Sep 17 00:00:00 2001 From: Johannes Schindelin Date: Mon, 8 Jun 2026 20:43:59 +0200 Subject: [PATCH 1/5] action.yml: drop the `flavor: full`-only caveat on `ucrt64` When the `ucrt64` axis first landed, only `flavor: full` worked: the subset flavors call out to `please.sh create-sdk-artifact` in `build-extra`, and that script did not understand `--architecture=ucrt64` at the time. That has since been fixed, so all four flavors work for `ucrt64`. Drop the now-stale "only the `full` flavor is supported" sentence from the action description. Assisted-by: Opus 4.7 Signed-off-by: Johannes Schindelin --- action.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/action.yml b/action.yml index 2043f3c8..b7063431 100644 --- a/action.yml +++ b/action.yml @@ -18,7 +18,6 @@ inputs: MINGW64-to-UCRT64 migration is in progress it is cloned from a transitional "ucrt64" branch that will eventually replace "main", at which point "x86_64" itself will materialise a UCRT64 SDK. - Only the "full" flavor is supported on the "ucrt64" axis for now. default: 'x86_64' msys: required: false From 327ff85dec1f617020b693dfe59fce60f599862a Mon Sep 17 00:00:00 2001 From: Johannes Schindelin Date: Mon, 8 Jun 2026 20:51:15 +0200 Subject: [PATCH 2/5] README: drop the `flavor: full`-only caveat on `ucrt64` Match the action.yml change of the previous commit: with `please.sh create-sdk-artifact --architecture=ucrt64` now a working invocation, all four flavors are viable on the `ucrt64` axis. Assisted-by: Opus 4.7 Signed-off-by: Johannes Schindelin --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index d4ab0023..3d318e34 100644 --- a/README.md +++ b/README.md @@ -62,7 +62,7 @@ Git for Windows SDK comes in variants targeting `x86_64` (AKA "64-bit"), `i686` Please note that only the `build-installers` and the `full` flavors are available for `i686`. -In addition, the `ucrt64` value selects the UCRT64 variant of `git-sdk-64`. While the [migration from MINGW64 to UCRT64](https://github.com/git-for-windows/git-sdk-64/pull/117) is in progress, this variant lives on a transitional `ucrt64` branch of `git-sdk-64`; once the migration concludes, that branch will replace `main`, at which point `architecture: x86_64` will itself produce a UCRT64 SDK and `ucrt64` becomes a synonym. Until then, this axis runs under `MSYSTEM=UCRT64` with `/ucrt64/bin` on PATH, uses an output directory and cache key that are distinct from `x86_64` so the two variants do not collide on the same runner, and only supports `flavor: full`. +In addition, the `ucrt64` value selects the UCRT64 variant of `git-sdk-64`. While the [migration from MINGW64 to UCRT64](https://github.com/git-for-windows/git-sdk-64/pull/117) is in progress, this variant lives on a transitional `ucrt64` branch of `git-sdk-64`; once the migration concludes, that branch will replace `main`, at which point `architecture: x86_64` will itself produce a UCRT64 SDK and `ucrt64` becomes a synonym. Until then, this axis runs under `MSYSTEM=UCRT64` with `/ucrt64/bin` on PATH and uses an output directory and cache key that are distinct from `x86_64` so the two variants do not collide on the same runner. ### Verbosity From 3a2084d1a82eb1664b914bf22c7e561ded0d2a28 Mon Sep 17 00:00:00 2001 From: Johannes Schindelin Date: Mon, 8 Jun 2026 20:55:19 +0200 Subject: [PATCH 3/5] AGENTS.md: drop the `flavor: full`-only caveat on `ucrt64` Match the preceding action.yml and README updates. With `please.sh create-sdk-artifact --architecture=ucrt64` now a working invocation, all four flavors take the `getViaGit` path successfully on the `ucrt64` axis, so the table cell and the explanatory paragraph no longer need to single `full` out. The ci-artifacts fast path remains suppressed for `ucrt64` because the `ci-artifacts` release of `git-sdk-64` still carries no UCRT64 asset; reword the paragraph to spell out what that means in practice (every flavor goes through `please.sh`). The table-column realignment is a no-op produced by `npm run format` since the longest cell in the notes column shrank. Assisted-by: Opus 4.7 Signed-off-by: Johannes Schindelin --- AGENTS.md | 31 +++++++++++++++---------------- 1 file changed, 15 insertions(+), 16 deletions(-) diff --git a/AGENTS.md b/AGENTS.md index 06cdeffc..bd4ea3b3 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -112,28 +112,27 @@ The Action supports four flavors of the SDK: The `architecture` input drives both the underlying `git-sdk-*` repo and the `MSYSTEM` / bin-path layout inside the SDK: -| `architecture` | repo | MSYSTEM | mingw bin path | notes | -| -------------- | --------------- | ------------ | ----------------- | -------------------------------------------------------------------------------------- | -| `i686` | `git-sdk-32` | `MINGW32` | `/mingw32/bin` | only `build-installers` and `full` | -| `x86_64` | `git-sdk-64` | `MINGW64` | `/mingw64/bin` | the default; fast path available for `minimal` | -| `aarch64` | `git-sdk-arm64` | `CLANGARM64` | `/clangarm64/bin` | only `full` for now | -| `ucrt64` | `git-sdk-64` | `UCRT64` | `/ucrt64/bin` | UCRT64 migration; cloned from the `ucrt64` branch of `git-sdk-64`; only `full` for now | +| `architecture` | repo | MSYSTEM | mingw bin path | notes | +| -------------- | --------------- | ------------ | ----------------- | ----------------------------------------------------------------- | +| `i686` | `git-sdk-32` | `MINGW32` | `/mingw32/bin` | only `build-installers` and `full` | +| `x86_64` | `git-sdk-64` | `MINGW64` | `/mingw64/bin` | the default; fast path available for `minimal` | +| `aarch64` | `git-sdk-arm64` | `CLANGARM64` | `/clangarm64/bin` | only `full` for now | +| `ucrt64` | `git-sdk-64` | `UCRT64` | `/ucrt64/bin` | UCRT64 migration; cloned from the `ucrt64` branch of `git-sdk-64` | The `ucrt64` axis is part of the larger UCRT64 migration tracked in https://github.com/git-for-windows/git-sdk-64/pull/117 and its follow-up comment https://github.com/git-for-windows/git-sdk-64/pull/117#issuecomment-4642726384. It shares the `git-sdk-64` repository with `x86_64` but is materialised -from a different long-lived branch, so caches and on-disk directories -must stay distinct (the artifact name is `git-sdk-ucrt64-` -rather than `git-sdk-64-`). The `ci-artifacts` release of -`git-sdk-64` contains no UCRT64 asset, so the CI-artifacts fast path -is forcibly skipped for this axis; every flavor takes the -`getViaGit` path. `build-extra`'s `please.sh create-sdk-artifact` does -not yet understand `--architecture=ucrt64` either, so right now only -`flavor: full` (which goes straight through `git worktree add`) -produces a working SDK. The non-`full` flavors will start working once -`build-extra` and the `ci-artifacts` pipeline catch up. +from a separate transitional `ucrt64` branch (which will eventually +replace `main`), so caches and on-disk directories must stay distinct +between the two variants (the artifact name is +`git-sdk-ucrt64-` rather than `git-sdk-64-`). The +`ci-artifacts` release of `git-sdk-64` contains no UCRT64 asset, so +the CI-artifacts fast path is forcibly skipped for this axis; every +flavor takes the `getViaGit` path, with `please.sh create-sdk-artifact +--architecture=ucrt64` carving the subset flavors out of the full SDK +clone exactly as it does for the other architectures. ## Relationship to other Git for Windows repositories From 3cd313485b1f18efd28cf2edbc106d9a72be1752 Mon Sep 17 00:00:00 2001 From: Johannes Schindelin Date: Mon, 8 Jun 2026 20:57:03 +0200 Subject: [PATCH 4/5] test.yml: exercise the `ucrt64` subset flavors on every PR The per-PR `test` matrix already covered `ucrt64` + `full` end-to-end. Now that `please.sh create-sdk-artifact --architecture=ucrt64` works, extend the matrix with the three subset flavors so a regression on the `getViaGit` -> `please.sh` path for `ucrt64` is caught on every PR rather than first surfacing in a consumer repository. `mingw_prefix` stays at `/ucrt64` for all three new rows; the verification step's `$MINGW_PREFIX/bin/gcc` assertion checks the same path on every flavor, since `gcc` is present in `minimal`, `makepkg-git`, `build-installers`, and `full` alike. Also drop the now-stale comment explaining why `ucrt64` only had a `full` row. Assisted-by: Opus 4.7 Signed-off-by: Johannes Schindelin --- .github/workflows/test.yml | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index c3519e74..8de77d70 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -45,11 +45,15 @@ jobs: - architecture: x86_64 flavor: minimal mingw_prefix: /mingw64 - # `ucrt64` is wired up end-to-end only for `flavor: full` at - # this point (the subset flavors depend on follow-up work in - # `build-extra` and the `ci-artifacts` pipeline of - # `git-sdk-64`), so that is the one combination we can - # meaningfully exercise on every PR. + - architecture: ucrt64 + flavor: minimal + mingw_prefix: /ucrt64 + - architecture: ucrt64 + flavor: makepkg-git + mingw_prefix: /ucrt64 + - architecture: ucrt64 + flavor: build-installers + mingw_prefix: /ucrt64 - architecture: ucrt64 flavor: full mingw_prefix: /ucrt64 From 55a803a70bf46ca96b967477c070f569c43ae606 Mon Sep 17 00:00:00 2001 From: Johannes Schindelin Date: Mon, 8 Jun 2026 21:01:10 +0200 Subject: [PATCH 5/5] matrix.yml: add `ucrt64` to the architecture axis The manually-triggered `test all artifact flavors` matrix already covers every flavor on `i686` and `x86_64`. Add `ucrt64` as a third value in the `architecture` array so the same four flavors get spawned against it too, replacing the previous one-row `include` block (which was added when only `flavor: full` worked for `ucrt64`) and dropping the now-stale comment that justified that asymmetry. Assisted-by: Opus 4.7 Signed-off-by: Johannes Schindelin --- .github/workflows/matrix.yml | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/.github/workflows/matrix.yml b/.github/workflows/matrix.yml index c0e3211f..6cec804b 100644 --- a/.github/workflows/matrix.yml +++ b/.github/workflows/matrix.yml @@ -9,19 +9,12 @@ jobs: fail-fast: false matrix: flavor: ['minimal', 'makepkg-git', 'build-installers', 'full'] - architecture: ['i686', 'x86_64'] + architecture: ['i686', 'x86_64', 'ucrt64'] exclude: - flavor: minimal architecture: i686 - flavor: makepkg-git architecture: i686 - # `ucrt64` is wired up end-to-end only for `flavor: full`; the - # subset flavors depend on follow-up work in `build-extra` and - # the `ci-artifacts` pipeline of `git-sdk-64`. Add the one - # combination we can meaningfully exercise. - include: - - flavor: full - architecture: ucrt64 steps: - uses: actions/checkout@v6 - name: run in-place