* [PATCH 0/7] A couple of Meson improvements
@ 2026-09-24 14:09 Patrick Steinhardt
2026-09-24 14:09 ` [PATCH 1/7] meson: avoid recompiling HTTP sources several times Patrick Steinhardt
` (8 more replies)
0 siblings, 9 replies; 20+ messages in thread
From: Patrick Steinhardt @ 2026-09-24 14:09 UTC (permalink / raw)
To: git; +Cc: Johannes Schindelin
Hi,
this patch series contains a couple of improvements for Meson:
- Clean build times are sped up, going from ~6.8 seconds to ~5.0
seconds for a full build.
- A test issue is fixed that causes shell completion tests to fail
because the scripts are not properly updated.
- Our subproject wrappers are updated to current versions.
- A fix for GitLab's msvc-meson jobs that are broken right now due to
a change in our runner images. See [1] for the now-working
msvc-meson jobs. Note though that the MinGW-based jobs are still
broken, but Dscho has been sending fixes for that already.
Thanks!
Patrick
---
Patrick Steinhardt (7):
meson: avoid recompiling HTTP sources several times
meson: don't recompile git-remote-http(1) multiple times for tests
meson: use precompiled headers for our test-helper
meson: use precompiled headers for unit tests
meson: fix outdated completion helpers
meson: update wrappers
gitlab-ci: fix hanging MSVC jobs
ci/install-dependencies.ps1 | 8 ++++++++
contrib/completion/meson.build | 38 +++++++++++++++-----------------------
meson.build | 16 ++++++++++------
subprojects/curl.wrap | 19 ++++++++++---------
subprojects/expat.wrap | 21 +++++++++++----------
subprojects/openssl.wrap | 23 +++++++++++------------
subprojects/pcre2.wrap | 24 +++++++++++-------------
subprojects/zlib.wrap | 21 +++++++++++----------
t/helper/meson.build | 1 +
t/meson.build | 10 ++++++++--
10 files changed, 96 insertions(+), 85 deletions(-)
---
base-commit: 0f8e75abebff0877cae681a3d5ff31ac47f54220
change-id: 20260924-pks-meson-improvements-b7ed9a48ed4e
^ permalink raw reply [flat|nested] 20+ messages in thread
* [PATCH 1/7] meson: avoid recompiling HTTP sources several times
2026-09-24 14:09 [PATCH 0/7] A couple of Meson improvements Patrick Steinhardt
@ 2026-09-24 14:09 ` Patrick Steinhardt
2026-09-30 12:00 ` Karthik Nayak
2026-10-05 8:03 ` Kaartic Sivaraam
2026-09-24 14:09 ` [PATCH 2/7] meson: don't recompile git-remote-http(1) multiple times for tests Patrick Steinhardt
` (7 subsequent siblings)
8 siblings, 2 replies; 20+ messages in thread
From: Patrick Steinhardt @ 2026-09-24 14:09 UTC (permalink / raw)
To: git; +Cc: Johannes Schindelin
We only link curl into a subset of our subcommands. Consequently, as
both "http.c" and "http-walker.c" depend on curl, we don't compile these
into "libgit.a" but instead only link those into the commands that
depend on curl.
In Meson, we wire these dependencies into the target executables by
using the `sources:` keyword. But this has the consequence that we're
recompiling those multiple several times, once for every different
command they are linked into. In fact, each of these sources is compiled
seven times, which of course has an impact on compilation speed.
Fix this issue by instead linking these into a static library so that
they only need to be compiled once. This gives us an almost 10% speedup
in a clean build:
Benchmark 1: meson compile (version = HEAD~)
Time (mean ± σ): 6.781 s ± 0.052 s [User: 100.775 s, System: 22.954 s]
Range (min … max): 6.709 s … 6.867 s 10 runs
Benchmark 2: meson compile (version = HEAD)
Time (mean ± σ): 6.274 s ± 0.021 s [User: 91.882 s, System: 22.092 s]
Range (min … max): 6.242 s … 6.306 s 10 runs
Summary
meson compile (version = HEAD) ran
1.08 ± 0.01 times faster than meson compile (version = HEAD~)
Signed-off-by: Patrick Steinhardt <ps@pks.im>
---
meson.build | 11 +++++++----
1 file changed, 7 insertions(+), 4 deletions(-)
diff --git a/meson.build b/meson.build
index 0a95d90d21..4fdb4c5405 100644
--- a/meson.build
+++ b/meson.build
@@ -1925,10 +1925,13 @@ bin_wrappers += executable('scalar',
if curl.found()
libgit_curl = declare_dependency(
- sources: [
- 'http.c',
- 'http-walker.c',
- ],
+ link_with: static_library('git-curl',
+ sources: [
+ 'http.c',
+ 'http-walker.c',
+ ],
+ dependencies: [libgit_commonmain, curl],
+ ),
dependencies: [libgit_commonmain, curl],
)
--
2.56.0.rc2.329.gd58861e689.dirty
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH 2/7] meson: don't recompile git-remote-http(1) multiple times for tests
2026-09-24 14:09 [PATCH 0/7] A couple of Meson improvements Patrick Steinhardt
2026-09-24 14:09 ` [PATCH 1/7] meson: avoid recompiling HTTP sources several times Patrick Steinhardt
@ 2026-09-24 14:09 ` Patrick Steinhardt
2026-09-24 14:09 ` [PATCH 3/7] meson: use precompiled headers for our test-helper Patrick Steinhardt
` (6 subsequent siblings)
8 siblings, 0 replies; 20+ messages in thread
From: Patrick Steinhardt @ 2026-09-24 14:09 UTC (permalink / raw)
To: git; +Cc: Johannes Schindelin
When running our tests, we expect git-remote-http(1) and a couple of
other binaries to be available to the test suite. In our Makefile, we
achieve this by simply hardlinking the file into place in our source
directory. We cannot easily do that in Meson though because there is no
available command to create such a hardlink.
We could of course create a custom target that uses a script for that,
but that feels quite awkward. Instead, we build the executable several
times, which is of course less efficient. Even worse though, similar as
in the preceding commit, we're building "remote-curl.c" once for each of
these targets, which makes this even more expensive.
Fix this by reusing the already-compiled objects from git-remote-http(1)
so that we only have to perform the linking step several times. This
leads to a mild speedup:
Benchmark 1: meson compile (version = HEAD~)
Time (mean ± σ): 6.250 s ± 0.040 s [User: 90.881 s, System: 21.912 s]
Range (min … max): 6.197 s … 6.344 s 10 runs
Benchmark 2: meson compile (version = HEAD)
Time (mean ± σ): 6.218 s ± 0.029 s [User: 90.633 s, System: 22.022 s]
Range (min … max): 6.166 s … 6.262 s 10 runs
Summary
meson compile (version = HEAD) ran
1.01 ± 0.01 times faster than meson compile (version = HEAD~)
Honestly, a 1% speedup isn't really worth it. But the change makes sense
anyway, as we're doing the same when we build git-receive-pack(1) et al.
So while the speed improvement is negligible, it brings more consistency
into our build instructions.
For the record: I also had a look at using a custom target that
hardlinks the files into place. But the improvement it had on our build
times were not that mindblowing either, saving roundabout ~100ms in wall
time. So sticking with the status quo felt like the better solution as
it is native to Meson.
Signed-off-by: Patrick Steinhardt <ps@pks.im>
---
meson.build | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/meson.build b/meson.build
index 4fdb4c5405..fa104a3efd 100644
--- a/meson.build
+++ b/meson.build
@@ -1935,12 +1935,13 @@ if curl.found()
dependencies: [libgit_commonmain, curl],
)
- test_dependencies += executable('git-remote-http',
+ git_remote_http = executable('git-remote-http',
sources: 'remote-curl.c',
dependencies: [libgit_curl],
install: true,
install_dir: git_exec_path,
)
+ test_dependencies += git_remote_http
test_dependencies += executable('git-http-fetch',
sources: 'http-fetch.c',
@@ -1960,7 +1961,7 @@ if curl.found()
foreach alias : [ 'git-remote-https', 'git-remote-ftp', 'git-remote-ftps' ]
test_dependencies += executable(alias,
- sources: 'remote-curl.c',
+ objects: git_remote_http.extract_all_objects(recursive: false),
dependencies: [libgit_curl],
)
--
2.56.0.rc2.329.gd58861e689.dirty
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH 3/7] meson: use precompiled headers for our test-helper
2026-09-24 14:09 [PATCH 0/7] A couple of Meson improvements Patrick Steinhardt
2026-09-24 14:09 ` [PATCH 1/7] meson: avoid recompiling HTTP sources several times Patrick Steinhardt
2026-09-24 14:09 ` [PATCH 2/7] meson: don't recompile git-remote-http(1) multiple times for tests Patrick Steinhardt
@ 2026-09-24 14:09 ` Patrick Steinhardt
2026-09-30 12:20 ` Karthik Nayak
2026-09-24 14:09 ` [PATCH 4/7] meson: use precompiled headers for unit tests Patrick Steinhardt
` (5 subsequent siblings)
8 siblings, 1 reply; 20+ messages in thread
From: Patrick Steinhardt @ 2026-09-24 14:09 UTC (permalink / raw)
To: git; +Cc: Johannes Schindelin
In 671df48df8 (meson: precompile "git-compat-util.h", 2026-03-19) we
have introduced support for precompiled headers into Meson. At that time
though we only converted "libgit.a" to make use of those.
Nowadays though, our test-helper also consists of a bunch of code files,
and all of these include "git-compat-util.h" via "test-tool.h" as the
first header. So they're a natural target to also use precompiled
headers.
Adapt the test-tool executable to make use of them, which results in a
surprisingly large speedup for clean builds:
Benchmark 1: meson compile (version = HEAD~)
Time (mean ± σ): 6.363 s ± 0.033 s [User: 92.858 s, System: 22.500 s]
Range (min … max): 6.311 s … 6.418 s 10 runs
Benchmark 2: meson compile (version = HEAD)
Time (mean ± σ): 5.327 s ± 0.021 s [User: 75.135 s, System: 20.373 s]
Range (min … max): 5.299 s … 5.362 s 10 runs
Summary
meson compile (version = HEAD) ran
1.19 ± 0.01 times faster than meson compile (version = HEAD~)
Signed-off-by: Patrick Steinhardt <ps@pks.im>
---
t/helper/meson.build | 1 +
1 file changed, 1 insertion(+)
diff --git a/t/helper/meson.build b/t/helper/meson.build
index 3235f10ab8..ae513b4cdc 100644
--- a/t/helper/meson.build
+++ b/t/helper/meson.build
@@ -83,6 +83,7 @@ test_tool_sources = [
test_tool = executable('test-tool',
sources: test_tool_sources,
+ c_pch: '../../tools/precompiled.h',
dependencies: [libgit_commonmain],
)
bin_wrappers += test_tool
--
2.56.0.rc2.329.gd58861e689.dirty
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH 4/7] meson: use precompiled headers for unit tests
2026-09-24 14:09 [PATCH 0/7] A couple of Meson improvements Patrick Steinhardt
` (2 preceding siblings ...)
2026-09-24 14:09 ` [PATCH 3/7] meson: use precompiled headers for our test-helper Patrick Steinhardt
@ 2026-09-24 14:09 ` Patrick Steinhardt
2026-10-05 9:34 ` Kaartic Sivaraam
2026-09-24 14:09 ` [PATCH 5/7] meson: fix outdated completion helpers Patrick Steinhardt
` (4 subsequent siblings)
8 siblings, 1 reply; 20+ messages in thread
From: Patrick Steinhardt @ 2026-09-24 14:09 UTC (permalink / raw)
To: git; +Cc: Johannes Schindelin
Same as in the preceding commit, our unit tests don't use precompiled
headers yet. In this case though it's a tiny bit more complicated to
make use of them, as we do not want to include "git-compat-util.h" for
"clar.c", as that code file is a third-party implementation that is
independent of the Git codebase.
But there's an easy workaround: instead of linking that file into the
executable directly, we can easily adapt it to be built into a static
library first. Like that we can trivially have separate build flags for
that one file.
Do so and adapt the remaining sources to use precompiled headers. This
results in a small but noticeable build speedup:
Benchmark 1: meson compile (version = HEAD~)
Time (mean ± σ): 5.343 s ± 0.019 s [User: 75.478 s, System: 20.382 s]
Range (min … max): 5.308 s … 5.376 s 10 runs
Benchmark 2: meson compile (version = HEAD)
Time (mean ± σ): 5.077 s ± 0.017 s [User: 70.557 s, System: 19.999 s]
Range (min … max): 5.047 s … 5.103 s 10 runs
Summary
meson compile (version = HEAD) ran
1.05 ± 0.01 times faster than meson compile (version = HEAD~)
Signed-off-by: Patrick Steinhardt <ps@pks.im>
---
t/meson.build | 10 ++++++++--
1 file changed, 8 insertions(+), 2 deletions(-)
diff --git a/t/meson.build b/t/meson.build
index 3ca7b27104..9f1ee9ad59 100644
--- a/t/meson.build
+++ b/t/meson.build
@@ -30,7 +30,6 @@ clar_test_suites = [
]
clar_sources = [
- 'unit-tests/clar/clar.c',
'unit-tests/unit-test.c',
'unit-tests/lib-oid.c',
'unit-tests/lib-reftable.c'
@@ -49,7 +48,7 @@ clar_decls_h = custom_target(
)
clar_sources += clar_decls_h
-clar_sources += custom_target(
+clar_suite_h = custom_target(
input: clar_decls_h,
output: 'clar.suite',
command : [
@@ -66,6 +65,13 @@ clar_unit_tests = executable('unit-tests',
c_args: [
'-DGIT_CLAR_DECLS_H="' + clar_decls_h.full_path() + '"',
],
+ c_pch: '../tools/precompiled.h',
+ link_with: static_library('clar',
+ sources: [
+ 'unit-tests/clar/clar.c',
+ clar_suite_h,
+ ],
+ ),
dependencies: [libgit_commonmain],
)
test('unit-tests', clar_unit_tests, kwargs: test_kwargs)
--
2.56.0.rc2.329.gd58861e689.dirty
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH 5/7] meson: fix outdated completion helpers
2026-09-24 14:09 [PATCH 0/7] A couple of Meson improvements Patrick Steinhardt
` (3 preceding siblings ...)
2026-09-24 14:09 ` [PATCH 4/7] meson: use precompiled headers for unit tests Patrick Steinhardt
@ 2026-09-24 14:09 ` Patrick Steinhardt
2026-09-24 14:09 ` [PATCH 6/7] meson: update wrappers Patrick Steinhardt
` (3 subsequent siblings)
8 siblings, 0 replies; 20+ messages in thread
From: Patrick Steinhardt @ 2026-09-24 14:09 UTC (permalink / raw)
To: git; +Cc: Johannes Schindelin
When using Meson 1.3.0 or newer, we use `fs.copyfile()` to put our
completion helpers into the expected location so that our test suite can
find these scripts. Naturally, we thus also add these scripts to our
test dependencies so that we know to build them before executing tests.
But there's an issue here: we include the "contrib/completion" subdir
after we have already wired up our tests, so any dependencies we add
here are not being honored correctly. This has the consequence that we
don't know to copy around these completion helpers when we execute
tests, and one has to manually `meson compile` beforehand.
The interesting part here is that the code path we use with older
versions of Meson don't suffer from the same problem as they use
`configure_file()`, and that function will always run whenever the
source file changes. It's conceptually correct to use `fs.copyfile()`
instead, but given that it's mostly creating problems for us it does not
really seem sensible to continue using it.
Adapt the build instructions to unconditionally use `configure_file()`
to fix this issue.
A better fix would arguably be to promote our shell completion helpers
out of "contrib/" -- they are an important part of Git nowadays, and
these helpers get installed on lots of platforms. If so, we could also
fix the order of subdir includes so that test dependencies are properly
honored. But that feels like a bigger change, so that's left for a
future patch series.
Signed-off-by: Patrick Steinhardt <ps@pks.im>
---
contrib/completion/meson.build | 38 +++++++++++++++-----------------------
1 file changed, 15 insertions(+), 23 deletions(-)
diff --git a/contrib/completion/meson.build b/contrib/completion/meson.build
index 576125b083..4483c5be3e 100644
--- a/contrib/completion/meson.build
+++ b/contrib/completion/meson.build
@@ -4,31 +4,23 @@ foreach script : [
'git-completion.zsh',
'git-prompt.sh'
]
- if meson.version().version_compare('>=1.3.0')
- test_dependencies += fs.copyfile(script)
- else
- configure_file(
- input: script,
- output: script,
- copy: true,
- )
- endif
+ # Note that we intentionally don't use `fs.copyfile()` here because we'd have
+ # to add it to our test dependencies in that case, but that creates a
+ # chicken-and-egg situation between including "t/" or "contrib/" first.
+ configure_file(
+ input: script,
+ output: script,
+ copy: true,
+ )
endforeach
# We have to discern between the test dependency and the installed file. Our
# tests assume the completion scripts to have the same name as the in-tree
# files, but the installed filenames need to match the executable's basename.
-if meson.version().version_compare('>=1.3.0')
- fs.copyfile('git-completion.bash', 'git',
- install: true,
- install_dir: get_option('datadir') / 'bash-completion/completions',
- )
-else
- configure_file(
- input: 'git-completion.bash',
- output: 'git',
- copy: true,
- install: true,
- install_dir: get_option('datadir') / 'bash-completion/completions',
- )
-endif
+configure_file(
+ input: 'git-completion.bash',
+ output: 'git',
+ copy: true,
+ install: true,
+ install_dir: get_option('datadir') / 'bash-completion/completions',
+)
--
2.56.0.rc2.329.gd58861e689.dirty
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH 6/7] meson: update wrappers
2026-09-24 14:09 [PATCH 0/7] A couple of Meson improvements Patrick Steinhardt
` (4 preceding siblings ...)
2026-09-24 14:09 ` [PATCH 5/7] meson: fix outdated completion helpers Patrick Steinhardt
@ 2026-09-24 14:09 ` Patrick Steinhardt
2026-09-30 12:24 ` Karthik Nayak
2026-10-05 9:42 ` Kaartic Sivaraam
2026-09-24 14:09 ` [PATCH 7/7] gitlab-ci: fix hanging MSVC jobs Patrick Steinhardt
` (2 subsequent siblings)
8 siblings, 2 replies; 20+ messages in thread
From: Patrick Steinhardt @ 2026-09-24 14:09 UTC (permalink / raw)
To: git; +Cc: Johannes Schindelin
Our subproject wrappers are used on platforms that do not have the
respective dependencies available. Most importantly, this can be used on
Windows to have an almost-dependency-free build of Git.
Update these wrappers via `meson wrap update`.
Signed-off-by: Patrick Steinhardt <ps@pks.im>
---
subprojects/curl.wrap | 19 ++++++++++---------
subprojects/expat.wrap | 21 +++++++++++----------
subprojects/openssl.wrap | 23 +++++++++++------------
subprojects/pcre2.wrap | 24 +++++++++++-------------
subprojects/zlib.wrap | 21 +++++++++++----------
5 files changed, 54 insertions(+), 54 deletions(-)
diff --git a/subprojects/curl.wrap b/subprojects/curl.wrap
index f7e384b85c..d73b88b75e 100644
--- a/subprojects/curl.wrap
+++ b/subprojects/curl.wrap
@@ -1,13 +1,14 @@
[wrap-file]
-directory = curl-8.10.1
-source_url = https://github.com/curl/curl/releases/download/curl-8_10_1/curl-8.10.1.tar.xz
-source_fallback_url = https://github.com/mesonbuild/wrapdb/releases/download/curl_8.10.1-1/curl-8.10.1.tar.xz
-source_filename = curl-8.10.1.tar.xz
-source_hash = 73a4b0e99596a09fa5924a4fb7e4b995a85fda0d18a2c02ab9cf134bebce04ee
-patch_filename = curl_8.10.1-1_patch.zip
-patch_url = https://wrapdb.mesonbuild.com/v2/curl_8.10.1-1/get_patch
-patch_hash = 707c28f35fc9b0e8d68c0c2800712007612f922a31da9637ce706a2159f3ddd8
-wrapdb_version = 8.10.1-1
+directory = curl-8.12.1
+source_url = https://github.com/curl/curl/releases/download/curl-8_12_1/curl-8.12.1.tar.xz
+source_fallback_url = https://wrapdb.mesonbuild.com/v2/curl_8.12.1-2/get_source/curl-8.12.1.tar.xz
+source_filename = curl-8.12.1.tar.xz
+source_hash = 0341f1ed97a26c811abaebd37d62b833956792b7607ea3f15d001613c76de202
+patch_filename = curl_8.12.1-2_patch.zip
+patch_url = https://wrapdb.mesonbuild.com/v2/curl_8.12.1-2/get_patch
+patch_fallback_url = https://github.com/mesonbuild/wrapdb/releases/download/curl_8.12.1-2/curl_8.12.1-2_patch.zip
+patch_hash = bfd8886cc76ccfab52b1b0472e6c682cdf5374a4c30be2427326f2f495de4eba
+wrapdb_version = 8.12.1-2
[provide]
dependency_names = libcurl
diff --git a/subprojects/expat.wrap b/subprojects/expat.wrap
index 0e9292f97b..67c4ae872f 100644
--- a/subprojects/expat.wrap
+++ b/subprojects/expat.wrap
@@ -1,13 +1,14 @@
[wrap-file]
-directory = expat-2.7.1
-source_url = https://github.com/libexpat/libexpat/releases/download/R_2_7_1/expat-2.7.1.tar.xz
-source_filename = expat-2.7.1.tar.bz2
-source_hash = 354552544b8f99012e5062f7d570ec77f14b412a3ff5c7d8d0dae62c0d217c30
-patch_filename = expat_2.7.1-1_patch.zip
-patch_url = https://wrapdb.mesonbuild.com/v2/expat_2.7.1-1/get_patch
-patch_hash = fe28cbbc427a7c9787d08b969ad54d19f59d8dd18294b4a18651cecfc789d4ef
-source_fallback_url = https://github.com/mesonbuild/wrapdb/releases/download/expat_2.7.1-1/expat-2.7.1.tar.bz2
-wrapdb_version = 2.7.1-1
+directory = expat-2.8.4
+source_url = https://github.com/libexpat/libexpat/releases/download/R_2_8_4/expat-2.8.4.tar.xz
+source_filename = expat-2.8.4.tar.xz
+source_hash = 656ae1cc8da3b4ea513bb4e254f33e6243938084c0ec6239da873376b09985a7
+source_fallback_url = https://wrapdb.mesonbuild.com/v2/expat_2.8.4-1/get_source/expat-2.8.4.tar.xz
+patch_filename = expat_2.8.4-1_patch.zip
+patch_url = https://wrapdb.mesonbuild.com/v2/expat_2.8.4-1/get_patch
+patch_fallback_url = https://github.com/mesonbuild/wrapdb/releases/download/expat_2.8.4-1/expat_2.8.4-1_patch.zip
+patch_hash = 221c537a6cfd8d55ea2d41600ee7f32d8c0659cf6e41511e9e7a2f294b21cb92
+wrapdb_version = 2.8.4-1
[provide]
-expat = expat_dep
+dependency_names = expat
diff --git a/subprojects/openssl.wrap b/subprojects/openssl.wrap
index 873d55106e..e775bb104f 100644
--- a/subprojects/openssl.wrap
+++ b/subprojects/openssl.wrap
@@ -1,15 +1,14 @@
[wrap-file]
-directory = openssl-3.0.8
-source_url = https://www.openssl.org/source/openssl-3.0.8.tar.gz
-source_filename = openssl-3.0.8.tar.gz
-source_hash = 6c13d2bf38fdf31eac3ce2a347073673f5d63263398f1f69d0df4a41253e4b3e
-patch_filename = openssl_3.0.8-3_patch.zip
-patch_url = https://wrapdb.mesonbuild.com/v2/openssl_3.0.8-3/get_patch
-patch_hash = 300da189e106942347d61a4a4295aa2edbcf06184f8d13b4cee0bed9fb936963
-source_fallback_url = https://github.com/mesonbuild/wrapdb/releases/download/openssl_3.0.8-3/openssl-3.0.8.tar.gz
-wrapdb_version = 3.0.8-3
+directory = openssl-3.0.10
+source_url = https://www.openssl.org/source/openssl-3.0.10.tar.gz
+source_filename = openssl-3.0.10.tar.gz
+source_hash = 1761d4f5b13a1028b9b6f3d4b8e17feb0cedc9370f6afe61d7193d2cdce83323
+source_fallback_url = https://wrapdb.mesonbuild.com/v2/openssl_3.0.10-1/get_source/openssl-3.0.10.tar.gz
+patch_filename = openssl_3.0.10-1_patch.zip
+patch_url = https://wrapdb.mesonbuild.com/v2/openssl_3.0.10-1/get_patch
+patch_fallback_url = https://github.com/mesonbuild/wrapdb/releases/download/openssl_3.0.10-1/openssl_3.0.10-1_patch.zip
+patch_hash = 2d142b7e3b1ac092cf67cb4891594c4a2d044aa92624c617a8dcbfe4f056d907
+wrapdb_version = 3.0.10-1
[provide]
-libcrypto = libcrypto_dep
-libssl = libssl_dep
-openssl = openssl_dep
+dependency_names = libcrypto, libssl, openssl
diff --git a/subprojects/pcre2.wrap b/subprojects/pcre2.wrap
index f45c968e2f..a2ff6268dc 100644
--- a/subprojects/pcre2.wrap
+++ b/subprojects/pcre2.wrap
@@ -1,16 +1,14 @@
[wrap-file]
-directory = pcre2-10.45
-source_url = https://github.com/PCRE2Project/pcre2/releases/download/pcre2-10.45/pcre2-10.45.tar.bz2
-source_filename = pcre2-10.45.tar.bz2
-source_hash = 21547f3516120c75597e5b30a992e27a592a31950b5140e7b8bfde3f192033c4
-patch_filename = pcre2_10.45-2_patch.zip
-patch_url = https://wrapdb.mesonbuild.com/v2/pcre2_10.45-2/get_patch
-patch_hash = 7c6f34b703708652a404f9dc2769c67658c437b6043573295fa3428a9b7a6807
-source_fallback_url = https://github.com/mesonbuild/wrapdb/releases/download/pcre2_10.45-2/pcre2-10.45.tar.bz2
-wrapdb_version = 10.45-2
+directory = pcre2-10.48
+source_url = https://github.com/PCRE2Project/pcre2/releases/download/pcre2-10.48/pcre2-10.48.tar.bz2
+source_filename = pcre2-10.48.tar.bz2
+source_hash = b6c68fdf6f3ac31388b50aa89ff0fc49c00c987c16e7b5146491d12003f2c8ed
+source_fallback_url = https://wrapdb.mesonbuild.com/v2/pcre2_10.48-1/get_source/pcre2-10.48.tar.bz2
+patch_filename = pcre2_10.48-1_patch.zip
+patch_url = https://wrapdb.mesonbuild.com/v2/pcre2_10.48-1/get_patch
+patch_fallback_url = https://github.com/mesonbuild/wrapdb/releases/download/pcre2_10.48-1/pcre2_10.48-1_patch.zip
+patch_hash = fbcc964804a921b02ea78fc0ff1558d5999b224db8361087828e30012023525c
+wrapdb_version = 10.48-1
[provide]
-libpcre2-8 = libpcre2_8
-libpcre2-16 = libpcre2_16
-libpcre2-32 = libpcre2_32
-libpcre2-posix = libpcre2_posix
+dependency_names = libpcre2-8, libpcre2-16, libpcre2-32, libpcre2-posix
diff --git a/subprojects/zlib.wrap b/subprojects/zlib.wrap
index aa14de1774..0626401ac2 100644
--- a/subprojects/zlib.wrap
+++ b/subprojects/zlib.wrap
@@ -1,13 +1,14 @@
[wrap-file]
-directory = zlib-1.3.1
-source_url = http://zlib.net/fossils/zlib-1.3.1.tar.gz
-source_fallback_url = https://github.com/mesonbuild/wrapdb/releases/download/zlib_1.3.1-1/zlib-1.3.1.tar.gz
-source_filename = zlib-1.3.1.tar.gz
-source_hash = 9a93b2b7dfdac77ceba5a558a580e74667dd6fede4585b91eefb60f03b72df23
-patch_filename = zlib_1.3.1-1_patch.zip
-patch_url = https://wrapdb.mesonbuild.com/v2/zlib_1.3.1-1/get_patch
-patch_hash = e79b98eb24a75392009cec6f99ca5cdca9881ff20bfa174e8b8926d5c7a47095
-wrapdb_version = 1.3.1-1
+directory = zlib-1.3.2
+source_url = https://zlib.net/zlib-1.3.2.tar.xz
+source_fallback_url = https://wrapdb.mesonbuild.com/v2/zlib_1.3.2-1/get_source/zlib-1.3.2.tar.xz
+source_filename = zlib-1.3.2.tar.xz
+source_hash = d7a0654783a4da529d1bb793b7ad9c3318020af77667bcae35f95d0e42a792f3
+patch_filename = zlib_1.3.2-1_patch.zip
+patch_url = https://wrapdb.mesonbuild.com/v2/zlib_1.3.2-1/get_patch
+patch_fallback_url = https://github.com/mesonbuild/wrapdb/releases/download/zlib_1.3.2-1/zlib_1.3.2-1_patch.zip
+patch_hash = 5ae7a2e92f823df118cfb8c1b23d94e3117864392b3446581d669049b2fba6dd
+wrapdb_version = 1.3.2-1
[provide]
-zlib = zlib_dep
+dependency_names = zlib
--
2.56.0.rc2.329.gd58861e689.dirty
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH 7/7] gitlab-ci: fix hanging MSVC jobs
2026-09-24 14:09 [PATCH 0/7] A couple of Meson improvements Patrick Steinhardt
` (5 preceding siblings ...)
2026-09-24 14:09 ` [PATCH 6/7] meson: update wrappers Patrick Steinhardt
@ 2026-09-24 14:09 ` Patrick Steinhardt
2026-09-30 12:26 ` Karthik Nayak
2026-09-30 12:26 ` [PATCH 0/7] A couple of Meson improvements Karthik Nayak
2026-10-05 9:51 ` Kaartic Sivaraam
8 siblings, 1 reply; 20+ messages in thread
From: Patrick Steinhardt @ 2026-09-24 14:09 UTC (permalink / raw)
To: git; +Cc: Johannes Schindelin
Starting with GitLab Runner 19.x, the runner executes `git credential
reject` in its cleanup stage. This has bad interactions with our build
environment because we install our own version of PortableGit, and the
runner picks up that version of Git. The consequence is that we invoke
PortableGit's default credential manager, which is Git Credential
Manager for Windows. GCM then tries to use Windows Credential Manager,
but it cannot and thus the job hangs in its cleanup phase forever.
Fix this hang by unsetting the credential helper after installing
PortableGit. This means that `git credential reject` becomes a no-op,
and thus the cleanup succeeds again.
Signed-off-by: Patrick Steinhardt <ps@pks.im>
---
ci/install-dependencies.ps1 | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/ci/install-dependencies.ps1 b/ci/install-dependencies.ps1
index e3b367fa54..2ceb5dd99a 100755
--- a/ci/install-dependencies.ps1
+++ b/ci/install-dependencies.ps1
@@ -53,3 +53,11 @@ Invoke-Installer msiexec.exe @('/i', $mesonMsi, 'INSTALLDIR=C:\Meson', '/quiet',
$rustMsi = Get-Installer "rust.msi" `
"https://static.rust-lang.org/dist/rust-$RustVersion-x86_64-pc-windows-msvc.msi"
Invoke-Installer msiexec.exe @('/i', $rustMsi, 'INSTALLDIR=C:\Rust', 'ADDLOCAL=Rustc,Cargo,Std', '/quiet', '/norestart')
+
+# Disable Git Credential Manager, which is auto-configured by PortableGit.
+# GitLab's runner picks up this Git in its cleanup stage and runs `git
+# credential reject`, which hangs in GCM and makes the job time out.
+& "C:\Program Files\Git\bin\git.exe" config unset --all --system credential.helper
+if ($LASTEXITCODE -ne 0 -and $LASTEXITCODE -ne 5) {
+ throw "Failed to unset credential.helper with exit code $LASTEXITCODE"
+}
--
2.56.0.rc2.329.gd58861e689.dirty
^ permalink raw reply related [flat|nested] 20+ messages in thread
* Re: [PATCH 1/7] meson: avoid recompiling HTTP sources several times
2026-09-24 14:09 ` [PATCH 1/7] meson: avoid recompiling HTTP sources several times Patrick Steinhardt
@ 2026-09-30 12:00 ` Karthik Nayak
2026-10-05 8:03 ` Kaartic Sivaraam
1 sibling, 0 replies; 20+ messages in thread
From: Karthik Nayak @ 2026-09-30 12:00 UTC (permalink / raw)
To: Patrick Steinhardt, git; +Cc: Johannes Schindelin
[-- Attachment #1: Type: text/plain, Size: 2404 bytes --]
Patrick Steinhardt <ps@pks.im> writes:
> We only link curl into a subset of our subcommands. Consequently, as
> both "http.c" and "http-walker.c" depend on curl, we don't compile these
> into "libgit.a" but instead only link those into the commands that
> depend on curl.
>
> In Meson, we wire these dependencies into the target executables by
> using the `sources:` keyword. But this has the consequence that we're
> recompiling those multiple several times, once for every different
> command they are linked into. In fact, each of these sources is compiled
> seven times, which of course has an impact on compilation speed.
>
> Fix this issue by instead linking these into a static library so that
> they only need to be compiled once. This gives us an almost 10% speedup
> in a clean build:
>
> Benchmark 1: meson compile (version = HEAD~)
> Time (mean ± σ): 6.781 s ± 0.052 s [User: 100.775 s, System: 22.954 s]
> Range (min … max): 6.709 s … 6.867 s 10 runs
>
> Benchmark 2: meson compile (version = HEAD)
> Time (mean ± σ): 6.274 s ± 0.021 s [User: 91.882 s, System: 22.092 s]
> Range (min … max): 6.242 s … 6.306 s 10 runs
>
> Summary
> meson compile (version = HEAD) ran
> 1.08 ± 0.01 times faster than meson compile (version = HEAD~)
>
> Signed-off-by: Patrick Steinhardt <ps@pks.im>
> ---
> meson.build | 11 +++++++----
> 1 file changed, 7 insertions(+), 4 deletions(-)
>
> diff --git a/meson.build b/meson.build
> index 0a95d90d21..4fdb4c5405 100644
> --- a/meson.build
> +++ b/meson.build
> @@ -1925,10 +1925,13 @@ bin_wrappers += executable('scalar',
>
> if curl.found()
> libgit_curl = declare_dependency(
> - sources: [
> - 'http.c',
> - 'http-walker.c',
> - ],
> + link_with: static_library('git-curl',
> + sources: [
> + 'http.c',
> + 'http-walker.c',
> + ],
> + dependencies: [libgit_commonmain, curl],
> + ),
So there are 7 locations which mark `libgit_curl` as a dependency,
earlier this would have recompiled the two sources here each time for
each of the 7 locations.
Now we build a static library and declare the dependency to be linked
with the static library. Looks good.
> dependencies: [libgit_commonmain, curl],
> )
>
>
> --
> 2.56.0.rc2.329.gd58861e689.dirty
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 690 bytes --]
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH 3/7] meson: use precompiled headers for our test-helper
2026-09-24 14:09 ` [PATCH 3/7] meson: use precompiled headers for our test-helper Patrick Steinhardt
@ 2026-09-30 12:20 ` Karthik Nayak
0 siblings, 0 replies; 20+ messages in thread
From: Karthik Nayak @ 2026-09-30 12:20 UTC (permalink / raw)
To: Patrick Steinhardt, git; +Cc: Johannes Schindelin
[-- Attachment #1: Type: text/plain, Size: 1771 bytes --]
Patrick Steinhardt <ps@pks.im> writes:
> In 671df48df8 (meson: precompile "git-compat-util.h", 2026-03-19) we
> have introduced support for precompiled headers into Meson. At that time
> though we only converted "libgit.a" to make use of those.
>
> Nowadays though, our test-helper also consists of a bunch of code files,
> and all of these include "git-compat-util.h" via "test-tool.h" as the
> first header. So they're a natural target to also use precompiled
> headers.
>
> Adapt the test-tool executable to make use of them, which results in a
> surprisingly large speedup for clean builds:
>
> Benchmark 1: meson compile (version = HEAD~)
> Time (mean ± σ): 6.363 s ± 0.033 s [User: 92.858 s, System: 22.500 s]
> Range (min … max): 6.311 s … 6.418 s 10 runs
>
> Benchmark 2: meson compile (version = HEAD)
> Time (mean ± σ): 5.327 s ± 0.021 s [User: 75.135 s, System: 20.373 s]
> Range (min … max): 5.299 s … 5.362 s 10 runs
>
> Summary
> meson compile (version = HEAD) ran
> 1.19 ± 0.01 times faster than meson compile (version = HEAD~)
>
> Signed-off-by: Patrick Steinhardt <ps@pks.im>
> ---
> t/helper/meson.build | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/t/helper/meson.build b/t/helper/meson.build
> index 3235f10ab8..ae513b4cdc 100644
> --- a/t/helper/meson.build
> +++ b/t/helper/meson.build
> @@ -83,6 +83,7 @@ test_tool_sources = [
>
> test_tool = executable('test-tool',
> sources: test_tool_sources,
> + c_pch: '../../tools/precompiled.h',
> dependencies: [libgit_commonmain],
> )
> bin_wrappers += test_tool
>
Seems like a straightforward win. Nice to see.
> --
> 2.56.0.rc2.329.gd58861e689.dirty
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 690 bytes --]
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH 6/7] meson: update wrappers
2026-09-24 14:09 ` [PATCH 6/7] meson: update wrappers Patrick Steinhardt
@ 2026-09-30 12:24 ` Karthik Nayak
2026-10-05 9:42 ` Kaartic Sivaraam
1 sibling, 0 replies; 20+ messages in thread
From: Karthik Nayak @ 2026-09-30 12:24 UTC (permalink / raw)
To: Patrick Steinhardt, git; +Cc: Johannes Schindelin
[-- Attachment #1: Type: text/plain, Size: 353 bytes --]
Patrick Steinhardt <ps@pks.im> writes:
> Our subproject wrappers are used on platforms that do not have the
> respective dependencies available. Most importantly, this can be used on
> Windows to have an almost-dependency-free build of Git.
>
> Update these wrappers via `meson wrap update`.
>
Okay, I've verified this locally and it matches.
[snip]
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 690 bytes --]
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH 7/7] gitlab-ci: fix hanging MSVC jobs
2026-09-24 14:09 ` [PATCH 7/7] gitlab-ci: fix hanging MSVC jobs Patrick Steinhardt
@ 2026-09-30 12:26 ` Karthik Nayak
2026-09-30 12:48 ` Patrick Steinhardt
0 siblings, 1 reply; 20+ messages in thread
From: Karthik Nayak @ 2026-09-30 12:26 UTC (permalink / raw)
To: Patrick Steinhardt, git; +Cc: Johannes Schindelin
[-- Attachment #1: Type: text/plain, Size: 2073 bytes --]
FPatrick Steinhardt <ps@pks.im> writes:
> Starting with GitLab Runner 19.x, the runner executes `git credential
> reject` in its cleanup stage. This has bad interactions with our build
> environment because we install our own version of PortableGit, and the
> runner picks up that version of Git. The consequence is that we invoke
> PortableGit's default credential manager, which is Git Credential
> Manager for Windows. GCM then tries to use Windows Credential Manager,
> but it cannot and thus the job hangs in its cleanup phase forever.
>
> Fix this hang by unsetting the credential helper after installing
> PortableGit. This means that `git credential reject` becomes a no-op,
> and thus the cleanup succeeds again.
>
> Signed-off-by: Patrick Steinhardt <ps@pks.im>
> ---
> ci/install-dependencies.ps1 | 8 ++++++++
> 1 file changed, 8 insertions(+)
>
> diff --git a/ci/install-dependencies.ps1 b/ci/install-dependencies.ps1
> index e3b367fa54..2ceb5dd99a 100755
> --- a/ci/install-dependencies.ps1
> +++ b/ci/install-dependencies.ps1
> @@ -53,3 +53,11 @@ Invoke-Installer msiexec.exe @('/i', $mesonMsi, 'INSTALLDIR=C:\Meson', '/quiet',
> $rustMsi = Get-Installer "rust.msi" `
> "https://static.rust-lang.org/dist/rust-$RustVersion-x86_64-pc-windows-msvc.msi"
> Invoke-Installer msiexec.exe @('/i', $rustMsi, 'INSTALLDIR=C:\Rust', 'ADDLOCAL=Rustc,Cargo,Std', '/quiet', '/norestart')
> +
> +# Disable Git Credential Manager, which is auto-configured by PortableGit.
> +# GitLab's runner picks up this Git in its cleanup stage and runs `git
> +# credential reject`, which hangs in GCM and makes the job time out.
> +& "C:\Program Files\Git\bin\git.exe" config unset --all --system credential.helper
> +if ($LASTEXITCODE -ne 0 -and $LASTEXITCODE -ne 5) {
> + throw "Failed to unset credential.helper with exit code $LASTEXITCODE"
> +}
>
Nice, for reference the runner team also has a fix on their end to
disable credential.helper on their side too [1].
[1]: gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/7470
> --
> 2.56.0.rc2.329.gd58861e689.dirty
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 690 bytes --]
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH 0/7] A couple of Meson improvements
2026-09-24 14:09 [PATCH 0/7] A couple of Meson improvements Patrick Steinhardt
` (6 preceding siblings ...)
2026-09-24 14:09 ` [PATCH 7/7] gitlab-ci: fix hanging MSVC jobs Patrick Steinhardt
@ 2026-09-30 12:26 ` Karthik Nayak
2026-10-05 9:51 ` Kaartic Sivaraam
8 siblings, 0 replies; 20+ messages in thread
From: Karthik Nayak @ 2026-09-30 12:26 UTC (permalink / raw)
To: Patrick Steinhardt, git; +Cc: Johannes Schindelin
[-- Attachment #1: Type: text/plain, Size: 1928 bytes --]
Patrick Steinhardt <ps@pks.im> writes:
> Hi,
>
> this patch series contains a couple of improvements for Meson:
>
> - Clean build times are sped up, going from ~6.8 seconds to ~5.0
> seconds for a full build.
>
> - A test issue is fixed that causes shell completion tests to fail
> because the scripts are not properly updated.
>
> - Our subproject wrappers are updated to current versions.
>
> - A fix for GitLab's msvc-meson jobs that are broken right now due to
> a change in our runner images. See [1] for the now-working
> msvc-meson jobs. Note though that the MinGW-based jobs are still
> broken, but Dscho has been sending fixes for that already.
>
> Thanks!
>
> Patrick
>
The patches look good. The speedup is much appreciated.
> ---
> Patrick Steinhardt (7):
> meson: avoid recompiling HTTP sources several times
> meson: don't recompile git-remote-http(1) multiple times for tests
> meson: use precompiled headers for our test-helper
> meson: use precompiled headers for unit tests
> meson: fix outdated completion helpers
> meson: update wrappers
> gitlab-ci: fix hanging MSVC jobs
>
> ci/install-dependencies.ps1 | 8 ++++++++
> contrib/completion/meson.build | 38 +++++++++++++++-----------------------
> meson.build | 16 ++++++++++------
> subprojects/curl.wrap | 19 ++++++++++---------
> subprojects/expat.wrap | 21 +++++++++++----------
> subprojects/openssl.wrap | 23 +++++++++++------------
> subprojects/pcre2.wrap | 24 +++++++++++-------------
> subprojects/zlib.wrap | 21 +++++++++++----------
> t/helper/meson.build | 1 +
> t/meson.build | 10 ++++++++--
> 10 files changed, 96 insertions(+), 85 deletions(-)
>
>
> ---
> base-commit: 0f8e75abebff0877cae681a3d5ff31ac47f54220
> change-id: 20260924-pks-meson-improvements-b7ed9a48ed4e
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 690 bytes --]
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH 7/7] gitlab-ci: fix hanging MSVC jobs
2026-09-30 12:26 ` Karthik Nayak
@ 2026-09-30 12:48 ` Patrick Steinhardt
0 siblings, 0 replies; 20+ messages in thread
From: Patrick Steinhardt @ 2026-09-30 12:48 UTC (permalink / raw)
To: Karthik Nayak; +Cc: git, Johannes Schindelin
On Wed, Sep 30, 2026 at 05:26:17AM -0700, Karthik Nayak wrote:
> Patrick Steinhardt <ps@pks.im> writes:
> > diff --git a/ci/install-dependencies.ps1 b/ci/install-dependencies.ps1
> > index e3b367fa54..2ceb5dd99a 100755
> > --- a/ci/install-dependencies.ps1
> > +++ b/ci/install-dependencies.ps1
> > @@ -53,3 +53,11 @@ Invoke-Installer msiexec.exe @('/i', $mesonMsi, 'INSTALLDIR=C:\Meson', '/quiet',
> > $rustMsi = Get-Installer "rust.msi" `
> > "https://static.rust-lang.org/dist/rust-$RustVersion-x86_64-pc-windows-msvc.msi"
> > Invoke-Installer msiexec.exe @('/i', $rustMsi, 'INSTALLDIR=C:\Rust', 'ADDLOCAL=Rustc,Cargo,Std', '/quiet', '/norestart')
> > +
> > +# Disable Git Credential Manager, which is auto-configured by PortableGit.
> > +# GitLab's runner picks up this Git in its cleanup stage and runs `git
> > +# credential reject`, which hangs in GCM and makes the job time out.
> > +& "C:\Program Files\Git\bin\git.exe" config unset --all --system credential.helper
> > +if ($LASTEXITCODE -ne 0 -and $LASTEXITCODE -ne 5) {
> > + throw "Failed to unset credential.helper with exit code $LASTEXITCODE"
> > +}
> >
>
> Nice, for reference the runner team also has a fix on their end to
> disable credential.helper on their side too [1].
>
> [1]: gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/7470
Yeah, I've seen that already, but thanks for pointing this out to the
mailing list. I guess it makes sense to apply this patch anyway so that
we don't have this issue anymore with the current-broken version of the
runner.
Thanks!
Patrick
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH 1/7] meson: avoid recompiling HTTP sources several times
2026-09-24 14:09 ` [PATCH 1/7] meson: avoid recompiling HTTP sources several times Patrick Steinhardt
2026-09-30 12:00 ` Karthik Nayak
@ 2026-10-05 8:03 ` Kaartic Sivaraam
1 sibling, 0 replies; 20+ messages in thread
From: Kaartic Sivaraam @ 2026-10-05 8:03 UTC (permalink / raw)
To: Patrick Steinhardt, git; +Cc: Johannes Schindelin
On 9/24/26 19:39, Patrick Steinhardt wrote:
> We only link curl into a subset of our subcommands. Consequently, as
> both "http.c" and "http-walker.c" depend on curl, we don't compile these
> into "libgit.a" but instead only link those into the commands that
> depend on curl.
>
> In Meson, we wire these dependencies into the target executables by
> using the `sources:` keyword. But this has the consequence that we're
> recompiling those multiple several times, once for every different
s/multiple several/multiple/
Rest of the patch look good to me.
--
Sivaraam
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH 4/7] meson: use precompiled headers for unit tests
2026-09-24 14:09 ` [PATCH 4/7] meson: use precompiled headers for unit tests Patrick Steinhardt
@ 2026-10-05 9:34 ` Kaartic Sivaraam
2026-10-05 10:24 ` Patrick Steinhardt
0 siblings, 1 reply; 20+ messages in thread
From: Kaartic Sivaraam @ 2026-10-05 9:34 UTC (permalink / raw)
To: Patrick Steinhardt, git; +Cc: Johannes Schindelin
On 9/24/26 19:39, Patrick Steinhardt wrote:
>
> diff --git a/t/meson.build b/t/meson.build
> index 3ca7b27104..9f1ee9ad59 100644
> --- a/t/meson.build
> +++ b/t/meson.build
> @@ -30,7 +30,6 @@ clar_test_suites = [
> ]
>
> clar_sources = [
> - 'unit-tests/clar/clar.c',
> 'unit-tests/unit-test.c',
> 'unit-tests/lib-oid.c',
> 'unit-tests/lib-reftable.c'
> @@ -49,7 +48,7 @@ clar_decls_h = custom_target(
> )
> clar_sources += clar_decls_h
>
> -clar_sources += custom_target(
> +clar_suite_h = custom_target(
> input: clar_decls_h,
> output: 'clar.suite',
> command : [
> @@ -66,6 +65,13 @@ clar_unit_tests = executable('unit-tests',
> c_args: [
> '-DGIT_CLAR_DECLS_H="' + clar_decls_h.full_path() + '"',
> ],
> + c_pch: '../tools/precompiled.h',
> + link_with: static_library('clar',
> + sources: [
> + 'unit-tests/clar/clar.c',
> + clar_suite_h,
> + ],
> + ),
Compiling this separately as a static library is cool but now clar.c
does not get the libgit_c_args it was getting through the dependencies
of the unit-tests executable. Is this something that we need to correct?
> dependencies: [libgit_commonmain],
> )
> test('unit-tests', clar_unit_tests, kwargs: test_kwargs)
>
--
Sivaraam
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH 6/7] meson: update wrappers
2026-09-24 14:09 ` [PATCH 6/7] meson: update wrappers Patrick Steinhardt
2026-09-30 12:24 ` Karthik Nayak
@ 2026-10-05 9:42 ` Kaartic Sivaraam
2026-10-05 10:25 ` Patrick Steinhardt
1 sibling, 1 reply; 20+ messages in thread
From: Kaartic Sivaraam @ 2026-10-05 9:42 UTC (permalink / raw)
To: Patrick Steinhardt, git; +Cc: Johannes Schindelin
On 9/24/26 19:39, Patrick Steinhardt wrote:
> Our subproject wrappers are used on platforms that do not have the
> respective dependencies available. Most importantly, this can be used on
> Windows to have an almost-dependency-free build of Git.
>
> Update these wrappers via `meson wrap update`.
>
> Signed-off-by: Patrick Steinhardt <ps@pks.im>
> ---
> subprojects/curl.wrap | 19 ++++++++++---------
> subprojects/expat.wrap | 21 +++++++++++----------
> subprojects/openssl.wrap | 23 +++++++++++------------
> subprojects/pcre2.wrap | 24 +++++++++++-------------
> subprojects/zlib.wrap | 21 +++++++++++----------
> 5 files changed, 54 insertions(+), 54 deletions(-)
>
> diff --git a/subprojects/curl.wrap b/subprojects/curl.wrap
> index f7e384b85c..d73b88b75e 100644
> --- a/subprojects/curl.wrap
> +++ b/subprojects/curl.wrap
> @@ -1,13 +1,14 @@
> [wrap-file]
> [ snip ]
> -wrapdb_version = 8.10.1-1
> [ snip ]
> +wrapdb_version = 8.12.1-2
>
> diff --git a/subprojects/openssl.wrap b/subprojects/openssl.wrap>
index 873d55106e..e775bb104f 100644
> --- a/subprojects/openssl.wrap
> +++ b/subprojects/openssl.wrap
> @@ -1,15 +1,14 @@
> [wrap-file]
> [ snip ]> -wrapdb_version = 3.0.8-3
> [ snip ]> +wrapdb_version = 3.0.10-1
>
We are using the latest versions from the wrap DB for the above but the
versions available via wrap DB itself appears quite old. For instance,
- curl 8.12.1 was released on Feb/2025. The latest available
is 8.22.0 (released Sep/2026)
- OpenSSL 3.0.10 was released on Aug/2023. The latest available are
3.0.22 (released Aug/2026) and 4.0.1 (released Jun/2026).
Is this version gap something we need to document / think about?
--
Sivaraam
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH 0/7] A couple of Meson improvements
2026-09-24 14:09 [PATCH 0/7] A couple of Meson improvements Patrick Steinhardt
` (7 preceding siblings ...)
2026-09-30 12:26 ` [PATCH 0/7] A couple of Meson improvements Karthik Nayak
@ 2026-10-05 9:51 ` Kaartic Sivaraam
8 siblings, 0 replies; 20+ messages in thread
From: Kaartic Sivaraam @ 2026-10-05 9:51 UTC (permalink / raw)
To: Patrick Steinhardt, git; +Cc: Johannes Schindelin
On 9/24/26 19:39, Patrick Steinhardt wrote:
>
> ---
> Patrick Steinhardt (7):
> meson: avoid recompiling HTTP sources several times
> meson: don't recompile git-remote-http(1) multiple times for tests
> meson: use precompiled headers for our test-helper
> meson: use precompiled headers for unit tests
The only other sub-directory that does not yet include the precompiled
header is 'compat' and leaving it out seems to be the right choice.
Including it would trigger recursive compilation issues as
git-compat-util.h itself depends on compat/posix.h. Trying to reshuffle
the build code to fix this seems not worthwhile given the amount of code
is a bit less there.
A few other similar targets that were not touched by this series are
non-worthwhile such as 'common-main', 'git-curl' etc.
Apart from the few other comments in other threads, this series looks
good to me.
--
Sivaraam
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH 4/7] meson: use precompiled headers for unit tests
2026-10-05 9:34 ` Kaartic Sivaraam
@ 2026-10-05 10:24 ` Patrick Steinhardt
0 siblings, 0 replies; 20+ messages in thread
From: Patrick Steinhardt @ 2026-10-05 10:24 UTC (permalink / raw)
To: Kaartic Sivaraam; +Cc: git, Johannes Schindelin
On Mon, Oct 05, 2026 at 03:04:16PM +0530, Kaartic Sivaraam wrote:
> On 9/24/26 19:39, Patrick Steinhardt wrote:
> >
> > diff --git a/t/meson.build b/t/meson.build
> > index 3ca7b27104..9f1ee9ad59 100644
> > --- a/t/meson.build
> > +++ b/t/meson.build
> > @@ -66,6 +65,13 @@ clar_unit_tests = executable('unit-tests',
> > c_args: [
> > '-DGIT_CLAR_DECLS_H="' + clar_decls_h.full_path() + '"',
> > ],
> > + c_pch: '../tools/precompiled.h',
> > + link_with: static_library('clar',
> > + sources: [
> > + 'unit-tests/clar/clar.c',
> > + clar_suite_h,
> > + ],
> > + ),
>
> Compiling this separately as a static library is cool but now clar.c does
> not get the libgit_c_args it was getting through the dependencies of the
> unit-tests executable. Is this something that we need to correct?
That's true. But I wonder whether that is maybe even an improvement.
After all, the libgit_c_args contain stuff that is relevant to Git,
only. And given that "clar.c" is a vendored dependency, it does not
really make sense to expose e.g. "-DWITH_BREAKING_CHANGES".
Now there are a small handful of arguments that _might_ be relevant, but
these are only -W-style warning flags. I don't think we really care
about those either, as again, this is a vendored dependency.
So overall I think that this is fine, but I should've maybe called this
out in the commit mesage.
Patrick
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH 6/7] meson: update wrappers
2026-10-05 9:42 ` Kaartic Sivaraam
@ 2026-10-05 10:25 ` Patrick Steinhardt
0 siblings, 0 replies; 20+ messages in thread
From: Patrick Steinhardt @ 2026-10-05 10:25 UTC (permalink / raw)
To: Kaartic Sivaraam; +Cc: git, Johannes Schindelin
On Mon, Oct 05, 2026 at 03:12:34PM +0530, Kaartic Sivaraam wrote:
> On 9/24/26 19:39, Patrick Steinhardt wrote:
> > diff --git a/subprojects/openssl.wrap b/subprojects/openssl.wrap> index
> 873d55106e..e775bb104f 100644
> > --- a/subprojects/openssl.wrap
> > +++ b/subprojects/openssl.wrap
> > @@ -1,15 +1,14 @@
> > [wrap-file]
> > [ snip ]> -wrapdb_version = 3.0.8-3
> > [ snip ]> +wrapdb_version = 3.0.10-1
> >
>
> We are using the latest versions from the wrap DB for the above but the
> versions available via wrap DB itself appears quite old. For instance,
>
> - curl 8.12.1 was released on Feb/2025. The latest available
> is 8.22.0 (released Sep/2026)
>
> - OpenSSL 3.0.10 was released on Aug/2023. The latest available are
> 3.0.22 (released Aug/2026) and 4.0.1 (released Jun/2026).
>
> Is this version gap something we need to document / think about?
Maybe, but I think the proper way to fix this would be to update the
wrap DB if we really care about this. For now we only use this so that
we can have a mostly dependencyless Windows build with GitLab CI. I
don't think anybody uses this for a production-facing build.
So I'd leave this as-is for now, but agree that we should maybe iterate
a bit on this going forward and collaborate with upstream.
Thanks!
Patrick
^ permalink raw reply [flat|nested] 20+ messages in thread
end of thread, other threads:[~2026-10-05 10:25 UTC | newest]
Thread overview: 20+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-09-24 14:09 [PATCH 0/7] A couple of Meson improvements Patrick Steinhardt
2026-09-24 14:09 ` [PATCH 1/7] meson: avoid recompiling HTTP sources several times Patrick Steinhardt
2026-09-30 12:00 ` Karthik Nayak
2026-10-05 8:03 ` Kaartic Sivaraam
2026-09-24 14:09 ` [PATCH 2/7] meson: don't recompile git-remote-http(1) multiple times for tests Patrick Steinhardt
2026-09-24 14:09 ` [PATCH 3/7] meson: use precompiled headers for our test-helper Patrick Steinhardt
2026-09-30 12:20 ` Karthik Nayak
2026-09-24 14:09 ` [PATCH 4/7] meson: use precompiled headers for unit tests Patrick Steinhardt
2026-10-05 9:34 ` Kaartic Sivaraam
2026-10-05 10:24 ` Patrick Steinhardt
2026-09-24 14:09 ` [PATCH 5/7] meson: fix outdated completion helpers Patrick Steinhardt
2026-09-24 14:09 ` [PATCH 6/7] meson: update wrappers Patrick Steinhardt
2026-09-30 12:24 ` Karthik Nayak
2026-10-05 9:42 ` Kaartic Sivaraam
2026-10-05 10:25 ` Patrick Steinhardt
2026-09-24 14:09 ` [PATCH 7/7] gitlab-ci: fix hanging MSVC jobs Patrick Steinhardt
2026-09-30 12:26 ` Karthik Nayak
2026-09-30 12:48 ` Patrick Steinhardt
2026-09-30 12:26 ` [PATCH 0/7] A couple of Meson improvements Karthik Nayak
2026-10-05 9:51 ` Kaartic Sivaraam
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox