From: "Johannes Schindelin via GitGitGadget" <gitgitgadget@gmail.com>
To: git@vger.kernel.org
Cc: Patrick Steinhardt <ps@pks.im>,
Johannes Schindelin <johannes.schindelin@gmx.de>
Subject: [PATCH v2 0/3] Hot fixes from Git for Windows v2.49.0-rc0
Date: Thu, 06 Mar 2025 10:26:17 +0000 [thread overview]
Message-ID: <pull.1867.v2.git.1741256780.gitgitgadget@gmail.com> (raw)
In-Reply-To: <pull.1867.git.1740671049.gitgitgadget@gmail.com>
I needed many patches to make Git for Windows v2.49.0-rc0 compile and run
the many, many CI jobs successfully. These here patches even apply to
upstream Git. (Technically, the Meson sorting patch is not required to
compile, but it was the fall-out from many required adjustments to make the
Meson jobs happy.)
Changes since v1:
* I spent two hours investigating under which circumstances the (correct)
compiler error about a non-writable pw_gecos field triggers, and
augmented the commit message accordingly.
* Since -rc1, another breaking change necessitated yet another hot fix,
which I invites to this patch fest (and the patch series hence had to be
rebased to the current tip of Git's main branch).
Johannes Schindelin (3):
ident: stop assuming that `gw_gecos` is writable
meson: fix sorting
cmake: generalize the handling of the `CLAR_TEST_OBJS` list
contrib/buildsystems/CMakeLists.txt | 12 ++++++++----
ident.c | 2 +-
meson.build | 2 +-
3 files changed, 10 insertions(+), 6 deletions(-)
base-commit: e969bc875963a10890d61ba84eab3a460bd9e535
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-1867%2Fdscho%2Fg4w-hot-fixes-v2
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-1867/dscho/g4w-hot-fixes-v2
Pull-Request: https://github.com/gitgitgadget/git/pull/1867
Range-diff vs v1:
1: 045c11dc1d5 ! 1: 3e9ccffc747 ident: stop assuming that `gw_gecos` is writable
@@ Commit message
writable in the first place), so let's switch the loop variable type to
`const char *`.
+ This is not a new problem, but what is new is the Meson build. While it
+ does not trigger in CI builds, imitating the commands of
+ `ci/run-build-and-tests.sh` in a regular Git for Windows SDK (`meson
+ setup build . --fatal-meson-warnings --warnlevel 2 --werror --wrap-mode
+ nofallback -Dfuzzers=true` followed by `meson compile -C build --`
+ results in this beautiful error:
+
+ "cc" [...] -o libgit.a.p/ident.c.obj "-c" ../ident.c
+ ../ident.c: In function 'copy_gecos':
+ ../ident.c:68:18: error: assignment discards 'const' qualifier from pointer target type [-Werror=discarded-qualifiers]
+ 68 | for (src = get_gecos(w); *src && *src != ','; src++) {
+ | ^
+ cc1.exe: all warnings being treated as errors
+
+ Now, why does this not trigger in CI? The answer is as simple as it is
+ puzzling: The `win+Meson` job completely side-steps Git for Windows'
+ development environment, opting instead to use the GCC that is on the
+ `PATH` in GitHub-hosted `windows-latest` runners. That GCC is pinned to
+ v12.2.0 and targets the UCRT (unlikely to change any time soon, see
+ https://github.com/actions/runner-images/blob/win25/20250303.1/images/windows/toolsets/toolset-2022.json#L132-L141).
+ That is in stark contrast to Git for Windows, which uses GCC v14.2.0 and
+ targets MSVCRT. Git for Windows' `Makefile`-based build also obviously
+ uses different compiler flags, otherwise this compile error would have
+ had plenty of opportunity in almost 14 years to surface.
+
+ In other words, contrary to my expectations, the `win+Meson` job is
+ ill-equipped to replace the `win build` job because it exercises a
+ completely different tool version/compiler flags vector than what Git
+ for Windows needs.
+
+ Nevertheless, there is currently this huge push, including breaking
+ changes after -rc1 and all, for switching to Meson. Therefore, we need
+ to make it work, somehow, even in Git for Windows' SDK, hence this
+ patch, at this point in time.
+
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
## ident.c ##
2: 9d1faeae8a4 = 2: 4e9ab3e011f meson: fix sorting
-: ----------- > 3: 59a2e586e1a cmake: generalize the handling of the `CLAR_TEST_OBJS` list
--
gitgitgadget
next prev parent reply other threads:[~2025-03-06 10:26 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-02-27 15:44 [PATCH 0/2] Hot fixes from Git for Windows v2.49.0-rc0 Johannes Schindelin via GitGitGadget
2025-02-27 15:44 ` [PATCH 1/2] ident: stop assuming that `gw_gecos` is writable Johannes Schindelin via GitGitGadget
2025-02-27 21:15 ` Junio C Hamano
2025-02-27 15:44 ` [PATCH 2/2] meson: fix sorting Johannes Schindelin via GitGitGadget
2025-02-28 7:58 ` Patrick Steinhardt
2025-03-06 10:26 ` Johannes Schindelin via GitGitGadget [this message]
2025-03-06 10:26 ` [PATCH v2 1/3] ident: stop assuming that `gw_gecos` is writable Johannes Schindelin via GitGitGadget
2025-03-06 10:50 ` Patrick Steinhardt
2025-03-06 12:26 ` Johannes Schindelin
2025-03-06 16:33 ` Junio C Hamano
2025-03-07 10:02 ` Patrick Steinhardt
2025-03-07 18:20 ` Junio C Hamano
2025-03-06 10:26 ` [PATCH v2 2/3] meson: fix sorting Johannes Schindelin via GitGitGadget
2025-03-06 10:26 ` [PATCH v2 3/3] cmake: generalize the handling of the `CLAR_TEST_OBJS` list Johannes Schindelin via GitGitGadget
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.1867.v2.git.1741256780.gitgitgadget@gmail.com \
--to=gitgitgadget@gmail.com \
--cc=git@vger.kernel.org \
--cc=johannes.schindelin@gmx.de \
--cc=ps@pks.im \
/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;
as well as URLs for NNTP newsgroup(s).