Conversation
MSYS2 has deprecated MINGW64. Upstream no longer accepts new packages targeting that environment and is winding down updates for the ones we already ship, so anything we do not migrate is going to rot in place. UCRT64 is the supported successor for the x86_64 target, and Git for Windows therefore has to follow. Rather than spin up a separate `git-sdk-ucrt-64` repository just for the new environment, we want to keep everything in this repo and make the cutover happen on a `ucrt64` branch that eventually becomes `main`. To produce the converted tree without running `pacman` manually, many times, and committing the resulting churn, this commit adds a one-shot workflow that performs exactly that work inside the PR opened from the `ucrt64` branch: it installs the UCRT64 counterpart of every currently-installed MINGW64 package, then uninstalls every MINGW64 package, then uninstalls every MINGW32 package. Each phase becomes one giant commit like the ones produced by the `sync` workflow. This approach was brain-stormed and documented in git-for-windows/git#6018 (reply in thread). Assisted-by: Opus 4.7 Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
added 3 commits
June 6, 2026 20:45
Installed UCRT64 packages:
mingw-w64-ucrt-x86_64-7zip
mingw-w64-ucrt-x86_64-antiword
mingw-w64-ucrt-x86_64-asciidoctor
mingw-w64-ucrt-x86_64-binutils
mingw-w64-ucrt-x86_64-brotli
mingw-w64-ucrt-x86_64-bzip2
mingw-w64-ucrt-x86_64-c-ares
mingw-w64-ucrt-x86_64-ca-certificates
mingw-w64-ucrt-x86_64-connect
mingw-w64-ucrt-x86_64-crt
mingw-w64-ucrt-x86_64-curl-winssl
mingw-w64-ucrt-x86_64-expat
mingw-w64-ucrt-x86_64-gcc
mingw-w64-ucrt-x86_64-gcc-libs
mingw-w64-ucrt-x86_64-gdb
mingw-w64-ucrt-x86_64-gdbm
mingw-w64-ucrt-x86_64-gettext-libtextstyle
mingw-w64-ucrt-x86_64-gettext-runtime
mingw-w64-ucrt-x86_64-gettext-tools
mingw-w64-ucrt-x86_64-git
mingw-w64-ucrt-x86_64-git-credential-wincred
mingw-w64-ucrt-x86_64-git-doc-html
mingw-w64-ucrt-x86_64-git-for-windows-addons
mingw-w64-ucrt-x86_64-git-gui
mingw-w64-ucrt-x86_64-git-lfs
mingw-w64-ucrt-x86_64-git-perl
mingw-w64-ucrt-x86_64-git-send-email
mingw-w64-ucrt-x86_64-git-subtree
mingw-w64-ucrt-x86_64-git-svn
mingw-w64-ucrt-x86_64-gitk
mingw-w64-ucrt-x86_64-gmp
mingw-w64-ucrt-x86_64-gnutls
mingw-w64-ucrt-x86_64-headers
mingw-w64-ucrt-x86_64-isl
mingw-w64-ucrt-x86_64-libb2
mingw-w64-ucrt-x86_64-libffi
mingw-w64-ucrt-x86_64-libiconv
mingw-w64-ucrt-x86_64-libidn2
mingw-w64-ucrt-x86_64-libmangle
mingw-w64-ucrt-x86_64-libpsl
mingw-w64-ucrt-x86_64-libssh2-wincng
mingw-w64-ucrt-x86_64-libsystre
mingw-w64-ucrt-x86_64-libtasn1
mingw-w64-ucrt-x86_64-libtre
mingw-w64-ucrt-x86_64-libunistring
mingw-w64-ucrt-x86_64-libwinpthread
mingw-w64-ucrt-x86_64-libyaml
mingw-w64-ucrt-x86_64-libzip
mingw-w64-ucrt-x86_64-mpc
mingw-w64-ucrt-x86_64-mpdecimal
mingw-w64-ucrt-x86_64-mpfr
mingw-w64-ucrt-x86_64-ncurses
mingw-w64-ucrt-x86_64-nettle
mingw-w64-ucrt-x86_64-nghttp2
mingw-w64-ucrt-x86_64-odt2txt
mingw-w64-ucrt-x86_64-openssl
mingw-w64-ucrt-x86_64-osslsigncode
mingw-w64-ucrt-x86_64-p11-kit
mingw-w64-ucrt-x86_64-pcre
mingw-w64-ucrt-x86_64-pcre2
mingw-w64-ucrt-x86_64-pkgconf
mingw-w64-ucrt-x86_64-python
mingw-w64-ucrt-x86_64-readline
mingw-w64-ucrt-x86_64-ruby
mingw-w64-ucrt-x86_64-sqlite3
mingw-w64-ucrt-x86_64-tcl
mingw-w64-ucrt-x86_64-termcap
mingw-w64-ucrt-x86_64-tk
mingw-w64-ucrt-x86_64-tools
mingw-w64-ucrt-x86_64-tzdata
mingw-w64-ucrt-x86_64-windows-default-manifest
mingw-w64-ucrt-x86_64-wineditline
mingw-w64-ucrt-x86_64-winpthreads
mingw-w64-ucrt-x86_64-xxhash
mingw-w64-ucrt-x86_64-xz
mingw-w64-ucrt-x86_64-zlib
mingw-w64-ucrt-x86_64-zstd
No UCRT64 counterpart in the configured Pacman repositories (skipped):
mingw-w64-x86_64-busybox
mingw-w64-x86_64-curl-openssl-alternate
mingw-w64-x86_64-cv2pdb
mingw-w64-x86_64-git-credential-manager
mingw-w64-x86_64-git-extra
mingw-w64-x86_64-wintoast
mingw-w64-x86_64-xpdf-tools
Signed-off-by: Git for Windows Build Agent <ci@git-for-windows.build>
Removed MINGW64 packages:
mingw-w64-x86_64-7zip
mingw-w64-x86_64-antiword
mingw-w64-x86_64-asciidoctor
mingw-w64-x86_64-binutils
mingw-w64-x86_64-brotli
mingw-w64-x86_64-busybox
mingw-w64-x86_64-bzip2
mingw-w64-x86_64-c-ares
mingw-w64-x86_64-ca-certificates
mingw-w64-x86_64-connect
mingw-w64-x86_64-crt
mingw-w64-x86_64-curl-openssl-alternate
mingw-w64-x86_64-curl-winssl
mingw-w64-x86_64-cv2pdb
mingw-w64-x86_64-expat
mingw-w64-x86_64-gcc
mingw-w64-x86_64-gcc-libs
mingw-w64-x86_64-gdb
mingw-w64-x86_64-gdbm
mingw-w64-x86_64-gettext-libtextstyle
mingw-w64-x86_64-gettext-runtime
mingw-w64-x86_64-gettext-tools
mingw-w64-x86_64-git
mingw-w64-x86_64-git-credential-manager
mingw-w64-x86_64-git-credential-wincred
mingw-w64-x86_64-git-doc-html
mingw-w64-x86_64-git-extra
mingw-w64-x86_64-git-gui
mingw-w64-x86_64-git-lfs
mingw-w64-x86_64-git-perl
mingw-w64-x86_64-git-send-email
mingw-w64-x86_64-git-subtree
mingw-w64-x86_64-git-svn
mingw-w64-x86_64-gitk
mingw-w64-x86_64-gmp
mingw-w64-x86_64-gnutls
mingw-w64-x86_64-headers
mingw-w64-x86_64-isl
mingw-w64-x86_64-libb2
mingw-w64-x86_64-libffi
mingw-w64-x86_64-libiconv
mingw-w64-x86_64-libidn2
mingw-w64-x86_64-libmangle
mingw-w64-x86_64-libpsl
mingw-w64-x86_64-libssh2-wincng
mingw-w64-x86_64-libsystre
mingw-w64-x86_64-libtasn1
mingw-w64-x86_64-libtre
mingw-w64-x86_64-libunistring
mingw-w64-x86_64-libwinpthread
mingw-w64-x86_64-libyaml
mingw-w64-x86_64-libzip
mingw-w64-x86_64-mpc
mingw-w64-x86_64-mpdecimal
mingw-w64-x86_64-mpfr
mingw-w64-x86_64-ncurses
mingw-w64-x86_64-nettle
mingw-w64-x86_64-nghttp2
mingw-w64-x86_64-odt2txt
mingw-w64-x86_64-openssl
mingw-w64-x86_64-osslsigncode
mingw-w64-x86_64-p11-kit
mingw-w64-x86_64-pcre
mingw-w64-x86_64-pcre2
mingw-w64-x86_64-pkgconf
mingw-w64-x86_64-python
mingw-w64-x86_64-readline
mingw-w64-x86_64-ruby
mingw-w64-x86_64-sqlite3
mingw-w64-x86_64-tcl
mingw-w64-x86_64-termcap
mingw-w64-x86_64-tk
mingw-w64-x86_64-tools
mingw-w64-x86_64-tzdata
mingw-w64-x86_64-windows-default-manifest
mingw-w64-x86_64-wineditline
mingw-w64-x86_64-winpthreads
mingw-w64-x86_64-wintoast
mingw-w64-x86_64-xpdf-tools
mingw-w64-x86_64-xxhash
mingw-w64-x86_64-xz
mingw-w64-x86_64-zlib
mingw-w64-x86_64-zstd
Signed-off-by: Git for Windows Build Agent <ci@git-for-windows.build>
Removed MINGW32 packages:
mingw-w64-i686-asciidoctor
mingw-w64-i686-binutils
mingw-w64-i686-brotli
mingw-w64-i686-bzip2
mingw-w64-i686-c-ares
mingw-w64-i686-ca-certificates
mingw-w64-i686-crt
mingw-w64-i686-curl-openssl-alternate
mingw-w64-i686-curl-winssl
mingw-w64-i686-cv2pdb
mingw-w64-i686-expat
mingw-w64-i686-gcc
mingw-w64-i686-gcc-libs
mingw-w64-i686-gdb
mingw-w64-i686-gdbm
mingw-w64-i686-gettext-libtextstyle
mingw-w64-i686-gettext-runtime
mingw-w64-i686-gettext-tools
mingw-w64-i686-gmp
mingw-w64-i686-headers
mingw-w64-i686-isl
mingw-w64-i686-libb2
mingw-w64-i686-libffi
mingw-w64-i686-libiconv
mingw-w64-i686-libidn2
mingw-w64-i686-libmangle
mingw-w64-i686-libpsl
mingw-w64-i686-libssh2-wincng
mingw-w64-i686-libsystre
mingw-w64-i686-libtasn1
mingw-w64-i686-libtre
mingw-w64-i686-libunistring
mingw-w64-i686-libwinpthread
mingw-w64-i686-libyaml
mingw-w64-i686-make
mingw-w64-i686-mpc
mingw-w64-i686-mpdecimal
mingw-w64-i686-mpfr
mingw-w64-i686-ncurses
mingw-w64-i686-nghttp2
mingw-w64-i686-openssl
mingw-w64-i686-p11-kit
mingw-w64-i686-pcre
mingw-w64-i686-pcre2
mingw-w64-i686-pkgconf
mingw-w64-i686-python
mingw-w64-i686-readline
mingw-w64-i686-ruby
mingw-w64-i686-sqlite3
mingw-w64-i686-tcl
mingw-w64-i686-termcap
mingw-w64-i686-tk
mingw-w64-i686-tools
mingw-w64-i686-tzdata
mingw-w64-i686-windows-default-manifest
mingw-w64-i686-wineditline
mingw-w64-i686-winpthreads
mingw-w64-i686-xxhash
mingw-w64-i686-xz
mingw-w64-i686-zlib
mingw-w64-i686-zstd
Signed-off-by: Git for Windows Build Agent <ci@git-for-windows.build>
|
The following MINGW64 packages have no UCRT64 counterpart in the configured Pacman repositories and were skipped: |
Member
Author
|
@rimrul here's something to play with ;-) |
Member
Author
Before we can build those, there are a lot of loose ends to address even with this:
|
Now that the SDK is being converted to UCRT64, the minimal-sdk sparse-checkout definition has to follow: every path that previously lived under `/mingw64/` is now under `/ucrt64/`. The MSYS2 GCC triple (`x86_64-w64-mingw32`) and the subdirectory names below it (`lib/gcc/...`, the toolchain `bin/`/`lib/`/`include/` tree) are unchanged, so a plain `/mingw64/` -> `/ucrt64/` rename is enough here. Assisted-by: Opus 4.7 Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
The bulk of this file is a straight `/mingw64/` -> `/ucrt64/` substitution, just like the minimal-sdk definition that just got adjusted. Two MSYS2 naming differences need separate handling for the asciidoctor/Ruby block, however: the Ruby DLL in the UCRT64 environment is `x64-ucrt-ruby<ver>.dll` rather than the MSVCRT-flavored `x64-msvcrt-ruby<ver>.dll`, and the per-arch subdirectory that Ruby uses for native extensions is `x64-mingw-ucrt/` rather than `x64-mingw32/`. Both of those have to be renamed in tandem with the top-level path, otherwise the sparse checkout would silently skip the Ruby pieces that asciidoctor depends on. `cv2pdb` is still referenced under `/ucrt64/bin/`, even though it currently lacks a UCRT64 counterpart (it's on the skipped-packages list posted by the conversion workflow). That's fine for a sparse-checkout file: it only selects what to materialize once such a package is built and added to the SDK. Assisted-by: Opus 4.7 Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
This file selects exactly the `/mingw32/` paths needed to build the 32-bit `mingw-w64-git` package out of a partial SDK clone. With the move to UCRT64 we also drop the entire MINGW32 (i686) flavor; there is no UCRT64 i686 environment, and the third conversion commit removes every `mingw-w64-i686-*` package outright. The sparse definition can no longer materialize anything useful, so retire it rather than leave a file that points at directories that will never reappear. Assisted-by: Opus 4.7 Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
dscho
added a commit
that referenced
this pull request
Jun 7, 2026
The PR opened from this branch (#117) keeps diverging from `main` (the package-sync commits keep landing there, and the conversion commits keep removing the MINGW64 tree here), so the merge commit GitHub builds for the `pull_request` event is `DIRTY` most of the time. While in that state, GitHub skips the `pull_request` workflow dispatch entirely, which means `ci-artifacts` no longer runs against the PR head and we lose all signal about whether the converted SDK still builds Git. Adding `ucrt64` to the workflow's `push` trigger sidesteps that: pushes to the branch run the workflow directly, without going through a synthetic merge commit, so the build/test matrix stays exercised until the branch is finally merged. Assisted-by: Opus 4.7 Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
dscho
added a commit
that referenced
this pull request
Jun 7, 2026
Same reasoning as the matching change to `ci-artifacts.yml`: while the PR opened from this branch (#117) is in a `DIRTY` merge state, GitHub refuses to dispatch `pull_request` events, so the DLL check no longer runs against the PR head. Listing `ucrt64` under the `push` trigger restores coverage directly from the branch tip. Assisted-by: Opus 4.7 Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
This was referenced Jun 7, 2026
dscho
added a commit
to git-for-windows/setup-git-for-windows-sdk
that referenced
this pull request
Jun 7, 2026
The `test` job of `build-test` is the only PR-time gate that actually runs this Action on a clean Windows runner and pokes at the result; the matrix-based smoke test in `matrix.yml` only fires on manual dispatch. So far that gate has only covered the historical default combination (`flavor: minimal`, `architecture: x86_64`), which means any regression on the new `ucrt64` axis would slip through CI and only surface in a consumer repository. Turn the job into a matrix that adds `architecture: ucrt64` next to the existing `x86_64` row, with `flavor: full` for the UCRT64 entry because that is the only flavor wired up end-to-end at this point (the subset flavors still depend on follow-up work in `build-extra` and on the `ci-artifacts` pipeline of `git-sdk-64`, tracked in git-for-windows/git-sdk-64#117 (comment)). The verification step's previously hard-coded `/mingw64/bin/gcc` becomes `$MINGW_PREFIX/bin/gcc`, with `MINGW_PREFIX` injected from the matrix so it picks up `/mingw64` for the `x86_64` row and `/ucrt64` for the `ucrt64` row. The name follows the MSYS2 ecosystem convention for the per-environment path, which is the same variable the SDK's own shell profile exports. Assisted-by: Opus 4.7 Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
0863902 to
927e526
Compare
dscho
added a commit
to git-for-windows/setup-git-for-windows-sdk
that referenced
this pull request
Jun 8, 2026
Now that the preceding commits have actually taught the Action about the `ucrt64` axis, document it in AGENTS.md so the institutional description there matches the code. Add a row to the architecture table covering repository, MSYSTEM, mingw bin path, and current limitations, plus a follow-up paragraph that points at git-for-windows/git-sdk-64#117 and git-for-windows/git-sdk-64#117 (comment) for the larger migration context. Mention in the relationship section that `git-sdk-64` now carries the extra long-lived `ucrt64` branch and that no UCRT64 asset exists in the `ci-artifacts` release, which is why the fast path is forcibly suppressed for that axis. Assisted-by: Opus 4.7 Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
dscho
added a commit
to git-for-windows/setup-git-for-windows-sdk
that referenced
this pull request
Jun 8, 2026
The manually-triggered `test all artifact flavors` workflow is the closest thing this repository has to an end-to-end smoke test that actually downloads an SDK and runs in-place. Without an entry for the new `ucrt64` axis it would silently keep verifying only the MINGW64 and MINGW32 paths, leaving regressions on the UCRT64 path to surface only in consumer repositories. Add a single `flavor: full, architecture: ucrt64` row via `include`, because that is the only combination wired up end-to-end at this point: the subset flavors still depend on `please.sh create-sdk-artifact` in `build-extra` learning `--architecture=ucrt64` and on a UCRT64 asset appearing in the `ci-artifacts` release of `git-sdk-64`, both tracked in git-for-windows/git-sdk-64#117 (comment). The build-installer step keys off `matrix.flavor == 'build-installers'` and is therefore skipped for the new row, which is exactly what we want. Assisted-by: Opus 4.7 Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
dscho
added a commit
to git-for-windows/setup-git-for-windows-sdk
that referenced
this pull request
Jun 8, 2026
The `test` job of `build-test` is the only PR-time gate that actually runs this Action on a clean Windows runner and pokes at the result; the matrix-based smoke test in `matrix.yml` only fires on manual dispatch. So far that gate has only covered the historical default combination (`flavor: minimal`, `architecture: x86_64`), which means any regression on the new `ucrt64` axis would slip through CI and only surface in a consumer repository. Turn the job into a matrix that adds `architecture: ucrt64` next to the existing `x86_64` row, with `flavor: full` for the UCRT64 entry because that is the only flavor wired up end-to-end at this point (the subset flavors still depend on follow-up work in `build-extra` and on the `ci-artifacts` pipeline of `git-sdk-64`, tracked in git-for-windows/git-sdk-64#117 (comment)). The verification step's previously hard-coded `/mingw64/bin/gcc` becomes `$MINGW_PREFIX/bin/gcc`, with `MINGW_PREFIX` injected from the matrix so it picks up `/mingw64` for the `x86_64` row and `/ucrt64` for the `ucrt64` row. The name follows the MSYS2 ecosystem convention for the per-environment path, which is the same variable the SDK's own shell profile exports. Assisted-by: Opus 4.7 Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
dscho
added a commit
to dscho/build-extra
that referenced
this pull request
Jun 8, 2026
This script translates a caller-supplied ARCH into both a directory prefix (MSYSTEM_LOWER) and a Pacman architecture-segment used to filter package names. The existing cases map x86_64 -> mingw64 / x86_64, i.e. they assume the only x86_64 Git for Windows SDK is the MINGW64 one. git-sdk-64 is moving to UCRT64 (git-for-windows/git-sdk-64#117). The new SDK is still x86_64 but its toolchain lives in /ucrt64/ and its Pacman packages are named mingw-w64-ucrt-x86_64-*. Add a dedicated ucrt64 case so callers that explicitly know which flavor they want can pass ARCH=ucrt64 and get the right prefix and package names, without having to teach this script to auto-detect. Assisted-by: Opus 4.7 Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
dscho
added a commit
to dscho/build-extra
that referenced
this pull request
Jun 8, 2026
create_sdk_artifact's `case "$architecture" in` ladder hard-maps x86_64 to MSYSTEM=MINGW64 / PREFIX=/mingw64, writes that into the artifact's /etc/profile, and calls make-file-list.sh with ARCH=$architecture. Against the new UCRT64 git-sdk-64 (git-for-windows/git-sdk-64#117), the resulting artifact is broken: the profile points at /mingw64/bin which doesn't exist, and the listed packages all carry the wrong Pacman prefix. Add a new ucrt64 architecture value that maps to MSYSTEM=UCRT64 and PREFIX=/ucrt64 while keeping SDK_REPO=git-sdk-64 (the SDK has not been renamed). The caller asks for the new flavor explicitly; the make-file-list.sh side already knows what ARCH=ucrt64 means after the previous commit. Auto-detection is deliberately left alone: a dual-tree SDK (one with both /mingw64 and /ucrt64) is rare enough that guessing the wrong default would be more surprising than requiring the caller to say what they want. Assisted-by: Opus 4.7 Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
dscho
added a commit
to dscho/build-extra
that referenced
this pull request
Jun 8, 2026
This script audits import/export DLL references in an SDK installation. It picks the directory prefix from MSYSTEM (and only falls back to ARCH if MSYSTEM is unset or unknown), then forwards ARCH to make-file-list.sh to learn which Pacman packages to install. On the UCRT64 git-sdk-64 (git-for-windows/git-sdk-64#117) the caller's MSYSTEM is UCRT64; today the script falls through to the *) default and ends up with MINGW_PREFIX=mingw64 and ARCH=x86_64, asking pacman for the long-gone mingw-w64-x86_64-* packages. Add a UCRT64 case alongside MINGW64 and CLANGARM64 that sets MINGW_PREFIX=ucrt64 and overrides ARCH=ucrt64 the same way CLANGARM64 overrides it to aarch64. make-file-list.sh, taught ARCH=ucrt64 in an earlier commit, then resolves the right Pacman package set. Assisted-by: Opus 4.7 Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
dscho
added a commit
to git-for-windows/git-for-windows-automation
that referenced
this pull request
Jun 8, 2026
In git-for-windows/git-sdk-64#117, I am starting the MINGW64 -> UCRT64 migration, and therefore I want to target that branch, too, when uninstalling packages. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
dscho
added a commit
to git-for-windows/git-for-windows-automation
that referenced
this pull request
Jun 8, 2026
In git-for-windows/git-sdk-64#117, I am starting the MINGW64 -> UCRT64 migration, and therefore I want to target that branch, too, when uninstalling packages. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
dscho
added a commit
to git-for-windows/git-for-windows-automation
that referenced
this pull request
Jun 8, 2026
In git-for-windows/git-sdk-64#117, I am starting the MINGW64 -> UCRT64 migration, and therefore I want to target that branch, too, when uninstalling packages. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
The Git for Windows project uses `mingw-w64-7zip` these days, because p7zip is stuck way in the past, see also git-for-windows/git#5395. Here is the output of the command that was run in https://github.com/git-for-windows/git-for-windows-automation/actions/runs/27194161241: + set -x + pacman -Rns --noconfirm p7zip checking dependencies... Packages (1) p7zip-17.06-1 Total Removed Size: 10.82 MiB :: Do you want to remove these packages? [Y/n] :: Processing package changes... removing p7zip... + echo 0
The Git for Windows project never used `unrar`. See git-for-windows/git#5395 for details. Here is the output of the command that was run in https://github.com/git-for-windows/git-for-windows-automation/actions/runs/27203180380: + set -x + pacman -Rns --noconfirm unrar checking dependencies... Packages (1) unrar-7.2.6-1 Total Removed Size: 0.36 MiB :: Do you want to remove these packages? [Y/n] :: Processing package changes... removing unrar... + echo 0
The Git for Windows project uses `mingw-w64-7zip` these days, because p7zip is stuck way in the past, see also git-for-windows/git#5395. Here is the output of the command that was run in https://github.com/git-for-windows/git-for-windows-automation/actions/runs/27194161241: + set -x + pacman -Rns --noconfirm p7zip checking dependencies... Packages (1) p7zip-17.06-1 Total Removed Size: 10.82 MiB :: Do you want to remove these packages? [Y/n] :: Processing package changes... removing p7zip... + echo 0
The Git for Windows project never used `unrar`. See git-for-windows/git#5395 for details. Here is the output of the command that was run in https://github.com/git-for-windows/git-for-windows-automation/actions/runs/27203180380: + set -x + pacman -Rns --noconfirm unrar checking dependencies... Packages (1) unrar-7.2.6-1 Total Removed Size: 0.36 MiB :: Do you want to remove these packages? [Y/n] :: Processing package changes... removing unrar... + echo 0
…ing-sparse" This reverts commit 075a9ad. The build-extra changes that this commit was waiting on (git-for-windows/build-extra#710) have landed on `git-for-windows/build-extra` `main`, so the workflows can go back to cloning the upstream branch. Assisted-by: Opus 4.7 Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
dscho
added a commit
to git-for-windows/git-for-windows-automation
that referenced
this pull request
Jun 11, 2026
Previously, the workflow would only work for packages whose name is
unchanged across Git for Windows SDKs, i.e. MSYS packages. However,
MINGW packages' names start with a prefix that encodes the architecture.
Let's support that via `mingw-w64-<name>`, which is auto-expanded to
`${MINGW_PACKAGE_PREFIX}-<name>`.
While at it, also support UCRT64, which [is currently
developed](git-for-windows/git-sdk-64#117) on
the `ucrt64` branch of git-sdk-64.
dscho
added a commit
to git-for-windows/setup-git-for-windows-sdk
that referenced
this pull request
Jun 12, 2026
MSYS2 deprecated MINGW64 [a while back](https://www.msys2.org/news/#2026-03-15-deprecating-the-mingw64-environment); new packages no longer get accepted there, and updates of the ones we already ship have been winding down. Git for Windows therefore has to move the SDK over to UCRT64, and the kickoff for that move on `git-sdk-64` itself happened in git-for-windows/git-sdk-64#117. Several Git for Windows component repositories (notably https://github.com/git-for-windows/git, https://github.com/git-for-windows/build-extra, and https://github.com/git-for-windows/MINGW-packages) materialise their CI environment by calling into this Action. Once they want to start exercising UCRT64 builds, they have to be able to ask for `architecture: ucrt64` and get a UCRT64 SDK back. That is what this PR sets up. The `ucrt64` axis added here lives on a dedicated long-lived branch of `git-sdk-64`, runs under `MSYSTEM=UCRT64`, and keeps its on-disk output directory and cache key distinct from the existing `x86_64` axis so the two variants can coexist on the same runner without clobbering each other. Only `flavor: full` is wired up end-to-end at this point; the other flavors depend on follow-up work in `build-extra` and on the `ci-artifacts` pipeline of `git-sdk-64`, both of which are explicitly tracked in git-for-windows/git-sdk-64#117 (comment). The long-term plan is to "merge --theirs" `ucrt64` into `main` in the git-sdk-64, therefore the `architecture: ucrt64` setting is intentionally transitional (eventually it will be synonymous to `x86_64`). The branch starts with a fresh `AGENTS.md` written against the pre-UCRT64 state of the repository, and only the later commits extend that document as the actual `ucrt64` support lands. That way each commit reads as an accurate snapshot of the tree at that point, which makes the series easier to review one commit at a time. The final commit is the conventional `npm run build && npm run package` regeneration of `dist/index.js`.
Member
Author
|
In the meantime, I deployed the following |
Member
Author
Add to that: |
A long time ago, we had to transition from our home-grown `asciidoctor-extensions` package, and needed support in this script so that the update would run smoothly via the next `sync` workflow run. This transition has concluded a long time ago, and therefore the support code is no longer necessary. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
This is the `ucrt64` branch of git-sdk-64, destined to become the `main` branch once the migration from MINGW64 to UCRT64 outlined in #117 is complete. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
The migration of Git for Windows' SDK from MINGW64 to UCRT64 is under way, and as part of that, we need to ensure that the Git for Windows-specific addons package is installed in the SDK. Technically, this logic is not _really_ necessary in this branch because the split package is already installed. But hey, the logic is there, and it cannot hurt to have something "self-healing" in place just in case the addons package gets uninstalled at some stage by mistake. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
The script still had one left-over from the MINGW64 flavor of Git for Windows' SDK: the final `pacman` call that ensures that the `git-extra` package is installed (mostly for the benefit of letting its post-install script modify all the things in a regular MSYS2 setup to what Git for Windows needs and which cannot be configured in any other way). With this commit, this script now installs the UCRT64 flavor of that package, and the migration of this script is now complete. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
apr (1.7.6-1 -> 1.7.6-2) bash (5.3.012-1 -> 5.3.015-1) binutils (2.46-2 -> 2.46.1-1) bsdcpio (3.8.7-1 -> 3.8.7-2) bsdtar (3.8.7-1 -> 3.8.7-2) file (5.47-1 -> 5.48-1) gcc (15.2.0-1 -> 15.3.0-1) gcc-libs (15.2.0-1 -> 15.3.0-1) gdb (17.1-2 -> 17.1-3) less (702-1 -> 704-1) libarchive (3.8.7-1 -> 3.8.7-2) libltdl (2.5.4-4 -> 2.5.4-5) libopenssl (3.5.6-1 -> 3.5.7-1) libsqlite (3.53.1-1 -> 3.53.2-1) libtool (2.5.4-4 -> 2.5.4-5) mingw-w64-ucrt-x86_64-binutils (2.46-3 -> 2.46.1-1) mingw-w64-ucrt-x86_64-crt (14.0.0.r59.g93753750c-1 -> 14.0.0.r98.g19f5121a2-1) mingw-w64-ucrt-x86_64-docx2txt-rs (new: 0.2.0-1) mingw-w64-ucrt-x86_64-expat (2.8.1-1 -> 2.8.1-2) mingw-w64-ucrt-x86_64-git-extra (new: 1.1.709.fa78d67ca-1) mingw-w64-ucrt-x86_64-headers (14.0.0.r59.g93753750c-1 -> 14.0.0.r98.g19f5121a2-1) mingw-w64-ucrt-x86_64-libmangle (14.0.0.r59.g93753750c-1 -> 14.0.0.r98.g19f5121a2-1) mingw-w64-ucrt-x86_64-libwinpthread (14.0.0.r59.g93753750c-1 -> 14.0.0.r98.g19f5121a2-1) mingw-w64-ucrt-x86_64-openssl (3.6.2-2 -> 3.6.3-1) mingw-w64-ucrt-x86_64-python (3.14.5-1 -> 3.14.6-1) mingw-w64-ucrt-x86_64-tools (14.0.0.r59.g93753750c-1 -> 14.0.0.r98.g19f5121a2-1) mingw-w64-ucrt-x86_64-winpthreads (14.0.0.r59.g93753750c-1 -> 14.0.0.r98.g19f5121a2-1) mintty (1~3.8.2-1 -> 1~3.8.3-1) msys2-runtime (3.6.9-1 -> 3.6.9-2) msys2-runtime-devel (3.6.9-1 -> 3.6.9-2) openssl (3.5.6-1 -> 3.5.7-1) pacman (6.1.0-24 -> 6.1.0-25) perl-HTTP-Message (7.01-1 -> 7.02-1) rsync (3.4.3-1 -> 3.4.4-1) tig (2.6.0-1 -> 2.6.1-1) vim (9.2.0577-1 -> 9.2.0640-1) Signed-off-by: Git for Windows Build Agent <ci@git-for-windows.build>
…e installed The set of Pacman packages required to build Git for Windows' installer/portable Git/MinGit from scratch need to be installed in the `git-sdk-*` repositories, so that MinGit or other backports are possible without having to rely on external Pacman repositories whose contents might have been culled to make more space. Let's ensure that these packages (which were uninstalled as part of moving from MINGW64 to UCRT64 because their UCRT64 counterparts were not yet available) are installed. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
mingw-w64-ucrt-x86_64-curl-openssl-alternate (new: 8.20.0-1) mingw-w64-ucrt-x86_64-cv2pdb (new: 0.53-1) mingw-w64-ucrt-x86_64-git-credential-manager (new: 2.8.0-1) mingw-w64-ucrt-x86_64-wintoast (new: 1.0.0.275.a44fa02-1) mingw-w64-ucrt-x86_64-xpdf-tools (new: 4.06-1) Signed-off-by: Git for Windows Build Agent <ci@git-for-windows.build>
Member
Author
The PR git-for-windows/build-extra#716 will fix this. |
dscho
added a commit
to git-for-windows/git-for-windows-automation
that referenced
this pull request
Jun 17, 2026
This is part of the overall effort in git-for-windows/git-sdk-64#117, and it was used to deploy the UCRT64 variants of the Git for Windows-only MINGW packages to the Pacman repository.
dscho
added a commit
to git-for-windows/build-extra
that referenced
this pull request
Jun 17, 2026
I noticed over in git-for-windows/git-sdk-64#117 that the `check-for-missing-dlls` job failed. That's because the script needed some adjustment. (The `make-file-list.sh` script, to be precise.)
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.
MSYS2 deprecated MINGW64 a while back; new packages no longer get accepted there, and updates of the ones we already ship have been winding down. The SDK has to move over to UCRT64 before what we ship there starts to bit-rot.
This branch only adds the piece that kicks the move off: a workflow that runs inside this PR, pulls in the UCRT64 equivalent of every MINGW64 package we currently have installed, and then takes the old MINGW64 and MINGW32 packages back out. The PR is a draft so the resulting commits can be looked at before any of it lands on
main.The plan was sketched in git-for-windows/git#6018 (reply in thread).