Skip to content

Commit ac48f45

Browse files
authored
Add ucrt64 support for minimal, makepkg-git, and build-installers flavors (#1362)
Follow-up to #1361, which added the `ucrt64` axis but only for `flavor: full`. This PR extends that to the `minimal`, `makepkg-git`, and `build-installers` flavors so the `ucrt64` axis is on equal footing with the others. The Action itself doesn't need new source code for this; it just needed `please.sh create-sdk-artifact --architecture=ucrt64` to be a working invocation, which is what git-for-windows/build-extra#710 adds. So the diff here is documentation hygiene (removing the "only `full` for now" caveats) and matrix extensions (so the new combinations are exercised both on every PR and in the manual all-flavors run). The CI-artifacts fast path stays suppressed for `ucrt64` until upstream grows a UCRT64 asset; that is a separate concern.
2 parents 853682a + 55a803a commit ac48f45

5 files changed

Lines changed: 26 additions & 31 deletions

File tree

.github/workflows/matrix.yml

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,19 +9,12 @@ jobs:
99
fail-fast: false
1010
matrix:
1111
flavor: ['minimal', 'makepkg-git', 'build-installers', 'full']
12-
architecture: ['i686', 'x86_64']
12+
architecture: ['i686', 'x86_64', 'ucrt64']
1313
exclude:
1414
- flavor: minimal
1515
architecture: i686
1616
- flavor: makepkg-git
1717
architecture: i686
18-
# `ucrt64` is wired up end-to-end only for `flavor: full`; the
19-
# subset flavors depend on follow-up work in `build-extra` and
20-
# the `ci-artifacts` pipeline of `git-sdk-64`. Add the one
21-
# combination we can meaningfully exercise.
22-
include:
23-
- flavor: full
24-
architecture: ucrt64
2518
steps:
2619
- uses: actions/checkout@v6
2720
- name: run in-place

.github/workflows/test.yml

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -45,11 +45,15 @@ jobs:
4545
- architecture: x86_64
4646
flavor: minimal
4747
mingw_prefix: /mingw64
48-
# `ucrt64` is wired up end-to-end only for `flavor: full` at
49-
# this point (the subset flavors depend on follow-up work in
50-
# `build-extra` and the `ci-artifacts` pipeline of
51-
# `git-sdk-64`), so that is the one combination we can
52-
# meaningfully exercise on every PR.
48+
- architecture: ucrt64
49+
flavor: minimal
50+
mingw_prefix: /ucrt64
51+
- architecture: ucrt64
52+
flavor: makepkg-git
53+
mingw_prefix: /ucrt64
54+
- architecture: ucrt64
55+
flavor: build-installers
56+
mingw_prefix: /ucrt64
5357
- architecture: ucrt64
5458
flavor: full
5559
mingw_prefix: /ucrt64

AGENTS.md

Lines changed: 15 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -112,28 +112,27 @@ The Action supports four flavors of the SDK:
112112
The `architecture` input drives both the underlying `git-sdk-*` repo
113113
and the `MSYSTEM` / bin-path layout inside the SDK:
114114

115-
| `architecture` | repo | MSYSTEM | mingw bin path | notes |
116-
| -------------- | --------------- | ------------ | ----------------- | -------------------------------------------------------------------------------------- |
117-
| `i686` | `git-sdk-32` | `MINGW32` | `/mingw32/bin` | only `build-installers` and `full` |
118-
| `x86_64` | `git-sdk-64` | `MINGW64` | `/mingw64/bin` | the default; fast path available for `minimal` |
119-
| `aarch64` | `git-sdk-arm64` | `CLANGARM64` | `/clangarm64/bin` | only `full` for now |
120-
| `ucrt64` | `git-sdk-64` | `UCRT64` | `/ucrt64/bin` | UCRT64 migration; cloned from the `ucrt64` branch of `git-sdk-64`; only `full` for now |
115+
| `architecture` | repo | MSYSTEM | mingw bin path | notes |
116+
| -------------- | --------------- | ------------ | ----------------- | ----------------------------------------------------------------- |
117+
| `i686` | `git-sdk-32` | `MINGW32` | `/mingw32/bin` | only `build-installers` and `full` |
118+
| `x86_64` | `git-sdk-64` | `MINGW64` | `/mingw64/bin` | the default; fast path available for `minimal` |
119+
| `aarch64` | `git-sdk-arm64` | `CLANGARM64` | `/clangarm64/bin` | only `full` for now |
120+
| `ucrt64` | `git-sdk-64` | `UCRT64` | `/ucrt64/bin` | UCRT64 migration; cloned from the `ucrt64` branch of `git-sdk-64` |
121121

122122
The `ucrt64` axis is part of the larger UCRT64 migration tracked in
123123
https://github.com/git-for-windows/git-sdk-64/pull/117 and its
124124
follow-up comment
125125
https://github.com/git-for-windows/git-sdk-64/pull/117#issuecomment-4642726384.
126126
It shares the `git-sdk-64` repository with `x86_64` but is materialised
127-
from a different long-lived branch, so caches and on-disk directories
128-
must stay distinct (the artifact name is `git-sdk-ucrt64-<flavor>`
129-
rather than `git-sdk-64-<flavor>`). The `ci-artifacts` release of
130-
`git-sdk-64` contains no UCRT64 asset, so the CI-artifacts fast path
131-
is forcibly skipped for this axis; every flavor takes the
132-
`getViaGit` path. `build-extra`'s `please.sh create-sdk-artifact` does
133-
not yet understand `--architecture=ucrt64` either, so right now only
134-
`flavor: full` (which goes straight through `git worktree add`)
135-
produces a working SDK. The non-`full` flavors will start working once
136-
`build-extra` and the `ci-artifacts` pipeline catch up.
127+
from a separate transitional `ucrt64` branch (which will eventually
128+
replace `main`), so caches and on-disk directories must stay distinct
129+
between the two variants (the artifact name is
130+
`git-sdk-ucrt64-<flavor>` rather than `git-sdk-64-<flavor>`). The
131+
`ci-artifacts` release of `git-sdk-64` contains no UCRT64 asset, so
132+
the CI-artifacts fast path is forcibly skipped for this axis; every
133+
flavor takes the `getViaGit` path, with `please.sh create-sdk-artifact
134+
--architecture=ucrt64` carving the subset flavors out of the full SDK
135+
clone exactly as it does for the other architectures.
137136

138137
## Relationship to other Git for Windows repositories
139138

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ Git for Windows SDK comes in variants targeting `x86_64` (AKA "64-bit"), `i686`
6262

6363
Please note that only the `build-installers` and the `full` flavors are available for `i686`.
6464

65-
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`.
65+
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.
6666

6767
### Verbosity
6868

action.yml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ inputs:
1818
MINGW64-to-UCRT64 migration is in progress it is cloned from a
1919
transitional "ucrt64" branch that will eventually replace "main",
2020
at which point "x86_64" itself will materialise a UCRT64 SDK.
21-
Only the "full" flavor is supported on the "ucrt64" axis for now.
2221
default: 'x86_64'
2322
msys:
2423
required: false

0 commit comments

Comments
 (0)