{"thread":{"id":"66386","subject":"[PATCH 0/7] A couple of Meson improvements","startedAt":"2026-09-24T14:09:21Z","lastAt":"2026-10-05T10:25:09Z","messageCount":20,"participants":["Patrick Steinhardt","Karthik Nayak","Kaartic Sivaraam"],"isPatch":true,"patchVersion":1,"patchTotal":7},"messages":[{"id":"553182","messageId":"20260924-pks-meson-improvements-v1-0-90b7f79f1c4e@pks.im","threadId":"66386","inReplyTo":null,"subject":"[PATCH 0/7] A couple of Meson improvements","fromName":"Patrick Steinhardt","fromEmail":"ps@pks.im","sentAt":"2026-09-24T14:09:09Z","receivedAt":"2026-09-24T14:09:21Z","isPatch":true,"body":"Hi,\n\nthis patch series contains a couple of improvements for Meson:\n\n  - Clean build times are sped up, going from ~6.8 seconds to ~5.0\n    seconds for a full build.\n\n  - A test issue is fixed that causes shell completion tests to fail\n    because the scripts are not properly updated.\n\n  - Our subproject wrappers are updated to current versions.\n\n  - A fix for GitLab's msvc-meson jobs that are broken right now due to\n    a change in our runner images. See [1] for the now-working\n    msvc-meson jobs. Note though that the MinGW-based jobs are still\n    broken, but Dscho has been sending fixes for that already.\n\nThanks!\n\nPatrick\n\n---\nPatrick Steinhardt (7):\n      meson: avoid recompiling HTTP sources several times\n      meson: don't recompile git-remote-http(1) multiple times for tests\n      meson: use precompiled headers for our test-helper\n      meson: use precompiled headers for unit tests\n      meson: fix outdated completion helpers\n      meson: update wrappers\n      gitlab-ci: fix hanging MSVC jobs\n\n ci/install-dependencies.ps1    |  8 ++++++++\n contrib/completion/meson.build | 38 +++++++++++++++-----------------------\n meson.build                    | 16 ++++++++++------\n subprojects/curl.wrap          | 19 ++++++++++---------\n subprojects/expat.wrap         | 21 +++++++++++----------\n subprojects/openssl.wrap       | 23 +++++++++++------------\n subprojects/pcre2.wrap         | 24 +++++++++++-------------\n subprojects/zlib.wrap          | 21 +++++++++++----------\n t/helper/meson.build           |  1 +\n t/meson.build                  | 10 ++++++++--\n 10 files changed, 96 insertions(+), 85 deletions(-)\n\n\n---\nbase-commit: 0f8e75abebff0877cae681a3d5ff31ac47f54220\nchange-id: 20260924-pks-meson-improvements-b7ed9a48ed4e\n\n"},{"id":"553183","messageId":"20260924-pks-meson-improvements-v1-1-90b7f79f1c4e@pks.im","threadId":"66386","inReplyTo":"20260924-pks-meson-improvements-v1-0-90b7f79f1c4e@pks.im","subject":"[PATCH 1/7] meson: avoid recompiling HTTP sources several times","fromName":"Patrick Steinhardt","fromEmail":"ps@pks.im","sentAt":"2026-09-24T14:09:10Z","receivedAt":"2026-09-24T14:09:22Z","isPatch":true,"body":"We only link curl into a subset of our subcommands. Consequently, as\nboth \"http.c\" and \"http-walker.c\" depend on curl, we don't compile these\ninto \"libgit.a\" but instead only link those into the commands that\ndepend on curl.\n\nIn Meson, we wire these dependencies into the target executables by\nusing the `sources:` keyword. But this has the consequence that we're\nrecompiling those multiple several times, once for every different\ncommand they are linked into. In fact, each of these sources is compiled\nseven times, which of course has an impact on compilation speed.\n\nFix this issue by instead linking these into a static library so that\nthey only need to be compiled once. This gives us an almost 10% speedup\nin a clean build:\n\n  Benchmark 1: meson compile (version = HEAD~)\n    Time (mean ± σ):      6.781 s ±  0.052 s    [User: 100.775 s, System: 22.954 s]\n    Range (min … max):    6.709 s …  6.867 s    10 runs\n\n  Benchmark 2: meson compile (version = HEAD)\n    Time (mean ± σ):      6.274 s ±  0.021 s    [User: 91.882 s, System: 22.092 s]\n    Range (min … max):    6.242 s …  6.306 s    10 runs\n\n  Summary\n    meson compile (version = HEAD) ran\n      1.08 ± 0.01 times faster than meson compile (version = HEAD~)\n\nSigned-off-by: Patrick Steinhardt <ps@pks.im>\n---\n meson.build | 11 +++++++----\n 1 file changed, 7 insertions(+), 4 deletions(-)\n\ndiff --git a/meson.build b/meson.build\nindex 0a95d90d21..4fdb4c5405 100644\n--- a/meson.build\n+++ b/meson.build\n@@ -1925,10 +1925,13 @@ bin_wrappers += executable('scalar',\n \n if curl.found()\n   libgit_curl = declare_dependency(\n-    sources: [\n-      'http.c',\n-      'http-walker.c',\n-    ],\n+    link_with: static_library('git-curl',\n+      sources: [\n+        'http.c',\n+        'http-walker.c',\n+      ],\n+      dependencies: [libgit_commonmain, curl],\n+    ),\n     dependencies: [libgit_commonmain, curl],\n   )\n \n\n-- \n2.56.0.rc2.329.gd58861e689.dirty\n\n"},{"id":"553184","messageId":"20260924-pks-meson-improvements-v1-2-90b7f79f1c4e@pks.im","threadId":"66386","inReplyTo":"20260924-pks-meson-improvements-v1-0-90b7f79f1c4e@pks.im","subject":"[PATCH 2/7] meson: don't recompile git-remote-http(1) multiple times for tests","fromName":"Patrick Steinhardt","fromEmail":"ps@pks.im","sentAt":"2026-09-24T14:09:11Z","receivedAt":"2026-09-24T14:09:24Z","isPatch":true,"body":"When running our tests, we expect git-remote-http(1) and a couple of\nother binaries to be available to the test suite. In our Makefile, we\nachieve this by simply hardlinking the file into place in our source\ndirectory. We cannot easily do that in Meson though because there is no\navailable command to create such a hardlink.\n\nWe could of course create a custom target that uses a script for that,\nbut that feels quite awkward. Instead, we build the executable several\ntimes, which is of course less efficient. Even worse though, similar as\nin the preceding commit, we're building \"remote-curl.c\" once for each of\nthese targets, which makes this even more expensive.\n\nFix this by reusing the already-compiled objects from git-remote-http(1)\nso that we only have to perform the linking step several times. This\nleads to a mild speedup:\n\n  Benchmark 1: meson compile (version = HEAD~)\n    Time (mean ± σ):      6.250 s ±  0.040 s    [User: 90.881 s, System: 21.912 s]\n    Range (min … max):    6.197 s …  6.344 s    10 runs\n\n  Benchmark 2: meson compile (version = HEAD)\n    Time (mean ± σ):      6.218 s ±  0.029 s    [User: 90.633 s, System: 22.022 s]\n    Range (min … max):    6.166 s …  6.262 s    10 runs\n\n  Summary\n    meson compile (version = HEAD) ran\n      1.01 ± 0.01 times faster than meson compile (version = HEAD~)\n\nHonestly, a 1% speedup isn't really worth it. But the change makes sense\nanyway, as we're doing the same when we build git-receive-pack(1) et al.\nSo while the speed improvement is negligible, it brings more consistency\ninto our build instructions.\n\nFor the record: I also had a look at using a custom target that\nhardlinks the files into place. But the improvement it had on our build\ntimes were not that mindblowing either, saving roundabout ~100ms in wall\ntime. So sticking with the status quo felt like the better solution as\nit is native to Meson.\n\nSigned-off-by: Patrick Steinhardt <ps@pks.im>\n---\n meson.build | 5 +++--\n 1 file changed, 3 insertions(+), 2 deletions(-)\n\ndiff --git a/meson.build b/meson.build\nindex 4fdb4c5405..fa104a3efd 100644\n--- a/meson.build\n+++ b/meson.build\n@@ -1935,12 +1935,13 @@ if curl.found()\n     dependencies: [libgit_commonmain, curl],\n   )\n \n-  test_dependencies += executable('git-remote-http',\n+  git_remote_http = executable('git-remote-http',\n     sources: 'remote-curl.c',\n     dependencies: [libgit_curl],\n     install: true,\n     install_dir: git_exec_path,\n   )\n+  test_dependencies += git_remote_http\n \n   test_dependencies += executable('git-http-fetch',\n     sources: 'http-fetch.c',\n@@ -1960,7 +1961,7 @@ if curl.found()\n \n   foreach alias : [ 'git-remote-https', 'git-remote-ftp', 'git-remote-ftps' ]\n     test_dependencies += executable(alias,\n-      sources: 'remote-curl.c',\n+      objects: git_remote_http.extract_all_objects(recursive: false),\n       dependencies: [libgit_curl],\n     )\n \n\n-- \n2.56.0.rc2.329.gd58861e689.dirty\n\n"},{"id":"553185","messageId":"20260924-pks-meson-improvements-v1-3-90b7f79f1c4e@pks.im","threadId":"66386","inReplyTo":"20260924-pks-meson-improvements-v1-0-90b7f79f1c4e@pks.im","subject":"[PATCH 3/7] meson: use precompiled headers for our test-helper","fromName":"Patrick Steinhardt","fromEmail":"ps@pks.im","sentAt":"2026-09-24T14:09:12Z","receivedAt":"2026-09-24T14:09:26Z","isPatch":true,"body":"In 671df48df8 (meson: precompile \"git-compat-util.h\", 2026-03-19) we\nhave introduced support for precompiled headers into Meson. At that time\nthough we only converted \"libgit.a\" to make use of those.\n\nNowadays though, our test-helper also consists of a bunch of code files,\nand all of these include \"git-compat-util.h\" via \"test-tool.h\" as the\nfirst header. So they're a natural target to also use precompiled\nheaders.\n\nAdapt the test-tool executable to make use of them, which results in a\nsurprisingly large speedup for clean builds:\n\n  Benchmark 1: meson compile (version = HEAD~)\n    Time (mean ± σ):      6.363 s ±  0.033 s    [User: 92.858 s, System: 22.500 s]\n    Range (min … max):    6.311 s …  6.418 s    10 runs\n\n  Benchmark 2: meson compile (version = HEAD)\n    Time (mean ± σ):      5.327 s ±  0.021 s    [User: 75.135 s, System: 20.373 s]\n    Range (min … max):    5.299 s …  5.362 s    10 runs\n\n  Summary\n    meson compile (version = HEAD) ran\n      1.19 ± 0.01 times faster than meson compile (version = HEAD~)\n\nSigned-off-by: Patrick Steinhardt <ps@pks.im>\n---\n t/helper/meson.build | 1 +\n 1 file changed, 1 insertion(+)\n\ndiff --git a/t/helper/meson.build b/t/helper/meson.build\nindex 3235f10ab8..ae513b4cdc 100644\n--- a/t/helper/meson.build\n+++ b/t/helper/meson.build\n@@ -83,6 +83,7 @@ test_tool_sources = [\n \n test_tool = executable('test-tool',\n   sources: test_tool_sources,\n+  c_pch: '../../tools/precompiled.h',\n   dependencies: [libgit_commonmain],\n )\n bin_wrappers += test_tool\n\n-- \n2.56.0.rc2.329.gd58861e689.dirty\n\n"},{"id":"553186","messageId":"20260924-pks-meson-improvements-v1-4-90b7f79f1c4e@pks.im","threadId":"66386","inReplyTo":"20260924-pks-meson-improvements-v1-0-90b7f79f1c4e@pks.im","subject":"[PATCH 4/7] meson: use precompiled headers for unit tests","fromName":"Patrick Steinhardt","fromEmail":"ps@pks.im","sentAt":"2026-09-24T14:09:13Z","receivedAt":"2026-09-24T14:09:28Z","isPatch":true,"body":"Same as in the preceding commit, our unit tests don't use precompiled\nheaders yet. In this case though it's a tiny bit more complicated to\nmake use of them, as we do not want to include \"git-compat-util.h\" for\n\"clar.c\", as that code file is a third-party implementation that is\nindependent of the Git codebase.\n\nBut there's an easy workaround: instead of linking that file into the\nexecutable directly, we can easily adapt it to be built into a static\nlibrary first. Like that we can trivially have separate build flags for\nthat one file.\n\nDo so and adapt the remaining sources to use precompiled headers. This\nresults in a small but noticeable build speedup:\n\n  Benchmark 1: meson compile (version = HEAD~)\n    Time (mean ± σ):      5.343 s ±  0.019 s    [User: 75.478 s, System: 20.382 s]\n    Range (min … max):    5.308 s …  5.376 s    10 runs\n\n  Benchmark 2: meson compile (version = HEAD)\n    Time (mean ± σ):      5.077 s ±  0.017 s    [User: 70.557 s, System: 19.999 s]\n    Range (min … max):    5.047 s …  5.103 s    10 runs\n\n  Summary\n    meson compile (version = HEAD) ran\n      1.05 ± 0.01 times faster than meson compile (version = HEAD~)\n\nSigned-off-by: Patrick Steinhardt <ps@pks.im>\n---\n t/meson.build | 10 ++++++++--\n 1 file changed, 8 insertions(+), 2 deletions(-)\n\ndiff --git a/t/meson.build b/t/meson.build\nindex 3ca7b27104..9f1ee9ad59 100644\n--- a/t/meson.build\n+++ b/t/meson.build\n@@ -30,7 +30,6 @@ clar_test_suites = [\n ]\n \n clar_sources = [\n-  'unit-tests/clar/clar.c',\n   'unit-tests/unit-test.c',\n   'unit-tests/lib-oid.c',\n   'unit-tests/lib-reftable.c'\n@@ -49,7 +48,7 @@ clar_decls_h = custom_target(\n )\n clar_sources += clar_decls_h\n \n-clar_sources += custom_target(\n+clar_suite_h = custom_target(\n   input: clar_decls_h,\n   output: 'clar.suite',\n   command : [\n@@ -66,6 +65,13 @@ clar_unit_tests = executable('unit-tests',\n   c_args: [\n     '-DGIT_CLAR_DECLS_H=\"' + clar_decls_h.full_path() + '\"',\n   ],\n+  c_pch: '../tools/precompiled.h',\n+  link_with: static_library('clar',\n+    sources: [\n+      'unit-tests/clar/clar.c',\n+      clar_suite_h,\n+    ],\n+  ),\n   dependencies: [libgit_commonmain],\n )\n test('unit-tests', clar_unit_tests, kwargs: test_kwargs)\n\n-- \n2.56.0.rc2.329.gd58861e689.dirty\n\n"},{"id":"553187","messageId":"20260924-pks-meson-improvements-v1-5-90b7f79f1c4e@pks.im","threadId":"66386","inReplyTo":"20260924-pks-meson-improvements-v1-0-90b7f79f1c4e@pks.im","subject":"[PATCH 5/7] meson: fix outdated completion helpers","fromName":"Patrick Steinhardt","fromEmail":"ps@pks.im","sentAt":"2026-09-24T14:09:14Z","receivedAt":"2026-09-24T14:09:30Z","isPatch":true,"body":"When using Meson 1.3.0 or newer, we use `fs.copyfile()` to put our\ncompletion helpers into the expected location so that our test suite can\nfind these scripts. Naturally, we thus also add these scripts to our\ntest dependencies so that we know to build them before executing tests.\nBut there's an issue here: we include the \"contrib/completion\" subdir\nafter we have already wired up our tests, so any dependencies we add\nhere are not being honored correctly. This has the consequence that we\ndon't know to copy around these completion helpers when we execute\ntests, and one has to manually `meson compile` beforehand.\n\nThe interesting part here is that the code path we use with older\nversions of Meson don't suffer from the same problem as they use\n`configure_file()`, and that function will always run whenever the\nsource file changes. It's conceptually correct to use `fs.copyfile()`\ninstead, but given that it's mostly creating problems for us it does not\nreally seem sensible to continue using it.\n\nAdapt the build instructions to unconditionally use `configure_file()`\nto fix this issue.\n\nA better fix would arguably be to promote our shell completion helpers\nout of \"contrib/\" -- they are an important part of Git nowadays, and\nthese helpers get installed on lots of platforms. If so, we could also\nfix the order of subdir includes so that test dependencies are properly\nhonored. But that feels like a bigger change, so that's left for a\nfuture patch series.\n\nSigned-off-by: Patrick Steinhardt <ps@pks.im>\n---\n contrib/completion/meson.build | 38 +++++++++++++++-----------------------\n 1 file changed, 15 insertions(+), 23 deletions(-)\n\ndiff --git a/contrib/completion/meson.build b/contrib/completion/meson.build\nindex 576125b083..4483c5be3e 100644\n--- a/contrib/completion/meson.build\n+++ b/contrib/completion/meson.build\n@@ -4,31 +4,23 @@ foreach script : [\n   'git-completion.zsh',\n   'git-prompt.sh'\n ]\n-  if meson.version().version_compare('>=1.3.0')\n-    test_dependencies += fs.copyfile(script)\n-  else\n-    configure_file(\n-      input: script,\n-      output: script,\n-      copy: true,\n-    )\n-  endif\n+  # Note that we intentionally don't use `fs.copyfile()` here because we'd have\n+  # to add it to our test dependencies in that case, but that creates a\n+  # chicken-and-egg situation between including \"t/\" or \"contrib/\" first.\n+  configure_file(\n+    input: script,\n+    output: script,\n+    copy: true,\n+  )\n endforeach\n \n # We have to discern between the test dependency and the installed file. Our\n # tests assume the completion scripts to have the same name as the in-tree\n # files, but the installed filenames need to match the executable's basename.\n-if meson.version().version_compare('>=1.3.0')\n-  fs.copyfile('git-completion.bash', 'git',\n-    install: true,\n-    install_dir: get_option('datadir') / 'bash-completion/completions',\n-  )\n-else\n-  configure_file(\n-    input: 'git-completion.bash',\n-    output: 'git',\n-    copy: true,\n-    install: true,\n-    install_dir: get_option('datadir') / 'bash-completion/completions',\n-  )\n-endif\n+configure_file(\n+  input: 'git-completion.bash',\n+  output: 'git',\n+  copy: true,\n+  install: true,\n+  install_dir: get_option('datadir') / 'bash-completion/completions',\n+)\n\n-- \n2.56.0.rc2.329.gd58861e689.dirty\n\n"},{"id":"553188","messageId":"20260924-pks-meson-improvements-v1-6-90b7f79f1c4e@pks.im","threadId":"66386","inReplyTo":"20260924-pks-meson-improvements-v1-0-90b7f79f1c4e@pks.im","subject":"[PATCH 6/7] meson: update wrappers","fromName":"Patrick Steinhardt","fromEmail":"ps@pks.im","sentAt":"2026-09-24T14:09:15Z","receivedAt":"2026-09-24T14:09:34Z","isPatch":true,"body":"Our subproject wrappers are used on platforms that do not have the\nrespective dependencies available. Most importantly, this can be used on\nWindows to have an almost-dependency-free build of Git.\n\nUpdate these wrappers via `meson wrap update`.\n\nSigned-off-by: Patrick Steinhardt <ps@pks.im>\n---\n subprojects/curl.wrap    | 19 ++++++++++---------\n subprojects/expat.wrap   | 21 +++++++++++----------\n subprojects/openssl.wrap | 23 +++++++++++------------\n subprojects/pcre2.wrap   | 24 +++++++++++-------------\n subprojects/zlib.wrap    | 21 +++++++++++----------\n 5 files changed, 54 insertions(+), 54 deletions(-)\n\ndiff --git a/subprojects/curl.wrap b/subprojects/curl.wrap\nindex f7e384b85c..d73b88b75e 100644\n--- a/subprojects/curl.wrap\n+++ b/subprojects/curl.wrap\n@@ -1,13 +1,14 @@\n [wrap-file]\n-directory = curl-8.10.1\n-source_url = https://github.com/curl/curl/releases/download/curl-8_10_1/curl-8.10.1.tar.xz\n-source_fallback_url = https://github.com/mesonbuild/wrapdb/releases/download/curl_8.10.1-1/curl-8.10.1.tar.xz\n-source_filename = curl-8.10.1.tar.xz\n-source_hash = 73a4b0e99596a09fa5924a4fb7e4b995a85fda0d18a2c02ab9cf134bebce04ee\n-patch_filename = curl_8.10.1-1_patch.zip\n-patch_url = https://wrapdb.mesonbuild.com/v2/curl_8.10.1-1/get_patch\n-patch_hash = 707c28f35fc9b0e8d68c0c2800712007612f922a31da9637ce706a2159f3ddd8\n-wrapdb_version = 8.10.1-1\n+directory = curl-8.12.1\n+source_url = https://github.com/curl/curl/releases/download/curl-8_12_1/curl-8.12.1.tar.xz\n+source_fallback_url = https://wrapdb.mesonbuild.com/v2/curl_8.12.1-2/get_source/curl-8.12.1.tar.xz\n+source_filename = curl-8.12.1.tar.xz\n+source_hash = 0341f1ed97a26c811abaebd37d62b833956792b7607ea3f15d001613c76de202\n+patch_filename = curl_8.12.1-2_patch.zip\n+patch_url = https://wrapdb.mesonbuild.com/v2/curl_8.12.1-2/get_patch\n+patch_fallback_url = https://github.com/mesonbuild/wrapdb/releases/download/curl_8.12.1-2/curl_8.12.1-2_patch.zip\n+patch_hash = bfd8886cc76ccfab52b1b0472e6c682cdf5374a4c30be2427326f2f495de4eba\n+wrapdb_version = 8.12.1-2\n \n [provide]\n dependency_names = libcurl\ndiff --git a/subprojects/expat.wrap b/subprojects/expat.wrap\nindex 0e9292f97b..67c4ae872f 100644\n--- a/subprojects/expat.wrap\n+++ b/subprojects/expat.wrap\n@@ -1,13 +1,14 @@\n [wrap-file]\n-directory = expat-2.7.1\n-source_url = https://github.com/libexpat/libexpat/releases/download/R_2_7_1/expat-2.7.1.tar.xz\n-source_filename = expat-2.7.1.tar.bz2\n-source_hash = 354552544b8f99012e5062f7d570ec77f14b412a3ff5c7d8d0dae62c0d217c30\n-patch_filename = expat_2.7.1-1_patch.zip\n-patch_url = https://wrapdb.mesonbuild.com/v2/expat_2.7.1-1/get_patch\n-patch_hash = fe28cbbc427a7c9787d08b969ad54d19f59d8dd18294b4a18651cecfc789d4ef\n-source_fallback_url = https://github.com/mesonbuild/wrapdb/releases/download/expat_2.7.1-1/expat-2.7.1.tar.bz2\n-wrapdb_version = 2.7.1-1\n+directory = expat-2.8.4\n+source_url = https://github.com/libexpat/libexpat/releases/download/R_2_8_4/expat-2.8.4.tar.xz\n+source_filename = expat-2.8.4.tar.xz\n+source_hash = 656ae1cc8da3b4ea513bb4e254f33e6243938084c0ec6239da873376b09985a7\n+source_fallback_url = https://wrapdb.mesonbuild.com/v2/expat_2.8.4-1/get_source/expat-2.8.4.tar.xz\n+patch_filename = expat_2.8.4-1_patch.zip\n+patch_url = https://wrapdb.mesonbuild.com/v2/expat_2.8.4-1/get_patch\n+patch_fallback_url = https://github.com/mesonbuild/wrapdb/releases/download/expat_2.8.4-1/expat_2.8.4-1_patch.zip\n+patch_hash = 221c537a6cfd8d55ea2d41600ee7f32d8c0659cf6e41511e9e7a2f294b21cb92\n+wrapdb_version = 2.8.4-1\n \n [provide]\n-expat = expat_dep\n+dependency_names = expat\ndiff --git a/subprojects/openssl.wrap b/subprojects/openssl.wrap\nindex 873d55106e..e775bb104f 100644\n--- a/subprojects/openssl.wrap\n+++ b/subprojects/openssl.wrap\n@@ -1,15 +1,14 @@\n [wrap-file]\n-directory = openssl-3.0.8\n-source_url = https://www.openssl.org/source/openssl-3.0.8.tar.gz\n-source_filename = openssl-3.0.8.tar.gz\n-source_hash = 6c13d2bf38fdf31eac3ce2a347073673f5d63263398f1f69d0df4a41253e4b3e\n-patch_filename = openssl_3.0.8-3_patch.zip\n-patch_url = https://wrapdb.mesonbuild.com/v2/openssl_3.0.8-3/get_patch\n-patch_hash = 300da189e106942347d61a4a4295aa2edbcf06184f8d13b4cee0bed9fb936963\n-source_fallback_url = https://github.com/mesonbuild/wrapdb/releases/download/openssl_3.0.8-3/openssl-3.0.8.tar.gz\n-wrapdb_version = 3.0.8-3\n+directory = openssl-3.0.10\n+source_url = https://www.openssl.org/source/openssl-3.0.10.tar.gz\n+source_filename = openssl-3.0.10.tar.gz\n+source_hash = 1761d4f5b13a1028b9b6f3d4b8e17feb0cedc9370f6afe61d7193d2cdce83323\n+source_fallback_url = https://wrapdb.mesonbuild.com/v2/openssl_3.0.10-1/get_source/openssl-3.0.10.tar.gz\n+patch_filename = openssl_3.0.10-1_patch.zip\n+patch_url = https://wrapdb.mesonbuild.com/v2/openssl_3.0.10-1/get_patch\n+patch_fallback_url = https://github.com/mesonbuild/wrapdb/releases/download/openssl_3.0.10-1/openssl_3.0.10-1_patch.zip\n+patch_hash = 2d142b7e3b1ac092cf67cb4891594c4a2d044aa92624c617a8dcbfe4f056d907\n+wrapdb_version = 3.0.10-1\n \n [provide]\n-libcrypto = libcrypto_dep\n-libssl = libssl_dep\n-openssl = openssl_dep\n+dependency_names = libcrypto, libssl, openssl\ndiff --git a/subprojects/pcre2.wrap b/subprojects/pcre2.wrap\nindex f45c968e2f..a2ff6268dc 100644\n--- a/subprojects/pcre2.wrap\n+++ b/subprojects/pcre2.wrap\n@@ -1,16 +1,14 @@\n [wrap-file]\n-directory = pcre2-10.45\n-source_url = https://github.com/PCRE2Project/pcre2/releases/download/pcre2-10.45/pcre2-10.45.tar.bz2\n-source_filename = pcre2-10.45.tar.bz2\n-source_hash = 21547f3516120c75597e5b30a992e27a592a31950b5140e7b8bfde3f192033c4\n-patch_filename = pcre2_10.45-2_patch.zip\n-patch_url = https://wrapdb.mesonbuild.com/v2/pcre2_10.45-2/get_patch\n-patch_hash = 7c6f34b703708652a404f9dc2769c67658c437b6043573295fa3428a9b7a6807\n-source_fallback_url = https://github.com/mesonbuild/wrapdb/releases/download/pcre2_10.45-2/pcre2-10.45.tar.bz2\n-wrapdb_version = 10.45-2\n+directory = pcre2-10.48\n+source_url = https://github.com/PCRE2Project/pcre2/releases/download/pcre2-10.48/pcre2-10.48.tar.bz2\n+source_filename = pcre2-10.48.tar.bz2\n+source_hash = b6c68fdf6f3ac31388b50aa89ff0fc49c00c987c16e7b5146491d12003f2c8ed\n+source_fallback_url = https://wrapdb.mesonbuild.com/v2/pcre2_10.48-1/get_source/pcre2-10.48.tar.bz2\n+patch_filename = pcre2_10.48-1_patch.zip\n+patch_url = https://wrapdb.mesonbuild.com/v2/pcre2_10.48-1/get_patch\n+patch_fallback_url = https://github.com/mesonbuild/wrapdb/releases/download/pcre2_10.48-1/pcre2_10.48-1_patch.zip\n+patch_hash = fbcc964804a921b02ea78fc0ff1558d5999b224db8361087828e30012023525c\n+wrapdb_version = 10.48-1\n \n [provide]\n-libpcre2-8 = libpcre2_8\n-libpcre2-16 = libpcre2_16\n-libpcre2-32 = libpcre2_32\n-libpcre2-posix = libpcre2_posix\n+dependency_names = libpcre2-8, libpcre2-16, libpcre2-32, libpcre2-posix\ndiff --git a/subprojects/zlib.wrap b/subprojects/zlib.wrap\nindex aa14de1774..0626401ac2 100644\n--- a/subprojects/zlib.wrap\n+++ b/subprojects/zlib.wrap\n@@ -1,13 +1,14 @@\n [wrap-file]\n-directory = zlib-1.3.1\n-source_url = http://zlib.net/fossils/zlib-1.3.1.tar.gz\n-source_fallback_url = https://github.com/mesonbuild/wrapdb/releases/download/zlib_1.3.1-1/zlib-1.3.1.tar.gz\n-source_filename = zlib-1.3.1.tar.gz\n-source_hash = 9a93b2b7dfdac77ceba5a558a580e74667dd6fede4585b91eefb60f03b72df23\n-patch_filename = zlib_1.3.1-1_patch.zip\n-patch_url = https://wrapdb.mesonbuild.com/v2/zlib_1.3.1-1/get_patch\n-patch_hash = e79b98eb24a75392009cec6f99ca5cdca9881ff20bfa174e8b8926d5c7a47095\n-wrapdb_version = 1.3.1-1\n+directory = zlib-1.3.2\n+source_url = https://zlib.net/zlib-1.3.2.tar.xz\n+source_fallback_url = https://wrapdb.mesonbuild.com/v2/zlib_1.3.2-1/get_source/zlib-1.3.2.tar.xz\n+source_filename = zlib-1.3.2.tar.xz\n+source_hash = d7a0654783a4da529d1bb793b7ad9c3318020af77667bcae35f95d0e42a792f3\n+patch_filename = zlib_1.3.2-1_patch.zip\n+patch_url = https://wrapdb.mesonbuild.com/v2/zlib_1.3.2-1/get_patch\n+patch_fallback_url = https://github.com/mesonbuild/wrapdb/releases/download/zlib_1.3.2-1/zlib_1.3.2-1_patch.zip\n+patch_hash = 5ae7a2e92f823df118cfb8c1b23d94e3117864392b3446581d669049b2fba6dd\n+wrapdb_version = 1.3.2-1\n \n [provide]\n-zlib = zlib_dep\n+dependency_names = zlib\n\n-- \n2.56.0.rc2.329.gd58861e689.dirty\n\n"},{"id":"553189","messageId":"20260924-pks-meson-improvements-v1-7-90b7f79f1c4e@pks.im","threadId":"66386","inReplyTo":"20260924-pks-meson-improvements-v1-0-90b7f79f1c4e@pks.im","subject":"[PATCH 7/7] gitlab-ci: fix hanging MSVC jobs","fromName":"Patrick Steinhardt","fromEmail":"ps@pks.im","sentAt":"2026-09-24T14:09:16Z","receivedAt":"2026-09-24T14:09:36Z","isPatch":true,"body":"Starting with GitLab Runner 19.x, the runner executes `git credential\nreject` in its cleanup stage. This has bad interactions with our build\nenvironment because we install our own version of PortableGit, and the\nrunner picks up that version of Git. The consequence is that we invoke\nPortableGit's default credential manager, which is Git Credential\nManager for Windows. GCM then tries to use Windows Credential Manager,\nbut it cannot and thus the job hangs in its cleanup phase forever.\n\nFix this hang by unsetting the credential helper after installing\nPortableGit. This means that `git credential reject` becomes a no-op,\nand thus the cleanup succeeds again.\n\nSigned-off-by: Patrick Steinhardt <ps@pks.im>\n---\n ci/install-dependencies.ps1 | 8 ++++++++\n 1 file changed, 8 insertions(+)\n\ndiff --git a/ci/install-dependencies.ps1 b/ci/install-dependencies.ps1\nindex e3b367fa54..2ceb5dd99a 100755\n--- a/ci/install-dependencies.ps1\n+++ b/ci/install-dependencies.ps1\n@@ -53,3 +53,11 @@ Invoke-Installer msiexec.exe @('/i', $mesonMsi, 'INSTALLDIR=C:\\Meson', '/quiet',\n $rustMsi = Get-Installer \"rust.msi\" `\n     \"https://static.rust-lang.org/dist/rust-$RustVersion-x86_64-pc-windows-msvc.msi\"\n Invoke-Installer msiexec.exe @('/i', $rustMsi, 'INSTALLDIR=C:\\Rust', 'ADDLOCAL=Rustc,Cargo,Std', '/quiet', '/norestart')\n+\n+# Disable Git Credential Manager, which is auto-configured by PortableGit.\n+# GitLab's runner picks up this Git in its cleanup stage and runs `git\n+# credential reject`, which hangs in GCM and makes the job time out.\n+& \"C:\\Program Files\\Git\\bin\\git.exe\" config unset --all --system credential.helper\n+if ($LASTEXITCODE -ne 0 -and $LASTEXITCODE -ne 5) {\n+    throw \"Failed to unset credential.helper with exit code $LASTEXITCODE\"\n+}\n\n-- \n2.56.0.rc2.329.gd58861e689.dirty\n\n"},{"id":"553685","messageId":"CAOLa=ZQ0qVCS2Bi3QrDokBRfgtTFH9bqudYiFozHtmEzKgRVeA@mail.gmail.com","threadId":"66386","inReplyTo":"20260924-pks-meson-improvements-v1-1-90b7f79f1c4e@pks.im","subject":"Re: [PATCH 1/7] meson: avoid recompiling HTTP sources several times","fromName":"Karthik Nayak","fromEmail":"karthik.188@gmail.com","sentAt":"2026-09-30T12:00:48Z","receivedAt":"2026-09-30T12:00:52Z","isPatch":true,"body":"Patrick Steinhardt <ps@pks.im> writes:\n\n> We only link curl into a subset of our subcommands. Consequently, as\n> both \"http.c\" and \"http-walker.c\" depend on curl, we don't compile these\n> into \"libgit.a\" but instead only link those into the commands that\n> depend on curl.\n>\n> In Meson, we wire these dependencies into the target executables by\n> using the `sources:` keyword. But this has the consequence that we're\n> recompiling those multiple several times, once for every different\n> command they are linked into. In fact, each of these sources is compiled\n> seven times, which of course has an impact on compilation speed.\n>\n> Fix this issue by instead linking these into a static library so that\n> they only need to be compiled once. This gives us an almost 10% speedup\n> in a clean build:\n>\n>   Benchmark 1: meson compile (version = HEAD~)\n>     Time (mean ± σ):      6.781 s ±  0.052 s    [User: 100.775 s, System: 22.954 s]\n>     Range (min … max):    6.709 s …  6.867 s    10 runs\n>\n>   Benchmark 2: meson compile (version = HEAD)\n>     Time (mean ± σ):      6.274 s ±  0.021 s    [User: 91.882 s, System: 22.092 s]\n>     Range (min … max):    6.242 s …  6.306 s    10 runs\n>\n>   Summary\n>     meson compile (version = HEAD) ran\n>       1.08 ± 0.01 times faster than meson compile (version = HEAD~)\n>\n> Signed-off-by: Patrick Steinhardt <ps@pks.im>\n> ---\n>  meson.build | 11 +++++++----\n>  1 file changed, 7 insertions(+), 4 deletions(-)\n>\n> diff --git a/meson.build b/meson.build\n> index 0a95d90d21..4fdb4c5405 100644\n> --- a/meson.build\n> +++ b/meson.build\n> @@ -1925,10 +1925,13 @@ bin_wrappers += executable('scalar',\n>\n>  if curl.found()\n>    libgit_curl = declare_dependency(\n> -    sources: [\n> -      'http.c',\n> -      'http-walker.c',\n> -    ],\n> +    link_with: static_library('git-curl',\n> +      sources: [\n> +        'http.c',\n> +        'http-walker.c',\n> +      ],\n> +      dependencies: [libgit_commonmain, curl],\n> +    ),\n\nSo there are 7 locations which mark `libgit_curl` as a dependency,\nearlier this would have recompiled the two sources here each time for\neach of the 7 locations.\n\nNow we build a static library and declare the dependency to be linked\nwith the static library. Looks good.\n\n>      dependencies: [libgit_commonmain, curl],\n>    )\n>\n>\n> --\n> 2.56.0.rc2.329.gd58861e689.dirty\n"},{"id":"553689","messageId":"CAOLa=ZRdeuYTv4f-1EEJmF+Dp76kDvz5+dWNkmnuMDjipDyV5w@mail.gmail.com","threadId":"66386","inReplyTo":"20260924-pks-meson-improvements-v1-3-90b7f79f1c4e@pks.im","subject":"Re: [PATCH 3/7] meson: use precompiled headers for our test-helper","fromName":"Karthik Nayak","fromEmail":"karthik.188@gmail.com","sentAt":"2026-09-30T12:20:00Z","receivedAt":"2026-09-30T12:20:03Z","isPatch":true,"body":"Patrick Steinhardt <ps@pks.im> writes:\n\n> In 671df48df8 (meson: precompile \"git-compat-util.h\", 2026-03-19) we\n> have introduced support for precompiled headers into Meson. At that time\n> though we only converted \"libgit.a\" to make use of those.\n>\n> Nowadays though, our test-helper also consists of a bunch of code files,\n> and all of these include \"git-compat-util.h\" via \"test-tool.h\" as the\n> first header. So they're a natural target to also use precompiled\n> headers.\n>\n> Adapt the test-tool executable to make use of them, which results in a\n> surprisingly large speedup for clean builds:\n>\n>   Benchmark 1: meson compile (version = HEAD~)\n>     Time (mean ± σ):      6.363 s ±  0.033 s    [User: 92.858 s, System: 22.500 s]\n>     Range (min … max):    6.311 s …  6.418 s    10 runs\n>\n>   Benchmark 2: meson compile (version = HEAD)\n>     Time (mean ± σ):      5.327 s ±  0.021 s    [User: 75.135 s, System: 20.373 s]\n>     Range (min … max):    5.299 s …  5.362 s    10 runs\n>\n>   Summary\n>     meson compile (version = HEAD) ran\n>       1.19 ± 0.01 times faster than meson compile (version = HEAD~)\n>\n> Signed-off-by: Patrick Steinhardt <ps@pks.im>\n> ---\n>  t/helper/meson.build | 1 +\n>  1 file changed, 1 insertion(+)\n>\n> diff --git a/t/helper/meson.build b/t/helper/meson.build\n> index 3235f10ab8..ae513b4cdc 100644\n> --- a/t/helper/meson.build\n> +++ b/t/helper/meson.build\n> @@ -83,6 +83,7 @@ test_tool_sources = [\n>\n>  test_tool = executable('test-tool',\n>    sources: test_tool_sources,\n> +  c_pch: '../../tools/precompiled.h',\n>    dependencies: [libgit_commonmain],\n>  )\n>  bin_wrappers += test_tool\n>\n\nSeems like a straightforward win. Nice to see.\n\n> --\n> 2.56.0.rc2.329.gd58861e689.dirty\n"},{"id":"553690","messageId":"CAOLa=ZSMixcSF3enAPNK74U4Qn93veafvodpiPpgZNJEnP+M3A@mail.gmail.com","threadId":"66386","inReplyTo":"20260924-pks-meson-improvements-v1-6-90b7f79f1c4e@pks.im","subject":"Re: [PATCH 6/7] meson: update wrappers","fromName":"Karthik Nayak","fromEmail":"karthik.188@gmail.com","sentAt":"2026-09-30T12:24:31Z","receivedAt":"2026-09-30T12:24:34Z","isPatch":true,"body":"Patrick Steinhardt <ps@pks.im> writes:\n\n> Our subproject wrappers are used on platforms that do not have the\n> respective dependencies available. Most importantly, this can be used on\n> Windows to have an almost-dependency-free build of Git.\n>\n> Update these wrappers via `meson wrap update`.\n>\n\nOkay, I've verified this locally and it matches.\n\n[snip]\n"},{"id":"553691","messageId":"CAOLa=ZShU_FhuudX6JSPO7q6w9xBR-QRyEd1UbCZ15o-S3xtqQ@mail.gmail.com","threadId":"66386","inReplyTo":"20260924-pks-meson-improvements-v1-7-90b7f79f1c4e@pks.im","subject":"Re: [PATCH 7/7] gitlab-ci: fix hanging MSVC jobs","fromName":"Karthik Nayak","fromEmail":"karthik.188@gmail.com","sentAt":"2026-09-30T12:26:17Z","receivedAt":"2026-09-30T12:26:19Z","isPatch":true,"body":"FPatrick Steinhardt <ps@pks.im> writes:\n\n> Starting with GitLab Runner 19.x, the runner executes `git credential\n> reject` in its cleanup stage. This has bad interactions with our build\n> environment because we install our own version of PortableGit, and the\n> runner picks up that version of Git. The consequence is that we invoke\n> PortableGit's default credential manager, which is Git Credential\n> Manager for Windows. GCM then tries to use Windows Credential Manager,\n> but it cannot and thus the job hangs in its cleanup phase forever.\n>\n> Fix this hang by unsetting the credential helper after installing\n> PortableGit. This means that `git credential reject` becomes a no-op,\n> and thus the cleanup succeeds again.\n>\n> Signed-off-by: Patrick Steinhardt <ps@pks.im>\n> ---\n>  ci/install-dependencies.ps1 | 8 ++++++++\n>  1 file changed, 8 insertions(+)\n>\n> diff --git a/ci/install-dependencies.ps1 b/ci/install-dependencies.ps1\n> index e3b367fa54..2ceb5dd99a 100755\n> --- a/ci/install-dependencies.ps1\n> +++ b/ci/install-dependencies.ps1\n> @@ -53,3 +53,11 @@ Invoke-Installer msiexec.exe @('/i', $mesonMsi, 'INSTALLDIR=C:\\Meson', '/quiet',\n>  $rustMsi = Get-Installer \"rust.msi\" `\n>      \"https://static.rust-lang.org/dist/rust-$RustVersion-x86_64-pc-windows-msvc.msi\"\n>  Invoke-Installer msiexec.exe @('/i', $rustMsi, 'INSTALLDIR=C:\\Rust', 'ADDLOCAL=Rustc,Cargo,Std', '/quiet', '/norestart')\n> +\n> +# Disable Git Credential Manager, which is auto-configured by PortableGit.\n> +# GitLab's runner picks up this Git in its cleanup stage and runs `git\n> +# credential reject`, which hangs in GCM and makes the job time out.\n> +& \"C:\\Program Files\\Git\\bin\\git.exe\" config unset --all --system credential.helper\n> +if ($LASTEXITCODE -ne 0 -and $LASTEXITCODE -ne 5) {\n> +    throw \"Failed to unset credential.helper with exit code $LASTEXITCODE\"\n> +}\n>\n\nNice, for reference the runner team also has a fix on their end to\ndisable credential.helper on their side too [1].\n\n[1]: gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/7470\n> --\n> 2.56.0.rc2.329.gd58861e689.dirty\n"},{"id":"553692","messageId":"CAOLa=ZS8Exa_WkMLiFNspeYaKFf40eOM19ZgecC=yTnFEAhMzQ@mail.gmail.com","threadId":"66386","inReplyTo":"20260924-pks-meson-improvements-v1-0-90b7f79f1c4e@pks.im","subject":"Re: [PATCH 0/7] A couple of Meson improvements","fromName":"Karthik Nayak","fromEmail":"karthik.188@gmail.com","sentAt":"2026-09-30T12:26:37Z","receivedAt":"2026-09-30T12:26:40Z","isPatch":true,"body":"Patrick Steinhardt <ps@pks.im> writes:\n\n> Hi,\n>\n> this patch series contains a couple of improvements for Meson:\n>\n>   - Clean build times are sped up, going from ~6.8 seconds to ~5.0\n>     seconds for a full build.\n>\n>   - A test issue is fixed that causes shell completion tests to fail\n>     because the scripts are not properly updated.\n>\n>   - Our subproject wrappers are updated to current versions.\n>\n>   - A fix for GitLab's msvc-meson jobs that are broken right now due to\n>     a change in our runner images. See [1] for the now-working\n>     msvc-meson jobs. Note though that the MinGW-based jobs are still\n>     broken, but Dscho has been sending fixes for that already.\n>\n> Thanks!\n>\n> Patrick\n>\n\nThe patches look good. The speedup is much appreciated.\n\n> ---\n> Patrick Steinhardt (7):\n>       meson: avoid recompiling HTTP sources several times\n>       meson: don't recompile git-remote-http(1) multiple times for tests\n>       meson: use precompiled headers for our test-helper\n>       meson: use precompiled headers for unit tests\n>       meson: fix outdated completion helpers\n>       meson: update wrappers\n>       gitlab-ci: fix hanging MSVC jobs\n>\n>  ci/install-dependencies.ps1    |  8 ++++++++\n>  contrib/completion/meson.build | 38 +++++++++++++++-----------------------\n>  meson.build                    | 16 ++++++++++------\n>  subprojects/curl.wrap          | 19 ++++++++++---------\n>  subprojects/expat.wrap         | 21 +++++++++++----------\n>  subprojects/openssl.wrap       | 23 +++++++++++------------\n>  subprojects/pcre2.wrap         | 24 +++++++++++-------------\n>  subprojects/zlib.wrap          | 21 +++++++++++----------\n>  t/helper/meson.build           |  1 +\n>  t/meson.build                  | 10 ++++++++--\n>  10 files changed, 96 insertions(+), 85 deletions(-)\n>\n>\n> ---\n> base-commit: 0f8e75abebff0877cae681a3d5ff31ac47f54220\n> change-id: 20260924-pks-meson-improvements-b7ed9a48ed4e\n"},{"id":"553693","messageId":"ar0FJP9cAWFY7SZa@pks.im","threadId":"66386","inReplyTo":"CAOLa=ZShU_FhuudX6JSPO7q6w9xBR-QRyEd1UbCZ15o-S3xtqQ@mail.gmail.com","subject":"Re: [PATCH 7/7] gitlab-ci: fix hanging MSVC jobs","fromName":"Patrick Steinhardt","fromEmail":"ps@pks.im","sentAt":"2026-09-30T12:48:36Z","receivedAt":"2026-09-30T12:48:44Z","isPatch":true,"body":"On Wed, Sep 30, 2026 at 05:26:17AM -0700, Karthik Nayak wrote:\n> Patrick Steinhardt <ps@pks.im> writes:\n> > diff --git a/ci/install-dependencies.ps1 b/ci/install-dependencies.ps1\n> > index e3b367fa54..2ceb5dd99a 100755\n> > --- a/ci/install-dependencies.ps1\n> > +++ b/ci/install-dependencies.ps1\n> > @@ -53,3 +53,11 @@ Invoke-Installer msiexec.exe @('/i', $mesonMsi, 'INSTALLDIR=C:\\Meson', '/quiet',\n> >  $rustMsi = Get-Installer \"rust.msi\" `\n> >      \"https://static.rust-lang.org/dist/rust-$RustVersion-x86_64-pc-windows-msvc.msi\"\n> >  Invoke-Installer msiexec.exe @('/i', $rustMsi, 'INSTALLDIR=C:\\Rust', 'ADDLOCAL=Rustc,Cargo,Std', '/quiet', '/norestart')\n> > +\n> > +# Disable Git Credential Manager, which is auto-configured by PortableGit.\n> > +# GitLab's runner picks up this Git in its cleanup stage and runs `git\n> > +# credential reject`, which hangs in GCM and makes the job time out.\n> > +& \"C:\\Program Files\\Git\\bin\\git.exe\" config unset --all --system credential.helper\n> > +if ($LASTEXITCODE -ne 0 -and $LASTEXITCODE -ne 5) {\n> > +    throw \"Failed to unset credential.helper with exit code $LASTEXITCODE\"\n> > +}\n> >\n> \n> Nice, for reference the runner team also has a fix on their end to\n> disable credential.helper on their side too [1].\n> \n> [1]: gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/7470\n\nYeah, I've seen that already, but thanks for pointing this out to the\nmailing list. I guess it makes sense to apply this patch anyway so that\nwe don't have this issue anymore with the current-broken version of the\nrunner.\n\nThanks!\n\nPatrick\n"},{"id":"554154","messageId":"74b22ec2-280e-4fca-9f5b-c21a7c12a78f@gmail.com","threadId":"66386","inReplyTo":"20260924-pks-meson-improvements-v1-1-90b7f79f1c4e@pks.im","subject":"Re: [PATCH 1/7] meson: avoid recompiling HTTP sources several times","fromName":"Kaartic Sivaraam","fromEmail":"kaartic.sivaraam@gmail.com","sentAt":"2026-10-05T08:03:46Z","receivedAt":"2026-10-05T08:03:50Z","isPatch":true,"body":"On 9/24/26 19:39, Patrick Steinhardt wrote:\n> We only link curl into a subset of our subcommands. Consequently, as\n> both \"http.c\" and \"http-walker.c\" depend on curl, we don't compile these\n> into \"libgit.a\" but instead only link those into the commands that\n> depend on curl.\n> \n> In Meson, we wire these dependencies into the target executables by\n> using the `sources:` keyword. But this has the consequence that we're\n> recompiling those multiple several times, once for every different\n\ns/multiple several/multiple/\n\nRest of the patch look good to me.\n\n-- \nSivaraam\n\n"},{"id":"554159","messageId":"eb0432fa-a595-4690-bf13-baffb306cc3a@gmail.com","threadId":"66386","inReplyTo":"20260924-pks-meson-improvements-v1-4-90b7f79f1c4e@pks.im","subject":"Re: [PATCH 4/7] meson: use precompiled headers for unit tests","fromName":"Kaartic Sivaraam","fromEmail":"kaartic.sivaraam@gmail.com","sentAt":"2026-10-05T09:34:16Z","receivedAt":"2026-10-05T09:34:24Z","isPatch":true,"body":"On 9/24/26 19:39, Patrick Steinhardt wrote:\n> \n> diff --git a/t/meson.build b/t/meson.build\n> index 3ca7b27104..9f1ee9ad59 100644\n> --- a/t/meson.build\n> +++ b/t/meson.build\n> @@ -30,7 +30,6 @@ clar_test_suites = [\n>   ]\n>   \n>   clar_sources = [\n> -  'unit-tests/clar/clar.c',\n>     'unit-tests/unit-test.c',\n>     'unit-tests/lib-oid.c',\n>     'unit-tests/lib-reftable.c'\n> @@ -49,7 +48,7 @@ clar_decls_h = custom_target(\n>   )\n>   clar_sources += clar_decls_h\n>   \n> -clar_sources += custom_target(\n> +clar_suite_h = custom_target(\n>     input: clar_decls_h,\n>     output: 'clar.suite',\n>     command : [\n> @@ -66,6 +65,13 @@ clar_unit_tests = executable('unit-tests',\n>     c_args: [\n>       '-DGIT_CLAR_DECLS_H=\"' + clar_decls_h.full_path() + '\"',\n>     ],\n> +  c_pch: '../tools/precompiled.h',\n> +  link_with: static_library('clar',\n> +    sources: [\n> +      'unit-tests/clar/clar.c',\n> +      clar_suite_h,\n> +    ],\n> +  ),\n\nCompiling this separately as a static library is cool but now clar.c \ndoes not get the libgit_c_args it was getting through the dependencies \nof  the unit-tests executable. Is this something that we need to correct?\n\n>     dependencies: [libgit_commonmain],\n>   )\n>   test('unit-tests', clar_unit_tests, kwargs: test_kwargs)\n> \n\n-- \nSivaraam\n\n"},{"id":"554160","messageId":"3de4ba2b-9b0c-499b-98bb-7077e0d7613b@gmail.com","threadId":"66386","inReplyTo":"20260924-pks-meson-improvements-v1-6-90b7f79f1c4e@pks.im","subject":"Re: [PATCH 6/7] meson: update wrappers","fromName":"Kaartic Sivaraam","fromEmail":"kaartic.sivaraam@gmail.com","sentAt":"2026-10-05T09:42:34Z","receivedAt":"2026-10-05T09:42:41Z","isPatch":true,"body":"On 9/24/26 19:39, Patrick Steinhardt wrote:\n> Our subproject wrappers are used on platforms that do not have the\n> respective dependencies available. Most importantly, this can be used on\n> Windows to have an almost-dependency-free build of Git.\n> \n> Update these wrappers via `meson wrap update`.\n> \n> Signed-off-by: Patrick Steinhardt <ps@pks.im>\n> ---\n>   subprojects/curl.wrap    | 19 ++++++++++---------\n>   subprojects/expat.wrap   | 21 +++++++++++----------\n>   subprojects/openssl.wrap | 23 +++++++++++------------\n>   subprojects/pcre2.wrap   | 24 +++++++++++-------------\n>   subprojects/zlib.wrap    | 21 +++++++++++----------\n>   5 files changed, 54 insertions(+), 54 deletions(-)\n> \n> diff --git a/subprojects/curl.wrap b/subprojects/curl.wrap\n> index f7e384b85c..d73b88b75e 100644\n> --- a/subprojects/curl.wrap\n> +++ b/subprojects/curl.wrap\n> @@ -1,13 +1,14 @@\n>   [wrap-file]\n > [ snip ]\n> -wrapdb_version = 8.10.1-1\n > [ snip ]\n> +wrapdb_version = 8.12.1-2\n>\n > diff --git a/subprojects/openssl.wrap b/subprojects/openssl.wrap> \nindex 873d55106e..e775bb104f 100644\n> --- a/subprojects/openssl.wrap\n> +++ b/subprojects/openssl.wrap\n> @@ -1,15 +1,14 @@\n>   [wrap-file]\n > [ snip ]> -wrapdb_version = 3.0.8-3\n > [ snip ]> +wrapdb_version = 3.0.10-1\n>\n\nWe are using the latest versions from the wrap DB for the above but the \nversions available via wrap DB itself appears quite old. For instance,\n\n- curl 8.12.1 was released on Feb/2025. The latest available\n   is 8.22.0 (released Sep/2026)\n\n- OpenSSL 3.0.10 was released on Aug/2023. The latest available are\n   3.0.22 (released Aug/2026) and 4.0.1 (released Jun/2026).\n\nIs this version gap something we need to document / think about?\n\n-- \nSivaraam\n\n"},{"id":"554161","messageId":"24737aed-50c5-4536-a081-938036c08588@gmail.com","threadId":"66386","inReplyTo":"20260924-pks-meson-improvements-v1-0-90b7f79f1c4e@pks.im","subject":"Re: [PATCH 0/7] A couple of Meson improvements","fromName":"Kaartic Sivaraam","fromEmail":"kaartic.sivaraam@gmail.com","sentAt":"2026-10-05T09:51:16Z","receivedAt":"2026-10-05T09:51:20Z","isPatch":true,"body":"On 9/24/26 19:39, Patrick Steinhardt wrote:\n>\n> ---\n> Patrick Steinhardt (7):\n>        meson: avoid recompiling HTTP sources several times\n>        meson: don't recompile git-remote-http(1) multiple times for tests\n>        meson: use precompiled headers for our test-helper\n>        meson: use precompiled headers for unit tests\n\nThe only other sub-directory that does not yet include the precompiled \nheader is 'compat' and leaving it out seems to be the right choice. \nIncluding it would trigger recursive compilation issues as \ngit-compat-util.h itself depends on compat/posix.h. Trying to reshuffle \nthe build code to fix this seems not worthwhile given the amount of code \nis a bit less there.\n\nA few other similar targets that were not touched by this series are \nnon-worthwhile such as 'common-main', 'git-curl' etc.\n\nApart from the few other comments in other threads, this series looks \ngood to me.\n\n-- \nSivaraam\n\n"},{"id":"554163","messageId":"asN6-vOYWYtbiBFr@pks.im","threadId":"66386","inReplyTo":"eb0432fa-a595-4690-bf13-baffb306cc3a@gmail.com","subject":"Re: [PATCH 4/7] meson: use precompiled headers for unit tests","fromName":"Patrick Steinhardt","fromEmail":"ps@pks.im","sentAt":"2026-10-05T10:24:58Z","receivedAt":"2026-10-05T10:25:05Z","isPatch":true,"body":"On Mon, Oct 05, 2026 at 03:04:16PM +0530, Kaartic Sivaraam wrote:\n> On 9/24/26 19:39, Patrick Steinhardt wrote:\n> > \n> > diff --git a/t/meson.build b/t/meson.build\n> > index 3ca7b27104..9f1ee9ad59 100644\n> > --- a/t/meson.build\n> > +++ b/t/meson.build\n> > @@ -66,6 +65,13 @@ clar_unit_tests = executable('unit-tests',\n> >     c_args: [\n> >       '-DGIT_CLAR_DECLS_H=\"' + clar_decls_h.full_path() + '\"',\n> >     ],\n> > +  c_pch: '../tools/precompiled.h',\n> > +  link_with: static_library('clar',\n> > +    sources: [\n> > +      'unit-tests/clar/clar.c',\n> > +      clar_suite_h,\n> > +    ],\n> > +  ),\n> \n> Compiling this separately as a static library is cool but now clar.c does\n> not get the libgit_c_args it was getting through the dependencies of  the\n> unit-tests executable. Is this something that we need to correct?\n\nThat's true. But I wonder whether that is maybe even an improvement.\nAfter all, the libgit_c_args contain stuff that is relevant to Git,\nonly. And given that \"clar.c\" is a vendored dependency, it does not\nreally make sense to expose e.g. \"-DWITH_BREAKING_CHANGES\".\n\nNow there are a small handful of arguments that _might_ be relevant, but\nthese are only -W-style warning flags. I don't think we really care\nabout those either, as again, this is a vendored dependency.\n\nSo overall I think that this is fine, but I should've maybe called this\nout in the commit mesage.\n\nPatrick\n"},{"id":"554164","messageId":"asN7AJdVmPCzov7l@pks.im","threadId":"66386","inReplyTo":"3de4ba2b-9b0c-499b-98bb-7077e0d7613b@gmail.com","subject":"Re: [PATCH 6/7] meson: update wrappers","fromName":"Patrick Steinhardt","fromEmail":"ps@pks.im","sentAt":"2026-10-05T10:25:04Z","receivedAt":"2026-10-05T10:25:09Z","isPatch":true,"body":"On Mon, Oct 05, 2026 at 03:12:34PM +0530, Kaartic Sivaraam wrote:\n> On 9/24/26 19:39, Patrick Steinhardt wrote:\n> > diff --git a/subprojects/openssl.wrap b/subprojects/openssl.wrap> index\n> 873d55106e..e775bb104f 100644\n> > --- a/subprojects/openssl.wrap\n> > +++ b/subprojects/openssl.wrap\n> > @@ -1,15 +1,14 @@\n> >   [wrap-file]\n> > [ snip ]> -wrapdb_version = 3.0.8-3\n> > [ snip ]> +wrapdb_version = 3.0.10-1\n> > \n> \n> We are using the latest versions from the wrap DB for the above but the\n> versions available via wrap DB itself appears quite old. For instance,\n> \n> - curl 8.12.1 was released on Feb/2025. The latest available\n>   is 8.22.0 (released Sep/2026)\n> \n> - OpenSSL 3.0.10 was released on Aug/2023. The latest available are\n>   3.0.22 (released Aug/2026) and 4.0.1 (released Jun/2026).\n> \n> Is this version gap something we need to document / think about?\n\nMaybe, but I think the proper way to fix this would be to update the\nwrap DB if we really care about this. For now we only use this so that\nwe can have a mostly dependencyless Windows build with GitLab CI. I\ndon't think anybody uses this for a production-facing build.\n\nSo I'd leave this as-is for now, but agree that we should maybe iterate\na bit on this going forward and collaborate with upstream.\n\nThanks!\n\nPatrick\n"}]}