Git development
 help / color / mirror / Atom feed
From: "Johannes Schindelin via GitGitGadget" <gitgitgadget@gmail.com>
To: git@vger.kernel.org
Cc: Johannes Sixt <j6t@kdbg.org>,
	Johannes Schindelin <johannes.schindelin@gmx.de>
Subject: [PATCH v3 00/12] Upstream some more Git for Windows' patches
Date: Wed, 09 Sep 2026 19:17:04 +0000	[thread overview]
Message-ID: <pull.2195.v3.git.1788981436.gitgitgadget@gmail.com> (raw)
In-Reply-To: <pull.2195.git.1785939999.gitgitgadget@gmail.com>

When rebasing a Git for Windows commit to enable Rust in Windows CI, I
noticed just how many of the preceding commits touching adjacent code
haven't been upstreamed yet. This patch series rectifies that.

Changes since v2:

 * Moved some hunks that belonged into 12/12 out of 08/12.
 * Dropped a fly-by style cleanup from t0060.

Changes since v1:

 * Fixed the meson-side handling of the MINGW_PREFIX constant (this was not
   noticed in the Git for Windows project because it does not use Meson to
   build the project).

Johannes Schindelin (12):
  mingw: include the Python parts in the build
  mingw: stop hard-coding `CC = gcc`
  mingw: drop the -D_USE_32BIT_TIME_T option
  mingw: only use -Wl,--large-address-aware for 32-bit builds
  mingw: avoid over-specifying `--pic-executable`
  mingw: set the prefix and HOST_CPU as per MSYS2's settings
  mingw: only enable the MSYS2-specific stuff when compiling in MSYS2
  mingw: rely on MSYS2's metadata instead of hard-coding it
  windows: skip linking `git-<command>` for built-ins
  mingw: always define `ETC_*` for MSYS2 environments
  mingw: ensure valid CTYPE
  mingw: allow `git.exe` to be used instead of the "Git wrapper"

 compat/mingw.c                      | 68 +++++++++++++++++++++++++++++
 config.mak.uname                    | 61 ++++++++++++--------------
 contrib/buildsystems/CMakeLists.txt |  9 +++-
 meson.build                         | 15 ++++++-
 meson_options.txt                   |  4 ++
 t/t0060-path-utils.sh               | 30 +++++++++++++
 6 files changed, 151 insertions(+), 36 deletions(-)


base-commit: 5b2471720c93ee30e5764a19f3d3b3ae9ec9712a
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-2195%2Fdscho%2Fupstream-some-more-git-for-windows-patches-v3
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-2195/dscho/upstream-some-more-git-for-windows-patches-v3
Pull-Request: https://github.com/gitgitgadget/git/pull/2195

