Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Drop all i686 stuff from git-sdk-64 #5401

Open
4 tasks
dscho opened this issue Feb 5, 2025 · 0 comments
Open
4 tasks

Drop all i686 stuff from git-sdk-64 #5401

dscho opened this issue Feb 5, 2025 · 0 comments

Comments

@dscho
Copy link
Member

dscho commented Feb 5, 2025

Historically, Git for Windows' primary focus was on the 64-bit builds ever since switching to MSYS2 in 2015. Since makepkg-mingw can build both MINGW32 and MINGW64 packages as long as the toolchain and required libraries are present for both, for convenience we did just that.

For MSYS packages, this was never possible, as you can either run with an i686 MSYS2 runtime or with an x86_64 one, and the MSYS toolchain is restricted by the MSYS2 runtime with which it is running. Therefore, i686 MSYS packages always had to be built in git-sdk-32, and x86_64 ones in git-sdk-64.

With the advent of Windows/ARM64, the MINGW strategy was no longer working because it isn't (currently) possible to cross-compile from an x86_64 machine, and besides, MINGWARM64 does not exist (yet). Therefore, we adopted kind of a hybrid approach where the i686 and x86_64 variants of mingw-w64-* packages are built in git-sdk-64 and the aarch64 variants in git-sdk-arm64.

There is an additional exception to that rule that muddies the waters even more: When building the artifacts for a Git for Windows release or snapshot, mingw-w64-i686-git is built using git-sdk-32. (The snapshot builds before git-for-windows/git-for-windows-automation#109 still used git-sdk-64 to build both mingw-w64-i686-git and mingw-w64-x86_64-git, but as of that PR the former uses git-sdk-32.)

It is time to rethink this hybrid, inconsistent strategy. The current state of Git for Windows' support of i686 builds is that as per #5394, we will stop building i686 installers soon, and in four years, we will stop building i686 artifacts altogether. Having to carry around all that i686 stuff is also expensive, as e.g. the clone of git-sdk-64, even the shallow one, that is used to build MSYS packages still checks out ~200MB worth of /mingw32/ files (and needs to transfer the corresponding data from the server).

Also, from a purely aesthetic point of view, it is much more elegant to separate the support per CPU architecture via the git-sdk-* repository boundary.

So let's stop building mingw-w64-i686-* packages in the same job as the mingw-w64-x86_64-* ones (and use git-sdk-32 for the former instead of git-sdk-64).

The tasks needed to bring these changes about are:

I likely forgot tasks, i.e. this list is subject to be amended.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant