Skip to content

installer: drop 32-bit support - #733

Open
dennisameling wants to merge 1 commit into
mainfrom
installer-drop-32-bit
Open

installer: drop 32-bit support#733
dennisameling wants to merge 1 commit into
mainfrom
installer-drop-32-bit

Conversation

@dennisameling

Copy link
Copy Markdown
Member

Git for Windows v2.48.1 was the last version to ship a 32-bit installer; since then only 32-bit MinGit is built, and that only until April 2029. See https://gitforwindows.org/32-bit.html for the background. The i686 code paths in the installer have been dead weight ever since, and the end-of-support warning shown by the 32-bit installer can never be reached by anything that is still being built.

Remove the MINGW32 arm of the architecture switch in release.sh, replacing it with a die that names the reason, so that anyone who still tries gets an explanation rather than "Unhandled MSYSTEM: MINGW32".

With MINGW32 gone, BITNESS can only ever be 64, so drop the variable altogether rather than keep a switch with a single position. That means OutputBaseFilename spells out -64-bit instead of interpolating it, which produces the exact same name the released asset has always had, as verified by compiling install.iss against a config.iss without INSTALLER_FILENAME_SUFFIX: Git-2.55.0.5-64-bit.exe.

The pack.packsizelimit entry needs to go from both the outer and the inner case in the system config handling: the inner arm continued for anything that was not 32-bit, so leaving the outer pattern in place would have started writing the key into the 64-bit installers' system config for the first time. Generating config.iss before and after this commit confirms the output is unchanged apart from the dropped BITNESS define.

CI built the installer for i686 as part of the sdk-artifacts job, which would now fail on that die, so exclude that combination the same way minimal and makepkg-git already are. The check-for-missing-dlls job keeps building the i686 build-installers SDK artifact, so that coverage is retained. The two invocations of the installer lose /ALLOWINSTALLING32ON64=1, whose only consumer was the removed warning.

Note that make-file-list.sh and mingit/ keep their i686 support, since 32-bit MinGit is still being built.

@dennisameling
dennisameling requested review from dscho and rimrul August 25, 2026 10:00

@rimrul rimrul left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The bitness bullet point turns a little weird, but the restlooks good.

Comment thread installer/HowToRelease.txt Outdated
@dennisameling
dennisameling force-pushed the installer-drop-32-bit branch from 0594bea to 929663a Compare August 25, 2026 11:10
Comment thread installer/HowToRelease.txt Outdated
Git for Windows v2.48.1 was the last version to ship a 32-bit installer;
since then only 32-bit MinGit is built, and that only until April 2029.
See https://gitforwindows.org/32-bit.html for the background. The i686
code paths in the installer have been dead weight ever since, and the
end-of-support warning shown by the 32-bit installer can never be reached
by anything that is still being built.

Remove the MINGW32 arm of the architecture switch in `release.sh`,
replacing it with a `die` that names the reason, so that anyone who still
tries gets an explanation rather than "Unhandled MSYSTEM: MINGW32".

With MINGW32 gone, `BITNESS` can only ever be 64, so drop the variable
altogether rather than keep a switch with a single position. That means
`OutputBaseFilename` spells out `-64-bit` instead of interpolating it,
which produces the exact same name the released asset has always had, as
verified by compiling `install.iss` against a `config.iss` without
`INSTALLER_FILENAME_SUFFIX`: `Git-2.55.0.5-64-bit.exe`.

The `pack.packsizelimit` entry needs to go from both the outer and the
inner `case` in the system config handling: the inner arm `continue`d for
anything that was not 32-bit, so leaving the outer pattern in place would
have started writing the key into the 64-bit installers' system config for
the first time. Generating `config.iss` before and after this commit
confirms the output is unchanged apart from the dropped `BITNESS` define.

CI built the installer for i686 as part of the `sdk-artifacts` job, which
would now fail on that `die`, so exclude that combination the same way
`minimal` and `makepkg-git` already are. The `check-for-missing-dlls` job
keeps building the i686 `build-installers` SDK artifact, so that coverage
is retained. The two invocations of the installer lose
`/ALLOWINSTALLING32ON64=1`, whose only consumer was the removed warning.

Note that `make-file-list.sh` and `mingit/` keep their i686 support, since
32-bit MinGit is still being built.

Signed-off-by: Dennis Ameling <dennis@dennisameling.com>
@dennisameling
dennisameling force-pushed the installer-drop-32-bit branch from 929663a to 5bb2519 Compare August 26, 2026 16:45
@dscho

dscho commented Aug 28, 2026

Copy link
Copy Markdown
Member

Before we merge this PR, we need to adjust this line in git-sdk-32's git-artifacts workflow (it still diligently verifies that we could build installers and Portable Gits if we wanted to).

@dennisameling

Copy link
Copy Markdown
Member Author

Before we merge this PR, we need to adjust this line in git-sdk-32's git-artifacts workflow (it still diligently verifies that we could build installers and Portable Gits if we wanted to).

Great catch, thank you. Here's a PR to do exactly that: git-for-windows/git-sdk-32#64

dscho added a commit to git-for-windows/git-sdk-32 that referenced this pull request Aug 28, 2026
Git for Windows v2.48.1 was the last version to ship a 32-bit installer;
since then only 32-bit MinGit is built, and that only until April 2029.
See https://gitforwindows.org/32-bit.html for the background.

We can therefore remove the installer from the SDK artifacts, so that
the actual installer logic can be cleaned up as well.

Ref: git-for-windows/build-extra#733

@dscho dscho left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This PR conflicts a bit with #732, right? Could we take care of that first, seeing as it caused user-visible bugs (cf. external OpenSSH issue, git-for-windows/git#6374)?

Comment thread .github/workflows/main.yml
Comment thread installer/install.iss
OutputBaseFilename={#APP_NAME+'-'+FILENAME_VERSION+'-'+INSTALLER_FILENAME_SUFFIX}
#else
OutputBaseFilename={#APP_NAME+'-'+FILENAME_VERSION}-{#BITNESS}-bit
OutputBaseFilename={#APP_NAME+'-'+FILENAME_VERSION}-64-bit

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It would be pretty neat if we always defined INSTALLER_FILENAME_SUFFIX, and never hard-coded 64-bit except in one central place?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Agreed, will update!

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

Successfully merging this pull request may close these issues.

4 participants