diff mbox series

[2/2] mingw: remove msysGit/MSYS1 support

Message ID e6d3d280a4f9216aa6e9c3c83a38b0fb8ba3a8a1.1670274213.git.gitgitgadget@gmail.com (mailing list archive)
State Accepted
Commit 2987407f3c7eed909cc57b4d4a93260b0be7e29f
Headers show
Series Remove MSys Support | expand

Commit Message

Harshil-Jani Dec. 5, 2022, 9:03 p.m. UTC
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. 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 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(-)

Comments

Junio C Hamano Dec. 18, 2022, 2:11 a.m. UTC | #1
"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 Dec. 18, 2022, 3:58 a.m. UTC | #2
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.
Johannes Schindelin Jan. 9, 2023, 7:48 a.m. UTC | #3
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.
>
Junio C Hamano Jan. 9, 2023, 8:52 a.m. UTC | #4
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 mbox series

Patch

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