Message ID | e6d3d280a4f9216aa6e9c3c83a38b0fb8ba3a8a1.1670274213.git.gitgitgadget@gmail.com (mailing list archive) |
---|---|
State | Accepted |
Commit | 2987407f3c7eed909cc57b4d4a93260b0be7e29f |
Headers | show |
Series | Remove MSys Support | expand |
"Harshil-Jani via GitGitGadget" <gitgitgadget@gmail.com> writes: > From: Harshil-Jani <harshiljani2002@gmail.com> > > The msysGit (i.e. Git for Windows 1.x' SDK) is no longer used and the > last known user for MSys1 + MinGW has switched to MSys2. It is curious that we can speak with such a certainty of the lack of users of such a popular project. References? > So there was no > reason to keep the msysGit/MSys1 config section. This Patch intends to > remove the support of both the builds and throw an error on > execution. > > The output of `uname -r` if returns us with '1.' then it relates with MSys1 > build environment and msysGit which we don't want to continue ahead and thus > an error can be expected. The above clearly explains what is written in the patch text, but the proposed log message does not explain what ../THIS_IS_MSYSGIT used to guard and why now we can remove it. > The MSYS2 is currently used into the MinGW so we can get that part > running directly without any conditionals required. > > Signed-off-by: Harshil-Jani <harshiljani2002@gmail.com> > --- > config.mak.uname | 85 ++++++++++++++++++++---------------------------- > 1 file changed, 35 insertions(+), 50 deletions(-) Thanks. It always is good to see more lines go away ;-) but these two patches need to be explained a bit better and supported by folks who have been active on Windows port of the project. > diff --git a/config.mak.uname b/config.mak.uname > index 377667c4bbc..965ec530837 100644 > --- a/config.mak.uname > +++ b/config.mak.uname > @@ -623,6 +623,9 @@ ifeq ($(uname_S),NONSTOP_KERNEL) > SHELL_PATH = /usr/coreutils/bin/bash > endif > ifeq ($(uname_S),MINGW) > + ifeq ($(shell expr "$(uname_R)" : '1\.'),2) > + $(error "Building with MSys is no longer supported") > + endif > pathsep = ; > HAVE_ALLOCA_H = YesPlease > NO_PREAD = YesPlease > @@ -676,61 +679,43 @@ ifeq ($(uname_S),MINGW) > RC = windres -O coff > NATIVE_CRLF = YesPlease > X = .exe > -ifneq (,$(wildcard ../THIS_IS_MSYSGIT)) > - htmldir = doc/git/html/ > - prefix = > + # MSys2 > + prefix = /usr/ > + # Enable DEP > + BASIC_LDFLAGS += -Wl,--nxcompat > + # Enable ASLR (unless debugging) > + ifneq (,$(findstring -O,$(filter-out -O0 -Og,$(CFLAGS)))) > + BASIC_LDFLAGS += -Wl,--dynamicbase > + endif > + ifeq (MINGW32,$(MSYSTEM)) > + prefix = /mingw32 > + HOST_CPU = i686 > + BASIC_LDFLAGS += -Wl,--pic-executable,-e,_mainCRTStartup > + endif > + ifeq (MINGW64,$(MSYSTEM)) > + prefix = /mingw64 > + HOST_CPU = x86_64 > + BASIC_LDFLAGS += -Wl,--pic-executable,-e,mainCRTStartup > + else > + COMPAT_CFLAGS += -D_USE_32BIT_TIME_T > + BASIC_LDFLAGS += -Wl,--large-address-aware > + endif > + CC = gcc > + COMPAT_CFLAGS += -D__USE_MINGW_ANSI_STDIO=0 -DDETECT_MSYS_TTY \ > + -fstack-protector-strong > + EXTLIBS += -lntdll > INSTALL = /bin/install > - EXTLIBS += /mingw/lib/libz.a > INTERNAL_QSORT = YesPlease > HAVE_LIBCHARSET_H = YesPlease > - NO_GETTEXT = YesPlease > - NO_PYTHON = YesPlease > - COMPAT_CFLAGS += -D__USE_MINGW_ACCESS > -else > - ifneq ($(shell expr "$(uname_R)" : '1\.'),2) > - # MSys2 > - prefix = /usr/ > - # Enable DEP > - BASIC_LDFLAGS += -Wl,--nxcompat > - # Enable ASLR (unless debugging) > - ifneq (,$(findstring -O,$(filter-out -O0 -Og,$(CFLAGS)))) > - BASIC_LDFLAGS += -Wl,--dynamicbase > - endif > - ifeq (MINGW32,$(MSYSTEM)) > - prefix = /mingw32 > - HOST_CPU = i686 > - BASIC_LDFLAGS += -Wl,--pic-executable,-e,_mainCRTStartup > - endif > - ifeq (MINGW64,$(MSYSTEM)) > - prefix = /mingw64 > - HOST_CPU = x86_64 > - BASIC_LDFLAGS += -Wl,--pic-executable,-e,mainCRTStartup > - else > - COMPAT_CFLAGS += -D_USE_32BIT_TIME_T > - BASIC_LDFLAGS += -Wl,--large-address-aware > - endif > - CC = gcc > - COMPAT_CFLAGS += -D__USE_MINGW_ANSI_STDIO=0 -DDETECT_MSYS_TTY \ > - -fstack-protector-strong > - EXTLIBS += -lntdll > - INSTALL = /bin/install > - INTERNAL_QSORT = YesPlease > - HAVE_LIBCHARSET_H = YesPlease > - USE_GETTEXT_SCHEME = fallthrough > - USE_LIBPCRE = YesPlease > - USE_NED_ALLOCATOR = YesPlease > - ifeq (/mingw64,$(subst 32,64,$(prefix))) > - # Move system config into top-level /etc/ > - ETC_GITCONFIG = ../etc/gitconfig > - ETC_GITATTRIBUTES = ../etc/gitattributes > - endif > - else > - COMPAT_CFLAGS += -D__USE_MINGW_ANSI_STDIO > - NO_CURL = YesPlease > - NO_PYTHON = YesPlease > + USE_GETTEXT_SCHEME = fallthrough > + USE_LIBPCRE = YesPlease > + USE_NED_ALLOCATOR = YesPlease > + ifeq (/mingw64,$(subst 32,64,$(prefix))) > + # Move system config into top-level /etc/ > + ETC_GITCONFIG = ../etc/gitconfig > + ETC_GITATTRIBUTES = ../etc/gitattributes > endif > endif > -endif > ifeq ($(uname_S),QNX) > COMPAT_CFLAGS += -DSA_RESTART=0 > EXPAT_NEEDS_XMLPARSE_H = YesPlease
Junio C Hamano <gitster@pobox.com> writes: > "Harshil-Jani via GitGitGadget" <gitgitgadget@gmail.com> writes: > >> From: Harshil-Jani <harshiljani2002@gmail.com> >> >> The msysGit (i.e. Git for Windows 1.x' SDK) is no longer used and the >> last known user for MSys1 + MinGW has switched to MSys2. > > It is curious that we can speak with such a certainty of the lack of > users of such a popular project. References? I see J6t mentioning about such a switch, https://lore.kernel.org/git/c9aec5b6-0a78-a580-3658-5189bd2075a6@kdbg.org/ but I do not know if it is sensible to claim that this was the last known user switching away. Perhaps Last time the code around here was modified, which eventually led to 49d279f8 (windows: include the Python bits when building Git for Windows, 2022-07-29), the change was carefully written to keep things unchanged for Msys1, as at least one user (Johannes Sixt) who did crucial work to support Git on Windows and we did not want to break Msys1 (yet). In the discussion J6t confirmed that he no longer is on Msys1 (cf. [*1*]). to replace the paragraph, with this at the end [References] *1* https://lore.kernel.org/git/c9aec5b6-0a78-a580-3658-5189bd2075a6@kdbg.org/) explain the change (be sure to explain ../THIS_IS_MSYSGIT bit, too, not just the $(uname_R) bit), and then throw in something like There may be users other than J6t who needs a working Msys1, but we can revert this patch if it becomes necessary (i.e. when they complain). somewhere? Thanks.
Hi, On Sun, 18 Dec 2022, Junio C Hamano wrote: > Junio C Hamano <gitster@pobox.com> writes: > > > "Harshil-Jani via GitGitGadget" <gitgitgadget@gmail.com> writes: > > > >> From: Harshil-Jani <harshiljani2002@gmail.com> > >> > >> The msysGit (i.e. Git for Windows 1.x' SDK) is no longer used and the > >> last known user for MSys1 + MinGW has switched to MSys2. > > > > It is curious that we can speak with such a certainty of the lack of > > users of such a popular project. References? > > I see J6t mentioning about such a switch, > > https://lore.kernel.org/git/c9aec5b6-0a78-a580-3658-5189bd2075a6@kdbg.org/ > > but I do not know if it is sensible to claim that this was the last > known user switching away. Perhaps > > Last time the code around here was modified, which eventually > led to 49d279f8 (windows: include the Python bits when building > Git for Windows, 2022-07-29), the change was carefully written > to keep things unchanged for Msys1, as at least one user > (Johannes Sixt) who did crucial work to support Git on Windows > and we did not want to break Msys1 (yet). In the discussion J6t > confirmed that he no longer is on Msys1 (cf. [*1*]). It would be good to avoid over-indexing on individual person's preferences. While it seems to be quite common in the Git project, it is obvious how this harms the Git project more than e.g. focusing on users' needs would. A more productive line of thought would therefore be: MSys has long fallen behind MSYS2 in features like Unicode or x86_64 support or even security bug fixes, and is therefore no longer used by anyone in the Git developer community. The Git for Windows project itself started switching from MSys to MSYS2 early in 2015, i.e. about eight years ago. Let's drop supporting MSys as a development platform. Ciao, Johannes > > to replace the paragraph, with this at the end > > [References] > *1* https://lore.kernel.org/git/c9aec5b6-0a78-a580-3658-5189bd2075a6@kdbg.org/) > > explain the change (be sure to explain ../THIS_IS_MSYSGIT bit, too, > not just the $(uname_R) bit), and then throw in something like > > There may be users other than J6t who needs a working Msys1, but > we can revert this patch if it becomes necessary (i.e. when they > complain). > > somewhere? > > Thanks. >
Johannes Schindelin <Johannes.Schindelin@gmx.de> writes: > It would be good to avoid over-indexing on individual person's > preferences. While it seems to be quite common in the Git project, it is > obvious how this harms the Git project more than e.g. focusing on users' > needs would. > > A more productive line of thought would therefore be: > > MSys has long fallen behind MSYS2 in features like Unicode or > x86_64 support or even security bug fixes, and is therefore no > longer used by anyone in the Git developer community. The Git for > Windows project itself started switching from MSys to MSYS2 early > in 2015, i.e. about eight years ago. Let's drop supporting MSys as > a development platform. Nicely written. Will expect a reroll with Acked-by: added with updated description, hopefully by the end of the week when I'll come back online? Thanks.
diff --git a/config.mak.uname b/config.mak.uname index 377667c4bbc..965ec530837 100644 --- a/config.mak.uname +++ b/config.mak.uname @@ -623,6 +623,9 @@ ifeq ($(uname_S),NONSTOP_KERNEL) SHELL_PATH = /usr/coreutils/bin/bash endif ifeq ($(uname_S),MINGW) + ifeq ($(shell expr "$(uname_R)" : '1\.'),2) + $(error "Building with MSys is no longer supported") + endif pathsep = ; HAVE_ALLOCA_H = YesPlease NO_PREAD = YesPlease @@ -676,61 +679,43 @@ ifeq ($(uname_S),MINGW) RC = windres -O coff NATIVE_CRLF = YesPlease X = .exe -ifneq (,$(wildcard ../THIS_IS_MSYSGIT)) - htmldir = doc/git/html/ - prefix = + # MSys2 + prefix = /usr/ + # Enable DEP + BASIC_LDFLAGS += -Wl,--nxcompat + # Enable ASLR (unless debugging) + ifneq (,$(findstring -O,$(filter-out -O0 -Og,$(CFLAGS)))) + BASIC_LDFLAGS += -Wl,--dynamicbase + endif + ifeq (MINGW32,$(MSYSTEM)) + prefix = /mingw32 + HOST_CPU = i686 + BASIC_LDFLAGS += -Wl,--pic-executable,-e,_mainCRTStartup + endif + ifeq (MINGW64,$(MSYSTEM)) + prefix = /mingw64 + HOST_CPU = x86_64 + BASIC_LDFLAGS += -Wl,--pic-executable,-e,mainCRTStartup + else + COMPAT_CFLAGS += -D_USE_32BIT_TIME_T + BASIC_LDFLAGS += -Wl,--large-address-aware + endif + CC = gcc + COMPAT_CFLAGS += -D__USE_MINGW_ANSI_STDIO=0 -DDETECT_MSYS_TTY \ + -fstack-protector-strong + EXTLIBS += -lntdll INSTALL = /bin/install - EXTLIBS += /mingw/lib/libz.a INTERNAL_QSORT = YesPlease HAVE_LIBCHARSET_H = YesPlease - NO_GETTEXT = YesPlease - NO_PYTHON = YesPlease - COMPAT_CFLAGS += -D__USE_MINGW_ACCESS -else - ifneq ($(shell expr "$(uname_R)" : '1\.'),2) - # MSys2 - prefix = /usr/ - # Enable DEP - BASIC_LDFLAGS += -Wl,--nxcompat - # Enable ASLR (unless debugging) - ifneq (,$(findstring -O,$(filter-out -O0 -Og,$(CFLAGS)))) - BASIC_LDFLAGS += -Wl,--dynamicbase - endif - ifeq (MINGW32,$(MSYSTEM)) - prefix = /mingw32 - HOST_CPU = i686 - BASIC_LDFLAGS += -Wl,--pic-executable,-e,_mainCRTStartup - endif - ifeq (MINGW64,$(MSYSTEM)) - prefix = /mingw64 - HOST_CPU = x86_64 - BASIC_LDFLAGS += -Wl,--pic-executable,-e,mainCRTStartup - else - COMPAT_CFLAGS += -D_USE_32BIT_TIME_T - BASIC_LDFLAGS += -Wl,--large-address-aware - endif - CC = gcc - COMPAT_CFLAGS += -D__USE_MINGW_ANSI_STDIO=0 -DDETECT_MSYS_TTY \ - -fstack-protector-strong - EXTLIBS += -lntdll - INSTALL = /bin/install - INTERNAL_QSORT = YesPlease - HAVE_LIBCHARSET_H = YesPlease - USE_GETTEXT_SCHEME = fallthrough - USE_LIBPCRE = YesPlease - USE_NED_ALLOCATOR = YesPlease - ifeq (/mingw64,$(subst 32,64,$(prefix))) - # Move system config into top-level /etc/ - ETC_GITCONFIG = ../etc/gitconfig - ETC_GITATTRIBUTES = ../etc/gitattributes - endif - else - COMPAT_CFLAGS += -D__USE_MINGW_ANSI_STDIO - NO_CURL = YesPlease - NO_PYTHON = YesPlease + USE_GETTEXT_SCHEME = fallthrough + USE_LIBPCRE = YesPlease + USE_NED_ALLOCATOR = YesPlease + ifeq (/mingw64,$(subst 32,64,$(prefix))) + # Move system config into top-level /etc/ + ETC_GITCONFIG = ../etc/gitconfig + ETC_GITATTRIBUTES = ../etc/gitattributes endif endif -endif ifeq ($(uname_S),QNX) COMPAT_CFLAGS += -DSA_RESTART=0 EXPAT_NEEDS_XMLPARSE_H = YesPlease