Range-diff vs v2:

  1:  fd594ffa6c =  1:  fd594ffa6c mingw: include the Python parts in the build
  2:  47fc974582 =  2:  47fc974582 mingw: stop hard-coding `CC = gcc`
  3:  53f1fd5763 =  3:  53f1fd5763 mingw: drop the -D_USE_32BIT_TIME_T option
  4:  ad96aedda6 =  4:  ad96aedda6 mingw: only use -Wl,--large-address-aware for 32-bit builds
  5:  d67201f9b3 =  5:  d67201f9b3 mingw: avoid over-specifying `--pic-executable`
  6:  b49c42c50d =  6:  b49c42c50d mingw: set the prefix and HOST_CPU as per MSYS2's settings
  7:  b00d242621 =  7:  b00d242621 mingw: only enable the MSYS2-specific stuff when compiling in MSYS2
  8:  9de4ea7fc1 !  8:  4cc14553dc mingw: rely on MSYS2's metadata instead of hard-coding it
     @@ config.mak.uname: ifeq ($(uname_S),MINGW)
       		prefix = $(MINGW_PREFIX)
       		HOST_CPU = $(patsubst %-w64-mingw32,%,$(MINGW_CHOST))
       		BASIC_LDFLAGS += -Wl,--pic-executable
     -
     - ## contrib/buildsystems/CMakeLists.txt ##
     -@@ contrib/buildsystems/CMakeLists.txt: if(CMAKE_SYSTEM_NAME STREQUAL "Windows")
     - 				_CONSOLE DETECT_MSYS_TTY STRIP_EXTENSION=".exe"  NO_SYMLINK_HEAD UNRELIABLE_FSTAT
     - 				NOGDI OBJECT_CREATION_MODE=1 __USE_MINGW_ANSI_STDIO=0
     - 				OVERRIDE_STRDUP MMAP_PREVENTS_DELETE USE_WIN32_MMAP
     --				HAVE_WPGMPTR ENSURE_MSYSTEM_IS_SET HAVE_RTLGENRANDOM)
     -+				HAVE_WPGMPTR HAVE_RTLGENRANDOM)
     -+	if(CMAKE_GENERATOR_PLATFORM STREQUAL "x64")
     -+		add_compile_definitions(ENSURE_MSYSTEM_IS_SET="MINGW64" MINGW_PREFIX="mingw64")
     -+	elseif(CMAKE_GENERATOR_PLATFORM STREQUAL "arm64")
     -+		add_compile_definitions(ENSURE_MSYSTEM_IS_SET="CLANGARM64" MINGW_PREFIX="clangarm64")
     -+	elseif(CMAKE_GENERATOR_PLATFORM STREQUAL "x86")
     -+		add_compile_definitions(ENSURE_MSYSTEM_IS_SET="MINGW32" MINGW_PREFIX="mingw32")
     -+	endif()
     - 	list(APPEND compat_SOURCES
     - 		compat/mingw.c
     - 		compat/winansi.c
     -
     - ## meson.build ##
     -@@ meson.build: elif host_machine.system() == 'windows'
     - 
     -   libgit_c_args += [
     -     '-DDETECT_MSYS_TTY',
     --    '-DENSURE_MSYSTEM_IS_SET',
     -     '-DNATIVE_CRLF',
     -     '-DNOGDI',
     -     '-DNO_POSIX_GOODIES',
     -@@ meson.build: elif host_machine.system() == 'windows'
     -     '-D__USE_MINGW_ANSI_STDIO=0',
     -   ]
     - 
     -+  msystem = get_option('msystem')
     -+  if msystem != ''
     -+    mingw_prefix = get_option('mingw_prefix')
     -+    if mingw_prefix == ''
     -+      mingw_prefix = msystem.to_lower()
     -+    elif mingw_prefix.startswith('/')
     -+      mingw_prefix = mingw_prefix.substring(1)
     -+    endif
     -+    libgit_c_args += [
     -+      '-DENSURE_MSYSTEM_IS_SET="' + msystem + '"',
     -+      '-DMINGW_PREFIX="' + mingw_prefix + '"'
     -+    ]
     -+  endif
     -+
     -   libgit_dependencies += compiler.find_library('ntdll')
     -   libgit_include_directories += 'compat/win32'
     -   if compiler.get_id() == 'msvc'
     -
     - ## meson_options.txt ##
     -@@ meson_options.txt: option('runtime_prefix', type: 'boolean', value: false,
     -   description: 'Resolve ancillary tooling and support files relative to the location of the runtime binary instead of hard-coding them into the binary.')
     - option('sane_tool_path', type: 'array', value: [],
     -   description: 'An array of paths to pick up tools from in case the normal tools are broken or lacking.')
     -+option('msystem', type: 'string', value: '',
     -+  description: 'Fall-back on Windows when MSYSTEM is not set.')
     -+option('mingw_prefix', type: 'string', value: '',
     -+  description: 'Fall-back on Windows when MINGW_PREFIX is not set.')
     - 
     - # Build information compiled into Git and other parts like documentation.
     - option('build_date', type: 'string', value: '',
  9:  60a2999b75 =  9:  19c600cbee windows: skip linking `git-<command>` for built-ins
 10:  1dd6ac9295 = 10:  b8cc067e92 mingw: always define `ETC_*` for MSYS2 environments
 11:  d44d05c897 = 11:  09c90015fb mingw: ensure valid CTYPE
 12:  679d1fdd41 ! 12:  4a4f24a1ba mingw: allow `git.exe` to be used instead of the "Git wrapper"
     @@ config.mak.uname: ifeq ($(uname_S),MINGW)
       			BASIC_LDFLAGS += -Wl,--large-address-aware
                       endif
      
     - ## t/t0060-path-utils.sh ##
     -@@ t/t0060-path-utils.sh: test_expect_success !VALGRIND,RUNTIME_PREFIX,CAN_EXEC_IN_PWD 'RUNTIME_PREFIX wor
     - 	echo "echo HERE" | write_script pretend/libexec/git-core/git-here &&
     - 	GIT_EXEC_PATH= ./pretend/bin/git here >actual &&
     - 	echo HERE >expect &&
     --	test_cmp expect actual'
     -+	test_cmp expect actual
     -+'
     + ## contrib/buildsystems/CMakeLists.txt ##
     +@@ contrib/buildsystems/CMakeLists.txt: if(CMAKE_SYSTEM_NAME STREQUAL "Windows")
     + 				_CONSOLE DETECT_MSYS_TTY STRIP_EXTENSION=".exe"  NO_SYMLINK_HEAD UNRELIABLE_FSTAT
     + 				NOGDI OBJECT_CREATION_MODE=1 __USE_MINGW_ANSI_STDIO=0
     + 				OVERRIDE_STRDUP MMAP_PREVENTS_DELETE USE_WIN32_MMAP
     +-				HAVE_WPGMPTR ENSURE_MSYSTEM_IS_SET HAVE_RTLGENRANDOM)
     ++				HAVE_WPGMPTR HAVE_RTLGENRANDOM)
     ++	if(CMAKE_GENERATOR_PLATFORM STREQUAL "x64")
     ++		add_compile_definitions(ENSURE_MSYSTEM_IS_SET="MINGW64" MINGW_PREFIX="mingw64")
     ++	elseif(CMAKE_GENERATOR_PLATFORM STREQUAL "arm64")
     ++		add_compile_definitions(ENSURE_MSYSTEM_IS_SET="CLANGARM64" MINGW_PREFIX="clangarm64")
     ++	elseif(CMAKE_GENERATOR_PLATFORM STREQUAL "x86")
     ++		add_compile_definitions(ENSURE_MSYSTEM_IS_SET="MINGW32" MINGW_PREFIX="mingw32")
     ++	endif()
     + 	list(APPEND compat_SOURCES
     + 		compat/mingw.c
     + 		compat/winansi.c
     +
     + ## meson.build ##
     +@@ meson.build: elif host_machine.system() == 'windows'
     + 
     +   libgit_c_args += [
     +     '-DDETECT_MSYS_TTY',
     +-    '-DENSURE_MSYSTEM_IS_SET',
     +     '-DNATIVE_CRLF',
     +     '-DNOGDI',
     +     '-DNO_POSIX_GOODIES',
     +@@ meson.build: elif host_machine.system() == 'windows'
     +     '-D__USE_MINGW_ANSI_STDIO=0',
     +   ]
       
     - test_expect_success !VALGRIND,RUNTIME_PREFIX,CAN_EXEC_IN_PWD '%(prefix)/ works' '
     - 	git config yes.path "%(prefix)/yes" &&
     ++  msystem = get_option('msystem')
     ++  if msystem != ''
     ++    mingw_prefix = get_option('mingw_prefix')
     ++    if mingw_prefix == ''
     ++      mingw_prefix = msystem.to_lower()
     ++    elif mingw_prefix.startswith('/')
     ++      mingw_prefix = mingw_prefix.substring(1)
     ++    endif
     ++    libgit_c_args += [
     ++      '-DENSURE_MSYSTEM_IS_SET="' + msystem + '"',
     ++      '-DMINGW_PREFIX="' + mingw_prefix + '"'
     ++    ]
     ++  endif
     ++
     +   libgit_dependencies += compiler.find_library('ntdll')
     +   libgit_include_directories += 'compat/win32'
     +   if compiler.get_id() == 'msvc'
     +
     + ## meson_options.txt ##
     +@@ meson_options.txt: option('runtime_prefix', type: 'boolean', value: false,
     +   description: 'Resolve ancillary tooling and support files relative to the location of the runtime binary instead of hard-coding them into the binary.')
     + option('sane_tool_path', type: 'array', value: [],
     +   description: 'An array of paths to pick up tools from in case the normal tools are broken or lacking.')
     ++option('msystem', type: 'string', value: '',
     ++  description: 'Fall-back on Windows when MSYSTEM is not set.')
     ++option('mingw_prefix', type: 'string', value: '',
     ++  description: 'Fall-back on Windows when MINGW_PREFIX is not set.')
     + 
     + # Build information compiled into Git and other parts like documentation.
     + option('build_date', type: 'string', value: '',
     +
     + ## t/t0060-path-utils.sh ##
      @@ t/t0060-path-utils.sh: test_expect_success !VALGRIND,RUNTIME_PREFIX,CAN_EXEC_IN_PWD '%(prefix)/ works'
       	test_cmp expect actual
       '

-- 
gitgitgadget

  parent reply	other threads:[~2026-09-09 19:17 UTC|newest]

Thread overview: 71+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-08-05 14:26 [PATCH 00/12] Upstream some more Git for Windows' patches Johannes Schindelin via GitGitGadget
2026-08-05 14:26 ` [PATCH 01/12] mingw: include the Python parts in the build Johannes Schindelin via GitGitGadget
2026-08-05 14:26 ` [PATCH 02/12] mingw: stop hard-coding `CC = gcc` Johannes Schindelin via GitGitGadget
2026-08-05 14:26 ` [PATCH 03/12] mingw: drop the -D_USE_32BIT_TIME_T option Johannes Schindelin via GitGitGadget
2026-08-05 14:26 ` [PATCH 04/12] mingw: only use -Wl,--large-address-aware for 32-bit builds Johannes Schindelin via GitGitGadget
2026-08-05 14:26 ` [PATCH 05/12] mingw: avoid over-specifying `--pic-executable` Johannes Schindelin via GitGitGadget
2026-08-05 14:26 ` [PATCH 06/12] mingw: set the prefix and HOST_CPU as per MSYS2's settings Johannes Schindelin via GitGitGadget
2026-08-05 14:26 ` [PATCH 07/12] mingw: only enable the MSYS2-specific stuff when compiling in MSYS2 Johannes Schindelin via GitGitGadget
2026-08-05 14:26 ` [PATCH 08/12] mingw: rely on MSYS2's metadata instead of hard-coding it Johannes Schindelin via GitGitGadget
2026-08-05 17:29   ` Junio C Hamano
2026-08-06 12:50     ` Johannes Schindelin
2026-08-05 14:26 ` [PATCH 09/12] windows: skip linking `git-<command>` for built-ins Johannes Schindelin via GitGitGadget
2026-08-05 17:12   ` Junio C Hamano
2026-08-05 14:26 ` [PATCH 10/12] mingw: always define `ETC_*` for MSYS2 environments Johannes Schindelin via GitGitGadget
2026-08-05 14:26 ` [PATCH 11/12] mingw: ensure valid CTYPE Johannes Schindelin via GitGitGadget
2026-08-05 14:26 ` [PATCH 12/12] mingw: allow `git.exe` to be used instead of the "Git wrapper" Johannes Schindelin via GitGitGadget
2026-08-06 17:26   ` Junio C Hamano
2026-08-12  7:51     ` Johannes Schindelin
2026-08-12 14:27       ` Junio C Hamano
2026-08-12  7:52 ` [PATCH v2 00/12] Upstream some more Git for Windows' patches Johannes Schindelin via GitGitGadget
2026-08-12  7:52   ` [PATCH v2 01/12] mingw: include the Python parts in the build Johannes Schindelin via GitGitGadget
2026-08-12  7:52   ` [PATCH v2 02/12] mingw: stop hard-coding `CC = gcc` Johannes Schindelin via GitGitGadget
2026-08-12  7:52   ` [PATCH v2 03/12] mingw: drop the -D_USE_32BIT_TIME_T option Johannes Schindelin via GitGitGadget
2026-08-12  7:52   ` [PATCH v2 04/12] mingw: only use -Wl,--large-address-aware for 32-bit builds Johannes Schindelin via GitGitGadget
2026-08-12  7:52   ` [PATCH v2 05/12] mingw: avoid over-specifying `--pic-executable` Johannes Schindelin via GitGitGadget
2026-08-12  7:52   ` [PATCH v2 06/12] mingw: set the prefix and HOST_CPU as per MSYS2's settings Johannes Schindelin via GitGitGadget
2026-08-12  7:52   ` [PATCH v2 07/12] mingw: only enable the MSYS2-specific stuff when compiling in MSYS2 Johannes Schindelin via GitGitGadget
2026-08-12  7:52   ` [PATCH v2 08/12] mingw: rely on MSYS2's metadata instead of hard-coding it Johannes Schindelin via GitGitGadget
2026-08-15 13:44     ` Johannes Sixt
2026-08-31 18:59       ` Junio C Hamano
2026-09-09 18:56       ` Johannes Schindelin
2026-09-09 19:09         ` Johannes Schindelin
2026-08-12  7:52   ` [PATCH v2 09/12] windows: skip linking `git-<command>` for built-ins Johannes Schindelin via GitGitGadget
2026-08-12  7:52   ` [PATCH v2 10/12] mingw: always define `ETC_*` for MSYS2 environments Johannes Schindelin via GitGitGadget
2026-08-12  7:52   ` [PATCH v2 11/12] mingw: ensure valid CTYPE Johannes Schindelin via GitGitGadget
2026-08-12  7:52   ` [PATCH v2 12/12] mingw: allow `git.exe` to be used instead of the "Git wrapper" Johannes Schindelin via GitGitGadget
2026-08-15 14:10   ` [PATCH v2 00/12] Upstream some more Git for Windows' patches Johannes Sixt
2026-09-09 19:17 ` Johannes Schindelin via GitGitGadget [this message]
2026-09-09 19:17   ` [PATCH v3 01/12] mingw: include the Python parts in the build Johannes Schindelin via GitGitGadget
2026-09-09 19:17   ` [PATCH v3 02/12] mingw: stop hard-coding `CC = gcc` Johannes Schindelin via GitGitGadget
2026-09-09 19:17   ` [PATCH v3 03/12] mingw: drop the -D_USE_32BIT_TIME_T option Johannes Schindelin via GitGitGadget
2026-09-09 19:17   ` [PATCH v3 04/12] mingw: only use -Wl,--large-address-aware for 32-bit builds Johannes Schindelin via GitGitGadget
2026-09-09 19:17   ` [PATCH v3 05/12] mingw: avoid over-specifying `--pic-executable` Johannes Schindelin via GitGitGadget
2026-09-09 19:17   ` [PATCH v3 06/12] mingw: set the prefix and HOST_CPU as per MSYS2's settings Johannes Schindelin via GitGitGadget
2026-09-09 19:17   ` [PATCH v3 07/12] mingw: only enable the MSYS2-specific stuff when compiling in MSYS2 Johannes Schindelin via GitGitGadget
2026-09-09 19:17   ` [PATCH v3 08/12] mingw: rely on MSYS2's metadata instead of hard-coding it Johannes Schindelin via GitGitGadget
2026-09-09 19:47     ` Johannes Sixt
2026-09-09 20:13       ` Johannes Schindelin
2026-09-09 21:17         ` Junio C Hamano
2026-09-09 19:17   ` [PATCH v3 09/12] windows: skip linking `git-<command>` for built-ins Johannes Schindelin via GitGitGadget
2026-09-09 19:17   ` [PATCH v3 10/12] mingw: always define `ETC_*` for MSYS2 environments Johannes Schindelin via GitGitGadget
2026-09-09 19:17   ` [PATCH v3 11/12] mingw: ensure valid CTYPE Johannes Schindelin via GitGitGadget
2026-09-09 19:17   ` [PATCH v3 12/12] mingw: allow `git.exe` to be used instead of the "Git wrapper" Johannes Schindelin via GitGitGadget
2026-09-09 19:41     ` Junio C Hamano
2026-09-10  6:05 ` [PATCH v4 00/13] Upstream some more Git for Windows' patches Johannes Schindelin via GitGitGadget
2026-09-10  6:05   ` [PATCH v4 01/13] mingw: include the Python parts in the build Johannes Schindelin via GitGitGadget
2026-09-10  6:05   ` [PATCH v4 02/13] mingw: stop hard-coding `CC = gcc` Johannes Schindelin via GitGitGadget
2026-09-10  6:05   ` [PATCH v4 03/13] mingw: drop the -D_USE_32BIT_TIME_T option Johannes Schindelin via GitGitGadget
2026-09-10  6:05   ` [PATCH v4 04/13] mingw: only use -Wl,--large-address-aware for 32-bit builds Johannes Schindelin via GitGitGadget
2026-09-11 13:22     ` Oswald Buddenhagen
2026-09-10  6:05   ` [PATCH v4 05/13] mingw: avoid over-specifying `--pic-executable` Johannes Schindelin via GitGitGadget
2026-09-10  6:05   ` [PATCH v4 06/13] mingw: set the prefix and HOST_CPU as per MSYS2's settings Johannes Schindelin via GitGitGadget
2026-09-11 13:26     ` Oswald Buddenhagen
2026-09-10  6:05   ` [PATCH v4 07/13] mingw: only enable the MSYS2-specific stuff when compiling in MSYS2 Johannes Schindelin via GitGitGadget
2026-09-10  6:05   ` [PATCH v4 08/13] mingw: rely on MSYS2's metadata instead of hard-coding it Johannes Schindelin via GitGitGadget
2026-09-10  6:05   ` [PATCH v4 09/13] windows: skip linking `git-<command>` for built-ins Johannes Schindelin via GitGitGadget
2026-09-10  6:05   ` [PATCH v4 10/13] mingw: always define `ETC_*` for MSYS2 environments Johannes Schindelin via GitGitGadget
2026-09-10  6:05   ` [PATCH v4 11/13] mingw: ensure valid CTYPE Johannes Schindelin via GitGitGadget
2026-09-10  6:05   ` [PATCH v4 12/13] mingw: allow `git.exe` to be used instead of the "Git wrapper" Johannes Schindelin via GitGitGadget
2026-09-10  6:05   ` [PATCH v4 13/13] t0060: adjust the code style Johannes Schindelin via GitGitGadget
2026-09-10 12:51   ` [PATCH v4 00/13] Upstream some more Git for Windows' patches Junio C Hamano

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=pull.2195.v3.git.1788981436.gitgitgadget@gmail.com \
    --to=gitgitgadget@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=j6t@kdbg.org \
    --cc=johannes.schindelin@gmx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox