installer: drop 32-bit support - #733
Conversation
rimrul
left a comment
There was a problem hiding this comment.
The bitness bullet point turns a little weird, but the restlooks good.
0594bea to
929663a
Compare
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>
929663a to
5bb2519
Compare
|
Before we merge this PR, we need to adjust this line in |
Great catch, thank you. Here's a PR to do exactly that: git-for-windows/git-sdk-32#64 |
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
left a comment
There was a problem hiding this comment.
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)?
| OutputBaseFilename={#APP_NAME+'-'+FILENAME_VERSION+'-'+INSTALLER_FILENAME_SUFFIX} | ||
| #else | ||
| OutputBaseFilename={#APP_NAME+'-'+FILENAME_VERSION}-{#BITNESS}-bit | ||
| OutputBaseFilename={#APP_NAME+'-'+FILENAME_VERSION}-64-bit |
There was a problem hiding this comment.
It would be pretty neat if we always defined INSTALLER_FILENAME_SUFFIX, and never hard-coded 64-bit except in one central place?
There was a problem hiding this comment.
Agreed, will update!
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 adiethat names the reason, so that anyone who still tries gets an explanation rather than "Unhandled MSYSTEM: MINGW32".With MINGW32 gone,
BITNESScan only ever be 64, so drop the variable altogether rather than keep a switch with a single position. That meansOutputBaseFilenamespells out-64-bitinstead of interpolating it, which produces the exact same name the released asset has always had, as verified by compilinginstall.issagainst aconfig.isswithoutINSTALLER_FILENAME_SUFFIX:Git-2.55.0.5-64-bit.exe.The
pack.packsizelimitentry needs to go from both the outer and the innercasein the system config handling: the inner armcontinued 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. Generatingconfig.issbefore and after this commit confirms the output is unchanged apart from the droppedBITNESSdefine.CI built the installer for i686 as part of the
sdk-artifactsjob, which would now fail on thatdie, so exclude that combination the same wayminimalandmakepkg-gitalready are. Thecheck-for-missing-dllsjob keeps building the i686build-installersSDK 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.shandmingit/keep their i686 support, since 32-bit MinGit is still being built.