* [PATCH 0/8] A handful of Meson cleanups and improvements
@ 2025-07-03 9:28 Patrick Steinhardt
2025-07-03 9:28 ` [PATCH 1/8] meson: stop discovering native version of Python Patrick Steinhardt
` (9 more replies)
0 siblings, 10 replies; 46+ messages in thread
From: Patrick Steinhardt @ 2025-07-03 9:28 UTC (permalink / raw)
To: git; +Cc: Ramsay Jones, irecca.kun, Eli Schwartz
Hi,
this patch series contains a couple of more-or-less random cleanups and
improvements for Meson that I have accumulated over the last two months.
Thanks!
Patrick
---
Patrick Steinhardt (8):
meson: stop discovering native version of Python
meson: stop printing 'https' option twice in our summaries
meson: improve summary of auto-detected features
meson: clean up unnecessary variables
meson: fix lookup of shell on MINGW64
meson: fix GIT_EXEC_PATH with overridden -Dlibexecdir=
meson: update subproject wrappers
ci: use Meson's new `--slice` option
.github/workflows/main.yml | 2 +-
.gitlab-ci.yml | 2 +-
Documentation/meson.build | 5 ++---
meson.build | 26 ++++++++++++--------------
subprojects/expat.wrap | 18 +++++++++---------
subprojects/pcre2.wrap | 18 +++++++++---------
6 files changed, 34 insertions(+), 37 deletions(-)
---
base-commit: 8b6f19ccfc3aefbd0f22f6b7d56ad6a3fc5e4f37
change-id: 20250703-b4-pks-meson-cleanups-f53858d694f3
^ permalink raw reply [flat|nested] 46+ messages in thread
* [PATCH 1/8] meson: stop discovering native version of Python
2025-07-03 9:28 [PATCH 0/8] A handful of Meson cleanups and improvements Patrick Steinhardt
@ 2025-07-03 9:28 ` Patrick Steinhardt
2025-07-08 19:38 ` Justin Tobler
2025-07-03 9:28 ` [PATCH 2/8] meson: stop printing 'https' option twice in our summaries Patrick Steinhardt
` (8 subsequent siblings)
9 siblings, 1 reply; 46+ messages in thread
From: Patrick Steinhardt @ 2025-07-03 9:28 UTC (permalink / raw)
To: git; +Cc: Ramsay Jones, irecca.kun, Eli Schwartz
When Python features are enabled we search both for a native and
non-native version of Python. This is wrong though: we don't use Python
in our build process, so there is no need to search for it in the first
place.
There is one location where we use the native version of Python, namely
when deciding whether or not we want to wire up git-p4(1). This check is
invalid though, as we shouldn't check for the build host to have Python,
but for the target host.
Fix this invalid check to use the non-native version of Python and stop
searching for a native version of Python altogether.
Signed-off-by: Patrick Steinhardt <ps@pks.im>
---
meson.build | 9 ++++-----
1 file changed, 4 insertions(+), 5 deletions(-)
diff --git a/meson.build b/meson.build
index 7fea4a34d68..21fdff0f496 100644
--- a/meson.build
+++ b/meson.build
@@ -866,9 +866,8 @@ if host_machine.system() == 'cygwin' or host_machine.system() == 'windows'
endif
build_options_config.set_quoted('X', executable_suffix)
-python = import('python').find_installation('python3', required: get_option('python'))
-target_python = find_program('python3', native: false, required: python.found())
-if python.found()
+target_python = find_program('python3', native: false, required: get_option('python'))
+if target_python.found()
build_options_config.set('NO_PYTHON', '')
else
libgit_c_args += '-DNO_PYTHON'
@@ -1979,7 +1978,7 @@ if perl_features_enabled
subdir('perl')
endif
-if python.found()
+if target_python.found()
scripts_python = [
'git-p4.py'
]
@@ -2202,7 +2201,7 @@ summary({
'iconv': iconv.found(),
'pcre2': pcre2.found(),
'perl': perl_features_enabled,
- 'python': python.found(),
+ 'python': target_python.found(),
}, section: 'Auto-detected features')
summary({
--
2.50.0.195.g74e6fc65d0.dirty
^ permalink raw reply related [flat|nested] 46+ messages in thread
* [PATCH 2/8] meson: stop printing 'https' option twice in our summaries
2025-07-03 9:28 [PATCH 0/8] A handful of Meson cleanups and improvements Patrick Steinhardt
2025-07-03 9:28 ` [PATCH 1/8] meson: stop discovering native version of Python Patrick Steinhardt
@ 2025-07-03 9:28 ` Patrick Steinhardt
2025-07-03 9:28 ` [PATCH 3/8] meson: improve summary of auto-detected features Patrick Steinhardt
` (7 subsequent siblings)
9 siblings, 0 replies; 46+ messages in thread
From: Patrick Steinhardt @ 2025-07-03 9:28 UTC (permalink / raw)
To: git; +Cc: Ramsay Jones, irecca.kun, Eli Schwartz
The value for the 'https' backend option is printed twice: once via the
summary of auto-detected features and once via our summary of backends.
Drop it from the former summary.
Signed-off-by: Patrick Steinhardt <ps@pks.im>
---
meson.build | 1 -
1 file changed, 1 deletion(-)
diff --git a/meson.build b/meson.build
index 21fdff0f496..4e41c3007bb 100644
--- a/meson.build
+++ b/meson.build
@@ -2197,7 +2197,6 @@ summary({
'expat': expat.found(),
'gettext': intl.found(),
'gitweb': gitweb_option.allowed(),
- 'https': https_backend,
'iconv': iconv.found(),
'pcre2': pcre2.found(),
'perl': perl_features_enabled,
--
2.50.0.195.g74e6fc65d0.dirty
^ permalink raw reply related [flat|nested] 46+ messages in thread
* [PATCH 3/8] meson: improve summary of auto-detected features
2025-07-03 9:28 [PATCH 0/8] A handful of Meson cleanups and improvements Patrick Steinhardt
2025-07-03 9:28 ` [PATCH 1/8] meson: stop discovering native version of Python Patrick Steinhardt
2025-07-03 9:28 ` [PATCH 2/8] meson: stop printing 'https' option twice in our summaries Patrick Steinhardt
@ 2025-07-03 9:28 ` Patrick Steinhardt
2025-07-08 19:56 ` Justin Tobler
2025-07-03 9:28 ` [PATCH 4/8] meson: clean up unnecessary variables Patrick Steinhardt
` (6 subsequent siblings)
9 siblings, 1 reply; 46+ messages in thread
From: Patrick Steinhardt @ 2025-07-03 9:28 UTC (permalink / raw)
To: git; +Cc: Ramsay Jones, irecca.kun, Eli Schwartz
The summary of auto-detected features prints a boolean for every option
to tell the user whether or not the feature has been auto-enabled or
not. This summary can be improved though, as in some cases this boolean
is derived from a dependency. So if we pass in the dependency directly,
then Meson knows to both print a boolean and, if the dependency was
found, it also prints a version number.
Adapt the code accordingly and enable `bool_yn` so that actual booleans
are formatted similarly to dependencies. Before this change:
Auto-detected features
benchmarks : true
curl : true
expat : true
gettext : true
gitweb : true
iconv : true
pcre2 : true
perl : true
python : true
And after this change, we now see the version numbers as expected:
Auto-detected features
benchmarks : YES
curl : YES 8.14.1
expat : YES 2.7.1
gettext : YES
gitweb : YES
iconv : YES
pcre2 : YES 10.44
perl : YES
python : YES
Note that this change also enables colorization of the boolean options,
green for "YES" and red for "NO".
Signed-off-by: Patrick Steinhardt <ps@pks.im>
---
meson.build | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/meson.build b/meson.build
index 4e41c3007bb..4f22d72641e 100644
--- a/meson.build
+++ b/meson.build
@@ -2193,15 +2193,15 @@ meson.add_dist_script(
summary({
'benchmarks': get_option('tests') and perl.found() and time.found(),
- 'curl': curl.found(),
- 'expat': expat.found(),
- 'gettext': intl.found(),
+ 'curl': curl,
+ 'expat': expat,
+ 'gettext': intl,
'gitweb': gitweb_option.allowed(),
- 'iconv': iconv.found(),
- 'pcre2': pcre2.found(),
+ 'iconv': iconv,
+ 'pcre2': pcre2,
'perl': perl_features_enabled,
'python': target_python.found(),
-}, section: 'Auto-detected features')
+}, section: 'Auto-detected features', bool_yn: true)
summary({
'csprng': csprng_backend,
--
2.50.0.195.g74e6fc65d0.dirty
^ permalink raw reply related [flat|nested] 46+ messages in thread
* [PATCH 4/8] meson: clean up unnecessary variables
2025-07-03 9:28 [PATCH 0/8] A handful of Meson cleanups and improvements Patrick Steinhardt
` (2 preceding siblings ...)
2025-07-03 9:28 ` [PATCH 3/8] meson: improve summary of auto-detected features Patrick Steinhardt
@ 2025-07-03 9:28 ` Patrick Steinhardt
2025-07-03 9:28 ` [PATCH 5/8] meson: fix lookup of shell on MINGW64 Patrick Steinhardt
` (5 subsequent siblings)
9 siblings, 0 replies; 46+ messages in thread
From: Patrick Steinhardt @ 2025-07-03 9:28 UTC (permalink / raw)
To: git; +Cc: Ramsay Jones, irecca.kun, Eli Schwartz
The `manpage_target` variable isn't used at all, and the `manpage_path`
variable is only used in a single location. Remove the former variable
and inline the latter.
Signed-off-by: Patrick Steinhardt <ps@pks.im>
---
Documentation/meson.build | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/Documentation/meson.build b/Documentation/meson.build
index 2fe1a1369d4..4404c623f00 100644
--- a/Documentation/meson.build
+++ b/Documentation/meson.build
@@ -375,8 +375,7 @@ foreach manpage, category : manpages
output: fs.stem(manpage) + '.xml',
)
- manpage_path = fs.stem(manpage) + '.' + category.to_string()
- manpage_target = custom_target(
+ custom_target(
command: [
xmlto,
'-m', '@INPUT0@',
@@ -392,7 +391,7 @@ foreach manpage, category : manpages
'manpage-normal.xsl',
'manpage-bold-literal.xsl',
],
- output: manpage_path,
+ output: fs.stem(manpage) + '.' + category.to_string(),
install: true,
install_dir: get_option('mandir') / 'man' + category.to_string(),
)
--
2.50.0.195.g74e6fc65d0.dirty
^ permalink raw reply related [flat|nested] 46+ messages in thread
* [PATCH 5/8] meson: fix lookup of shell on MINGW64
2025-07-03 9:28 [PATCH 0/8] A handful of Meson cleanups and improvements Patrick Steinhardt
` (3 preceding siblings ...)
2025-07-03 9:28 ` [PATCH 4/8] meson: clean up unnecessary variables Patrick Steinhardt
@ 2025-07-03 9:28 ` Patrick Steinhardt
2025-07-03 9:28 ` [PATCH 6/8] meson: fix GIT_EXEC_PATH with overridden -Dlibexecdir= Patrick Steinhardt
` (4 subsequent siblings)
9 siblings, 0 replies; 46+ messages in thread
From: Patrick Steinhardt @ 2025-07-03 9:28 UTC (permalink / raw)
To: git; +Cc: Ramsay Jones, irecca.kun, Eli Schwartz
In 4cba20fbdc6 (meson: prefer shell at "/bin/sh", 2025-04-25) we have
addressed an issue where the shell path embedded into Git was looked up
via PATH, which easily led to unportable shell paths other than the
usual "/bin/sh" location. The fix was to simply add '/bin' to the search
path explicitly, which made us prefer that directory over the PATH-based
lookup.
This fix causes issues on MINGW64 though, which uses Windows-style
paths. "/bin" is not an absolute Windows-style path, but Meson expects
the directories to be absolute. This leads to the following error:
meson.build:248:15: ERROR: Search directory /bin is not an absolute path.
Fix this by instead searching for both '/bin/sh' and 'sh', which also
causes us to prefer '/bin/sh' over a PATH-based lookup. Meson does
accept that path alright on MINGW64, even though it's not an absolute
Windows-style path, either.
Furthermore, this continues to work alright with cross-files, as well,
in case one wants to explicitly override the shell path:
$ meson setup build
...
Runtime executable paths
perl : /nix/store/gy10hw004rl2xfbfq41vnw0yb1w8rvbl-perl-5.40.0/bin/perl
python : /nix/store/sd81bvmch7njdpwx3lkjslixcbj5mivz-python3-3.13.4/bin/python3
shell : /bin/sh
$ cat >cross.ini <<-EOF
[binaries]
sh = '/nix/store/94lg0shvsfc845zy8gnflvpqxxiyijbz-bash-interactive-5.2p37/bin/bash'
EOF
$ meson setup build --cross-file=cross.ini --wipe
...
Runtime executable paths
perl : /nix/store/gy10hw004rl2xfbfq41vnw0yb1w8rvbl-perl-5.40.0/bin/perl
python : /nix/store/sd81bvmch7njdpwx3lkjslixcbj5mivz-python3-3.13.4/bin/python3
shell : /nix/store/94lg0shvsfc845zy8gnflvpqxxiyijbz-bash-interactive-5.2p37/bin/bash
Signed-off-by: Patrick Steinhardt <ps@pks.im>
---
meson.build | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/meson.build b/meson.build
index 4f22d72641e..bef80b118a8 100644
--- a/meson.build
+++ b/meson.build
@@ -245,7 +245,7 @@ time = find_program('time', dirs: program_path, required: get_option('benchmarks
# "/bin/sh" over a PATH-based lookup, which provides a working shell on most
# supported systems. This path is also the default shell path used by our
# Makefile. This lookup can be overridden via `program_path`.
-target_shell = find_program('sh', dirs: program_path + [ '/bin' ], native: false)
+target_shell = find_program('/bin/sh', 'sh', dirs: program_path, native: false)
# Sanity-check that programs required for the build exist.
foreach tool : ['cat', 'cut', 'grep', 'sort', 'tr', 'uname']
--
2.50.0.195.g74e6fc65d0.dirty
^ permalink raw reply related [flat|nested] 46+ messages in thread
* [PATCH 6/8] meson: fix GIT_EXEC_PATH with overridden -Dlibexecdir=
2025-07-03 9:28 [PATCH 0/8] A handful of Meson cleanups and improvements Patrick Steinhardt
` (4 preceding siblings ...)
2025-07-03 9:28 ` [PATCH 5/8] meson: fix lookup of shell on MINGW64 Patrick Steinhardt
@ 2025-07-03 9:28 ` Patrick Steinhardt
2025-07-03 16:39 ` Ramsay Jones
2025-07-03 9:28 ` [PATCH 7/8] meson: update subproject wrappers Patrick Steinhardt
` (3 subsequent siblings)
9 siblings, 1 reply; 46+ messages in thread
From: Patrick Steinhardt @ 2025-07-03 9:28 UTC (permalink / raw)
To: git; +Cc: Ramsay Jones, irecca.kun, Eli Schwartz
In 837f637cf51 (meson.build: correct setting of GIT_EXEC_PATH,
2025-05-19) we have fixed how we configure GIT_EXEC_PATH in some cases.
It was reported [1] though that this causes a new issue when overriding
libexecdir with `-Dlibexecdir=`:
$ meson setup -Dprefix=/tmp/git -Dlibexecdir=libexec-different
$ meson install
$ /tmp/git/bin/git --exec-path
/tmp/git/libexec-different
$ /tmp/git/bin/git daemon
git: 'daemon' is not a git command. See 'git --help'.
While we correctly propagate the libexecdir to Git's GIT_EXEC_PATH, we
forgot to append 'git-core'. Consequently, it cannot find its binaries
anymore.
Fix this issue by appending 'git-core' to libexecdir. With this, things
work as expected:
$ meson install
$ /tmp/git/bin/git --exec-path
/tmp/git/libexec-different/git-core
$ /tmp/git/bin/git daemon -h
...
[1]: <66fd343a-1351-4350-83eb-c797e47b7693@gmail.com>
Reported-by: irecca.kun@gmail.com
Based-on-patch-by: irecca.kun@gmail.com
Signed-off-by: Patrick Steinhardt <ps@pks.im>
---
meson.build | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/meson.build b/meson.build
index bef80b118a8..0da14255820 100644
--- a/meson.build
+++ b/meson.build
@@ -1596,7 +1596,7 @@ endif
git_exec_path = 'libexec/git-core'
libexec = get_option('libexecdir')
if libexec != 'libexec' and libexec != '.'
- git_exec_path = libexec
+ git_exec_path = libexec / 'git-core'
endif
if get_option('runtime_prefix')
--
2.50.0.195.g74e6fc65d0.dirty
^ permalink raw reply related [flat|nested] 46+ messages in thread
* [PATCH 7/8] meson: update subproject wrappers
2025-07-03 9:28 [PATCH 0/8] A handful of Meson cleanups and improvements Patrick Steinhardt
` (5 preceding siblings ...)
2025-07-03 9:28 ` [PATCH 6/8] meson: fix GIT_EXEC_PATH with overridden -Dlibexecdir= Patrick Steinhardt
@ 2025-07-03 9:28 ` Patrick Steinhardt
2025-07-03 9:28 ` [PATCH 8/8] ci: use Meson's new `--slice` option Patrick Steinhardt
` (2 subsequent siblings)
9 siblings, 0 replies; 46+ messages in thread
From: Patrick Steinhardt @ 2025-07-03 9:28 UTC (permalink / raw)
To: git; +Cc: Ramsay Jones, irecca.kun, Eli Schwartz
Update subproject wrappers to newer versions by executing `meson wrap
update` in the project's root directory
Signed-off-by: Patrick Steinhardt <ps@pks.im>
---
subprojects/expat.wrap | 18 +++++++++---------
subprojects/pcre2.wrap | 18 +++++++++---------
2 files changed, 18 insertions(+), 18 deletions(-)
diff --git a/subprojects/expat.wrap b/subprojects/expat.wrap
index 2e0427dcfd1..0e9292f97bf 100644
--- a/subprojects/expat.wrap
+++ b/subprojects/expat.wrap
@@ -1,13 +1,13 @@
[wrap-file]
-directory = expat-2.6.3
-source_url = https://github.com/libexpat/libexpat/releases/download/R_2_6_3/expat-2.6.3.tar.xz
-source_filename = expat-2.6.3.tar.bz2
-source_hash = 274db254a6979bde5aad404763a704956940e465843f2a9bd9ed7af22e2c0efc
-patch_filename = expat_2.6.3-1_patch.zip
-patch_url = https://wrapdb.mesonbuild.com/v2/expat_2.6.3-1/get_patch
-patch_hash = cf017fbe105e31428b2768360bd9be39094df4e948a1e8d1c54b6f7c76460cb1
-source_fallback_url = https://github.com/mesonbuild/wrapdb/releases/download/expat_2.6.3-1/expat-2.6.3.tar.bz2
-wrapdb_version = 2.6.3-1
+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
[provide]
expat = expat_dep
diff --git a/subprojects/pcre2.wrap b/subprojects/pcre2.wrap
index 7e184472543..f45c968e2f3 100644
--- a/subprojects/pcre2.wrap
+++ b/subprojects/pcre2.wrap
@@ -1,13 +1,13 @@
[wrap-file]
-directory = pcre2-10.44
-source_url = https://github.com/PCRE2Project/pcre2/releases/download/pcre2-10.44/pcre2-10.44.tar.bz2
-source_filename = pcre2-10.44.tar.bz2
-source_hash = d34f02e113cf7193a1ebf2770d3ac527088d485d4e047ed10e5d217c6ef5de96
-patch_filename = pcre2_10.44-2_patch.zip
-patch_url = https://wrapdb.mesonbuild.com/v2/pcre2_10.44-2/get_patch
-patch_hash = 4336d422ee9043847e5e10dbbbd01940d4c9e5027f31ccdc33a7898a1ca94009
-source_fallback_url = https://github.com/mesonbuild/wrapdb/releases/download/pcre2_10.44-2/pcre2-10.44.tar.bz2
-wrapdb_version = 10.44-2
+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
[provide]
libpcre2-8 = libpcre2_8
--
2.50.0.195.g74e6fc65d0.dirty
^ permalink raw reply related [flat|nested] 46+ messages in thread
* [PATCH 8/8] ci: use Meson's new `--slice` option
2025-07-03 9:28 [PATCH 0/8] A handful of Meson cleanups and improvements Patrick Steinhardt
` (6 preceding siblings ...)
2025-07-03 9:28 ` [PATCH 7/8] meson: update subproject wrappers Patrick Steinhardt
@ 2025-07-03 9:28 ` Patrick Steinhardt
2025-07-08 0:16 ` Junio C Hamano
2025-07-08 7:57 ` [PATCH v2 0/8] A handful of Meson cleanups and improvements Patrick Steinhardt
2025-07-09 6:23 ` [PATCH v3 0/8] A handful of Meson cleanups and improvements Patrick Steinhardt
9 siblings, 1 reply; 46+ messages in thread
From: Patrick Steinhardt @ 2025-07-03 9:28 UTC (permalink / raw)
To: git; +Cc: Ramsay Jones, irecca.kun, Eli Schwartz
As executing our test suite is notoriously slow on Windows we use matrix
jobs in our CI systems to slice up tests and run them via multiple jobs.
On Meson this is done with a comparatively complex PowerShell invocation
as Meson didn't yet have a native way to slice tests like this.
I have upstreamed a new `--slice` option [1] that addresses this use
case though, which has been merged and released with Meson 1.8. Both
GitLab and GitHub CI have Meson 1.8.2 available by now, so let's update
the jobs to use that new option.
[1]: https://github.com/mesonbuild/meson/pull/14092
Signed-off-by: Patrick Steinhardt <ps@pks.im>
---
.github/workflows/main.yml | 2 +-
.gitlab-ci.yml | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
index 7dbf9f7f123..f0f653bd853 100644
--- a/.github/workflows/main.yml
+++ b/.github/workflows/main.yml
@@ -298,7 +298,7 @@ jobs:
path: build
- name: Test
shell: pwsh
- run: meson test -C build --list | Select-Object -Skip 1 | Select-String .* | Group-Object -Property { $_.LineNumber % 10 } | Where-Object Name -EQ ${{ matrix.nr }} | ForEach-Object { meson test -C build --no-rebuild --print-errorlogs $_.Group }
+ run: meson test -C build --no-rebuild --print-errorlogs --slice ${{ matrix.nr }}/10
regular:
name: ${{matrix.vector.jobname}} (${{matrix.vector.pool}})
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index bb6d5b976cd..af10ebb59a3 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -178,7 +178,7 @@ test:msvc-meson:
- job: "build:msvc-meson"
artifacts: true
script:
- - meson test -C build --list | Select-Object -Skip 1 | Select-String .* | Group-Object -Property { $_.LineNumber % $Env:CI_NODE_TOTAL + 1 } | Where-Object Name -EQ $Env:CI_NODE_INDEX | ForEach-Object { meson test -C build --no-rebuild --print-errorlogs $_.Group; if (!$?) { exit $LASTEXITCODE } }
+ - meson test -C build --no-rebuild --print-errorlogs --slice $Env:CI_NODE_INDEX/$Env:CI_NODE_TOTAL
parallel: 10
test:fuzz-smoke-tests:
--
2.50.0.195.g74e6fc65d0.dirty
^ permalink raw reply related [flat|nested] 46+ messages in thread
* Re: [PATCH 6/8] meson: fix GIT_EXEC_PATH with overridden -Dlibexecdir=
2025-07-03 9:28 ` [PATCH 6/8] meson: fix GIT_EXEC_PATH with overridden -Dlibexecdir= Patrick Steinhardt
@ 2025-07-03 16:39 ` Ramsay Jones
2025-07-08 8:44 ` Patrick Steinhardt
0 siblings, 1 reply; 46+ messages in thread
From: Ramsay Jones @ 2025-07-03 16:39 UTC (permalink / raw)
To: Patrick Steinhardt, git; +Cc: irecca.kun, Eli Schwartz
On 03/07/2025 10:28, Patrick Steinhardt wrote:
> In 837f637cf51 (meson.build: correct setting of GIT_EXEC_PATH,
> 2025-05-19) we have fixed how we configure GIT_EXEC_PATH in some cases.
> It was reported [1] though that this causes a new issue when overriding
> libexecdir with `-Dlibexecdir=`:
Yep, I noticed this report when I got back. My first thought was 'no, we
may just as well revert commit 837f637cf51', since that is in effect what
this patch does! ;)
Then I had a quick look and left a diff/commit 'note to myself' which
effectively did a global search/replace of the string:
install_dir: get_option('libexecdir') / 'git-core'
with:
install_dir: git_exec_path
and put it on my TODO list. (Note, that is *all* I did - I didn't even
attempt a build, let alone test!)
Of course, I need to spend some time on this (if nothing else, git-gui and
presumably gitk will need some changes as well?).
Hopefully, I can find some time soon (those round tuits are in short supply).
>
> $ meson setup -Dprefix=/tmp/git -Dlibexecdir=libexec-different
> $ meson install
> $ /tmp/git/bin/git --exec-path
> /tmp/git/libexec-different
> $ /tmp/git/bin/git daemon
> git: 'daemon' is not a git command. See 'git --help'.
>
> While we correctly propagate the libexecdir to Git's GIT_EXEC_PATH, we
> forgot to append 'git-core'. Consequently, it cannot find its binaries
> anymore.
>
> Fix this issue by appending 'git-core' to libexecdir. With this, things
> work as expected:
>
> $ meson install
> $ /tmp/git/bin/git --exec-path
> /tmp/git/libexec-different/git-core
> $ /tmp/git/bin/git daemon -h
> ...
Hmm, I'm pretty certain I tested commit 837f637cf51 in a similar (but
not identical) way! ;) I will use the above test next time.
Sorry for causing a regression. :(
ATB,
Ramsay Jones
^ permalink raw reply [flat|nested] 46+ messages in thread
* Re: [PATCH 8/8] ci: use Meson's new `--slice` option
2025-07-03 9:28 ` [PATCH 8/8] ci: use Meson's new `--slice` option Patrick Steinhardt
@ 2025-07-08 0:16 ` Junio C Hamano
2025-07-08 1:12 ` Jeff King
0 siblings, 1 reply; 46+ messages in thread
From: Junio C Hamano @ 2025-07-08 0:16 UTC (permalink / raw)
To: Patrick Steinhardt; +Cc: git, Ramsay Jones, irecca.kun, Eli Schwartz
Patrick Steinhardt <ps@pks.im> writes:
> As executing our test suite is notoriously slow on Windows we use matrix
> jobs in our CI systems to slice up tests and run them via multiple jobs.
> On Meson this is done with a comparatively complex PowerShell invocation
> as Meson didn't yet have a native way to slice tests like this.
>
> I have upstreamed a new `--slice` option [1] that addresses this use
> case though, which has been merged and released with Meson 1.8. Both
> GitLab and GitHub CI have Meson 1.8.2 available by now, so let's update
> the jobs to use that new option.
>
> [1]: https://github.com/mesonbuild/meson/pull/14092
>
> Signed-off-by: Patrick Steinhardt <ps@pks.im>
> ---
> .github/workflows/main.yml | 2 +-
> .gitlab-ci.yml | 2 +-
> 2 files changed, 2 insertions(+), 2 deletions(-)
https://github.com/git/git/actions/runs/16129796573/job/45515034049#step:6:17
unfortunately ends like this:
Run meson test -C build --no-rebuild --print-errorlogs --slice 0/10
meson test -C build --no-rebuild --print-errorlogs --slice 0/10
shell: C:\Program Files\PowerShell\7\pwsh.EXE -command ". '{0}'"
env:
DEVELOPER: 1
usage: meson test [-h] [--maxfail MAXFAIL] [--repeat REPEAT] [--no-rebuild]
[--gdb] [--gdb-path GDB_PATH] [-i] [--list]
[--wrapper WRAPPER] [-C WD] [--suite SUITE] [--no-suite SUITE]
[--no-stdsplit] [--print-errorlogs] [--benchmark]
[--logbase LOGBASE] [-j NUM_PROCESSES] [-v] [-q]
[-t TIMEOUT_MULTIPLIER] [--setup SETUP]
[--test-args TEST_ARGS] [--max-lines MAX_LINES]
[--slice SLICE/NUM_SLICES]
[args ...]
meson test: error: argument --slice: SLICE is not a positive integer
Error: Process completed with exit code 1.
> diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
> index 7dbf9f7f123..f0f653bd853 100644
> --- a/.github/workflows/main.yml
> +++ b/.github/workflows/main.yml
> @@ -298,7 +298,7 @@ jobs:
> path: build
> - name: Test
> shell: pwsh
> - run: meson test -C build --list | Select-Object -Skip 1 | Select-String .* | Group-Object -Property { $_.LineNumber % 10 } | Where-Object Name -EQ ${{ matrix.nr }} | ForEach-Object { meson test -C build --no-rebuild --print-errorlogs $_.Group }
> + run: meson test -C build --no-rebuild --print-errorlogs --slice ${{ matrix.nr }}/10
>
> regular:
> name: ${{matrix.vector.jobname}} (${{matrix.vector.pool}})
> diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
> index bb6d5b976cd..af10ebb59a3 100644
> --- a/.gitlab-ci.yml
> +++ b/.gitlab-ci.yml
> @@ -178,7 +178,7 @@ test:msvc-meson:
> - job: "build:msvc-meson"
> artifacts: true
> script:
> - - meson test -C build --list | Select-Object -Skip 1 | Select-String .* | Group-Object -Property { $_.LineNumber % $Env:CI_NODE_TOTAL + 1 } | Where-Object Name -EQ $Env:CI_NODE_INDEX | ForEach-Object { meson test -C build --no-rebuild --print-errorlogs $_.Group; if (!$?) { exit $LASTEXITCODE } }
> + - meson test -C build --no-rebuild --print-errorlogs --slice $Env:CI_NODE_INDEX/$Env:CI_NODE_TOTAL
> parallel: 10
>
> test:fuzz-smoke-tests:
^ permalink raw reply [flat|nested] 46+ messages in thread
* Re: [PATCH 8/8] ci: use Meson's new `--slice` option
2025-07-08 0:16 ` Junio C Hamano
@ 2025-07-08 1:12 ` Jeff King
2025-07-08 1:39 ` Jeff King
0 siblings, 1 reply; 46+ messages in thread
From: Jeff King @ 2025-07-08 1:12 UTC (permalink / raw)
To: Junio C Hamano
Cc: Patrick Steinhardt, git, Ramsay Jones, irecca.kun, Eli Schwartz
On Mon, Jul 07, 2025 at 05:16:03PM -0700, Junio C Hamano wrote:
> https://github.com/git/git/actions/runs/16129796573/job/45515034049#step:6:17
>
> unfortunately ends like this:
>
> Run meson test -C build --no-rebuild --print-errorlogs --slice 0/10
> meson test -C build --no-rebuild --print-errorlogs --slice 0/10
> shell: C:\Program Files\PowerShell\7\pwsh.EXE -command ". '{0}'"
> env:
> DEVELOPER: 1
> usage: meson test [-h] [--maxfail MAXFAIL] [--repeat REPEAT] [--no-rebuild]
> [--gdb] [--gdb-path GDB_PATH] [-i] [--list]
> [--wrapper WRAPPER] [-C WD] [--suite SUITE] [--no-suite SUITE]
> [--no-stdsplit] [--print-errorlogs] [--benchmark]
> [--logbase LOGBASE] [-j NUM_PROCESSES] [-v] [-q]
> [-t TIMEOUT_MULTIPLIER] [--setup SETUP]
> [--test-args TEST_ARGS] [--max-lines MAX_LINES]
> [--slice SLICE/NUM_SLICES]
> [args ...]
> meson test: error: argument --slice: SLICE is not a positive integer
> Error: Process completed with exit code 1.
I was just digging into this, too. I guess:
diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
index 673b1c44b9..717bd2763b 100644
--- a/.github/workflows/main.yml
+++ b/.github/workflows/main.yml
@@ -289,7 +289,7 @@ jobs:
strategy:
fail-fast: false
matrix:
- nr: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
+ nr: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
concurrency:
group: windows-meson-test-${{ matrix.nr }}-${{ github.ref }}
cancel-in-progress: ${{ needs.ci-config.outputs.skip_concurrent == 'yes' }}
is probably the right fix?
-Peff
^ permalink raw reply related [flat|nested] 46+ messages in thread
* Re: [PATCH 8/8] ci: use Meson's new `--slice` option
2025-07-08 1:12 ` Jeff King
@ 2025-07-08 1:39 ` Jeff King
2025-07-08 4:39 ` Junio C Hamano
2025-07-08 7:16 ` Patrick Steinhardt
0 siblings, 2 replies; 46+ messages in thread
From: Jeff King @ 2025-07-08 1:39 UTC (permalink / raw)
To: Junio C Hamano
Cc: Patrick Steinhardt, git, Ramsay Jones, irecca.kun, Eli Schwartz
On Mon, Jul 07, 2025 at 09:12:49PM -0400, Jeff King wrote:
> I was just digging into this, too. I guess:
>
> diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
> index 673b1c44b9..717bd2763b 100644
> --- a/.github/workflows/main.yml
> +++ b/.github/workflows/main.yml
> @@ -289,7 +289,7 @@ jobs:
> strategy:
> fail-fast: false
> matrix:
> - nr: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
> + nr: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
> concurrency:
> group: windows-meson-test-${{ matrix.nr }}-${{ github.ref }}
> cancel-in-progress: ${{ needs.ci-config.outputs.skip_concurrent == 'yes' }}
>
> is probably the right fix?
That does renumber the job titles. Probably not important, but they
wouldn't match the non-meson ones anymore (though I am not sure if we
even slice in the same way, so maybe it does not matter at all).
Anyway, the more minimal fix is:
diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
index 673b1c44b9..7739bd2d76 100644
--- a/.github/workflows/main.yml
+++ b/.github/workflows/main.yml
@@ -306,7 +306,7 @@ jobs:
path: build
- name: Test
shell: pwsh
- run: meson test -C build --no-rebuild --print-errorlogs --slice ${{ matrix.nr }}/10
+ run: meson test -C build --no-rebuild --print-errorlogs --slice "$(1+${{ matrix.nr }})/10"
regular:
name: ${{matrix.vector.jobname}} (${{matrix.vector.pool}})
with the additional bonus that I can put "PowerShell Hacker" on my
resume now.
Curiously the quotes around the whole thing are required. If you do
just:
$(1+1)/10
you will get two arguments: "2" and "/10". Definitely surprising to me
coming from a bourne shell background.
-Peff
^ permalink raw reply related [flat|nested] 46+ messages in thread
* Re: [PATCH 8/8] ci: use Meson's new `--slice` option
2025-07-08 1:39 ` Jeff King
@ 2025-07-08 4:39 ` Junio C Hamano
2025-07-08 7:16 ` Patrick Steinhardt
1 sibling, 0 replies; 46+ messages in thread
From: Junio C Hamano @ 2025-07-08 4:39 UTC (permalink / raw)
To: Jeff King; +Cc: Patrick Steinhardt, git, Ramsay Jones, irecca.kun, Eli Schwartz
Jeff King <peff@peff.net> writes:
> That does renumber the job titles. Probably not important, but they
> wouldn't match the non-meson ones anymore (though I am not sure if we
> even slice in the same way, so maybe it does not matter at all).
>
> Anyway, the more minimal fix is:
>
> diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
> index 673b1c44b9..7739bd2d76 100644
> --- a/.github/workflows/main.yml
> +++ b/.github/workflows/main.yml
> @@ -306,7 +306,7 @@ jobs:
> path: build
> - name: Test
> shell: pwsh
> - run: meson test -C build --no-rebuild --print-errorlogs --slice ${{ matrix.nr }}/10
> + run: meson test -C build --no-rebuild --print-errorlogs --slice "$(1+${{ matrix.nr }})/10"
It is confusing that $(...) is not a command substitution in shell
but somehow performs arithmetic X-<.
> regular:
> name: ${{matrix.vector.jobname}} (${{matrix.vector.pool}})
>
> with the additional bonus that I can put "PowerShell Hacker" on my
> resume now.
>
> Curiously the quotes around the whole thing are required. If you do
> just:
>
> $(1+1)/10
>
> you will get two arguments: "2" and "/10". Definitely surprising to me
> coming from a bourne shell background.
True.
^ permalink raw reply [flat|nested] 46+ messages in thread
* Re: [PATCH 8/8] ci: use Meson's new `--slice` option
2025-07-08 1:39 ` Jeff King
2025-07-08 4:39 ` Junio C Hamano
@ 2025-07-08 7:16 ` Patrick Steinhardt
1 sibling, 0 replies; 46+ messages in thread
From: Patrick Steinhardt @ 2025-07-08 7:16 UTC (permalink / raw)
To: Jeff King; +Cc: Junio C Hamano, git, Ramsay Jones, irecca.kun, Eli Schwartz
On Mon, Jul 07, 2025 at 09:39:35PM -0400, Jeff King wrote:
> On Mon, Jul 07, 2025 at 09:12:49PM -0400, Jeff King wrote:
>
> > I was just digging into this, too. I guess:
> >
> > diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
> > index 673b1c44b9..717bd2763b 100644
> > --- a/.github/workflows/main.yml
> > +++ b/.github/workflows/main.yml
> > @@ -289,7 +289,7 @@ jobs:
> > strategy:
> > fail-fast: false
> > matrix:
> > - nr: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
> > + nr: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
> > concurrency:
> > group: windows-meson-test-${{ matrix.nr }}-${{ github.ref }}
> > cancel-in-progress: ${{ needs.ci-config.outputs.skip_concurrent == 'yes' }}
> >
> > is probably the right fix?
>
> That does renumber the job titles. Probably not important, but they
> wouldn't match the non-meson ones anymore (though I am not sure if we
> even slice in the same way, so maybe it does not matter at all).
>
> Anyway, the more minimal fix is:
>
> diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
> index 673b1c44b9..7739bd2d76 100644
> --- a/.github/workflows/main.yml
> +++ b/.github/workflows/main.yml
> @@ -306,7 +306,7 @@ jobs:
> path: build
> - name: Test
> shell: pwsh
> - run: meson test -C build --no-rebuild --print-errorlogs --slice ${{ matrix.nr }}/10
> + run: meson test -C build --no-rebuild --print-errorlogs --slice "$(1+${{ matrix.nr }})/10"
>
> regular:
> name: ${{matrix.vector.jobname}} (${{matrix.vector.pool}})
>
> with the additional bonus that I can put "PowerShell Hacker" on my
> resume now.
>
> Curiously the quotes around the whole thing are required. If you do
> just:
>
> $(1+1)/10
>
> you will get two arguments: "2" and "/10". Definitely surprising to me
> coming from a bourne shell background.
Thanks for digging into this! I probably should make it a habit to
always run CI changes through both GitHub and GitLab. :/
Patrick
^ permalink raw reply [flat|nested] 46+ messages in thread
* [PATCH v2 0/8] A handful of Meson cleanups and improvements
2025-07-03 9:28 [PATCH 0/8] A handful of Meson cleanups and improvements Patrick Steinhardt
` (7 preceding siblings ...)
2025-07-03 9:28 ` [PATCH 8/8] ci: use Meson's new `--slice` option Patrick Steinhardt
@ 2025-07-08 7:57 ` Patrick Steinhardt
2025-07-08 7:57 ` [PATCH v2 1/8] meson: stop discovering native version of Python Patrick Steinhardt
` (7 more replies)
2025-07-09 6:23 ` [PATCH v3 0/8] A handful of Meson cleanups and improvements Patrick Steinhardt
9 siblings, 8 replies; 46+ messages in thread
From: Patrick Steinhardt @ 2025-07-08 7:57 UTC (permalink / raw)
To: git; +Cc: Ramsay Jones, irecca.kun, Eli Schwartz, Jeff King, Junio C Hamano
Hi,
this patch series contains a couple of more-or-less random cleanups and
improvements for Meson that I have accumulated over the last two months.
Changes in v2:
- Fix an off-by-one error for test slices used in GitHub Workflows.
- Now tested with both GitLab (https://gitlab.com/gitlab-org/git/-/merge_requests/375)
and GitHub (https://github.com/git/git/pull/2010).
- Link to v1: https://lore.kernel.org/r/20250703-b4-pks-meson-cleanups-v1-0-2804c2932abe@pks.im
Thanks!
Patrick
---
Patrick Steinhardt (8):
meson: stop discovering native version of Python
meson: stop printing 'https' option twice in our summaries
meson: improve summary of auto-detected features
meson: clean up unnecessary variables
meson: fix lookup of shell on MINGW64
meson: fix GIT_EXEC_PATH with overridden -Dlibexecdir=
meson: update subproject wrappers
ci: use Meson's new `--slice` option
.github/workflows/main.yml | 2 +-
.gitlab-ci.yml | 2 +-
Documentation/meson.build | 5 ++---
meson.build | 26 ++++++++++++--------------
subprojects/expat.wrap | 18 +++++++++---------
subprojects/pcre2.wrap | 18 +++++++++---------
6 files changed, 34 insertions(+), 37 deletions(-)
Range-diff versus v1:
1: 34bb9288218 = 1: 2130ccdfb14 meson: stop discovering native version of Python
2: a6f1b52d44f = 2: 4274c321f0b meson: stop printing 'https' option twice in our summaries
3: 01a8c379314 = 3: cdc8c9d8655 meson: improve summary of auto-detected features
4: 306af85a4a3 = 4: 373496880ce meson: clean up unnecessary variables
5: d8308e96c74 = 5: cd2bfeaccd2 meson: fix lookup of shell on MINGW64
6: 583c3e701c8 = 6: 9135b7f6012 meson: fix GIT_EXEC_PATH with overridden -Dlibexecdir=
7: c3edc233952 = 7: 16e0f2d1e22 meson: update subproject wrappers
8: 22a62721031 ! 8: 2ab73ae33df ci: use Meson's new `--slice` option
@@ .github/workflows/main.yml: jobs:
- name: Test
shell: pwsh
- run: meson test -C build --list | Select-Object -Skip 1 | Select-String .* | Group-Object -Property { $_.LineNumber % 10 } | Where-Object Name -EQ ${{ matrix.nr }} | ForEach-Object { meson test -C build --no-rebuild --print-errorlogs $_.Group }
-+ run: meson test -C build --no-rebuild --print-errorlogs --slice ${{ matrix.nr }}/10
++ run: meson test -C build --no-rebuild --print-errorlogs --slice "$(1+${{ matrix.nr }})/10"
regular:
name: ${{matrix.vector.jobname}} (${{matrix.vector.pool}})
---
base-commit: 8b6f19ccfc3aefbd0f22f6b7d56ad6a3fc5e4f37
change-id: 20250703-b4-pks-meson-cleanups-f53858d694f3
^ permalink raw reply [flat|nested] 46+ messages in thread
* [PATCH v2 1/8] meson: stop discovering native version of Python
2025-07-08 7:57 ` [PATCH v2 0/8] A handful of Meson cleanups and improvements Patrick Steinhardt
@ 2025-07-08 7:57 ` Patrick Steinhardt
2025-07-08 7:57 ` [PATCH v2 2/8] meson: stop printing 'https' option twice in our summaries Patrick Steinhardt
` (6 subsequent siblings)
7 siblings, 0 replies; 46+ messages in thread
From: Patrick Steinhardt @ 2025-07-08 7:57 UTC (permalink / raw)
To: git; +Cc: Ramsay Jones, irecca.kun, Eli Schwartz, Jeff King, Junio C Hamano
When Python features are enabled we search both for a native and
non-native version of Python. This is wrong though: we don't use Python
in our build process, so there is no need to search for it in the first
place.
There is one location where we use the native version of Python, namely
when deciding whether or not we want to wire up git-p4(1). This check is
invalid though, as we shouldn't check for the build host to have Python,
but for the target host.
Fix this invalid check to use the non-native version of Python and stop
searching for a native version of Python altogether.
Signed-off-by: Patrick Steinhardt <ps@pks.im>
---
meson.build | 9 ++++-----
1 file changed, 4 insertions(+), 5 deletions(-)
diff --git a/meson.build b/meson.build
index 7fea4a34d68..21fdff0f496 100644
--- a/meson.build
+++ b/meson.build
@@ -866,9 +866,8 @@ if host_machine.system() == 'cygwin' or host_machine.system() == 'windows'
endif
build_options_config.set_quoted('X', executable_suffix)
-python = import('python').find_installation('python3', required: get_option('python'))
-target_python = find_program('python3', native: false, required: python.found())
-if python.found()
+target_python = find_program('python3', native: false, required: get_option('python'))
+if target_python.found()
build_options_config.set('NO_PYTHON', '')
else
libgit_c_args += '-DNO_PYTHON'
@@ -1979,7 +1978,7 @@ if perl_features_enabled
subdir('perl')
endif
-if python.found()
+if target_python.found()
scripts_python = [
'git-p4.py'
]
@@ -2202,7 +2201,7 @@ summary({
'iconv': iconv.found(),
'pcre2': pcre2.found(),
'perl': perl_features_enabled,
- 'python': python.found(),
+ 'python': target_python.found(),
}, section: 'Auto-detected features')
summary({
--
2.50.0.195.g74e6fc65d0.dirty
^ permalink raw reply related [flat|nested] 46+ messages in thread
* [PATCH v2 2/8] meson: stop printing 'https' option twice in our summaries
2025-07-08 7:57 ` [PATCH v2 0/8] A handful of Meson cleanups and improvements Patrick Steinhardt
2025-07-08 7:57 ` [PATCH v2 1/8] meson: stop discovering native version of Python Patrick Steinhardt
@ 2025-07-08 7:57 ` Patrick Steinhardt
2025-07-08 7:57 ` [PATCH v2 3/8] meson: improve summary of auto-detected features Patrick Steinhardt
` (5 subsequent siblings)
7 siblings, 0 replies; 46+ messages in thread
From: Patrick Steinhardt @ 2025-07-08 7:57 UTC (permalink / raw)
To: git; +Cc: Ramsay Jones, irecca.kun, Eli Schwartz, Jeff King, Junio C Hamano
The value for the 'https' backend option is printed twice: once via the
summary of auto-detected features and once via our summary of backends.
Drop it from the former summary.
Signed-off-by: Patrick Steinhardt <ps@pks.im>
---
meson.build | 1 -
1 file changed, 1 deletion(-)
diff --git a/meson.build b/meson.build
index 21fdff0f496..4e41c3007bb 100644
--- a/meson.build
+++ b/meson.build
@@ -2197,7 +2197,6 @@ summary({
'expat': expat.found(),
'gettext': intl.found(),
'gitweb': gitweb_option.allowed(),
- 'https': https_backend,
'iconv': iconv.found(),
'pcre2': pcre2.found(),
'perl': perl_features_enabled,
--
2.50.0.195.g74e6fc65d0.dirty
^ permalink raw reply related [flat|nested] 46+ messages in thread
* [PATCH v2 3/8] meson: improve summary of auto-detected features
2025-07-08 7:57 ` [PATCH v2 0/8] A handful of Meson cleanups and improvements Patrick Steinhardt
2025-07-08 7:57 ` [PATCH v2 1/8] meson: stop discovering native version of Python Patrick Steinhardt
2025-07-08 7:57 ` [PATCH v2 2/8] meson: stop printing 'https' option twice in our summaries Patrick Steinhardt
@ 2025-07-08 7:57 ` Patrick Steinhardt
2025-07-08 7:57 ` [PATCH v2 4/8] meson: clean up unnecessary variables Patrick Steinhardt
` (4 subsequent siblings)
7 siblings, 0 replies; 46+ messages in thread
From: Patrick Steinhardt @ 2025-07-08 7:57 UTC (permalink / raw)
To: git; +Cc: Ramsay Jones, irecca.kun, Eli Schwartz, Jeff King, Junio C Hamano
The summary of auto-detected features prints a boolean for every option
to tell the user whether or not the feature has been auto-enabled or
not. This summary can be improved though, as in some cases this boolean
is derived from a dependency. So if we pass in the dependency directly,
then Meson knows to both print a boolean and, if the dependency was
found, it also prints a version number.
Adapt the code accordingly and enable `bool_yn` so that actual booleans
are formatted similarly to dependencies. Before this change:
Auto-detected features
benchmarks : true
curl : true
expat : true
gettext : true
gitweb : true
iconv : true
pcre2 : true
perl : true
python : true
And after this change, we now see the version numbers as expected:
Auto-detected features
benchmarks : YES
curl : YES 8.14.1
expat : YES 2.7.1
gettext : YES
gitweb : YES
iconv : YES
pcre2 : YES 10.44
perl : YES
python : YES
Note that this change also enables colorization of the boolean options,
green for "YES" and red for "NO".
Signed-off-by: Patrick Steinhardt <ps@pks.im>
---
meson.build | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/meson.build b/meson.build
index 4e41c3007bb..4f22d72641e 100644
--- a/meson.build
+++ b/meson.build
@@ -2193,15 +2193,15 @@ meson.add_dist_script(
summary({
'benchmarks': get_option('tests') and perl.found() and time.found(),
- 'curl': curl.found(),
- 'expat': expat.found(),
- 'gettext': intl.found(),
+ 'curl': curl,
+ 'expat': expat,
+ 'gettext': intl,
'gitweb': gitweb_option.allowed(),
- 'iconv': iconv.found(),
- 'pcre2': pcre2.found(),
+ 'iconv': iconv,
+ 'pcre2': pcre2,
'perl': perl_features_enabled,
'python': target_python.found(),
-}, section: 'Auto-detected features')
+}, section: 'Auto-detected features', bool_yn: true)
summary({
'csprng': csprng_backend,
--
2.50.0.195.g74e6fc65d0.dirty
^ permalink raw reply related [flat|nested] 46+ messages in thread
* [PATCH v2 4/8] meson: clean up unnecessary variables
2025-07-08 7:57 ` [PATCH v2 0/8] A handful of Meson cleanups and improvements Patrick Steinhardt
` (2 preceding siblings ...)
2025-07-08 7:57 ` [PATCH v2 3/8] meson: improve summary of auto-detected features Patrick Steinhardt
@ 2025-07-08 7:57 ` Patrick Steinhardt
2025-07-08 7:57 ` [PATCH v2 5/8] meson: fix lookup of shell on MINGW64 Patrick Steinhardt
` (3 subsequent siblings)
7 siblings, 0 replies; 46+ messages in thread
From: Patrick Steinhardt @ 2025-07-08 7:57 UTC (permalink / raw)
To: git; +Cc: Ramsay Jones, irecca.kun, Eli Schwartz, Jeff King, Junio C Hamano
The `manpage_target` variable isn't used at all, and the `manpage_path`
variable is only used in a single location. Remove the former variable
and inline the latter.
Signed-off-by: Patrick Steinhardt <ps@pks.im>
---
Documentation/meson.build | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/Documentation/meson.build b/Documentation/meson.build
index 2fe1a1369d4..4404c623f00 100644
--- a/Documentation/meson.build
+++ b/Documentation/meson.build
@@ -375,8 +375,7 @@ foreach manpage, category : manpages
output: fs.stem(manpage) + '.xml',
)
- manpage_path = fs.stem(manpage) + '.' + category.to_string()
- manpage_target = custom_target(
+ custom_target(
command: [
xmlto,
'-m', '@INPUT0@',
@@ -392,7 +391,7 @@ foreach manpage, category : manpages
'manpage-normal.xsl',
'manpage-bold-literal.xsl',
],
- output: manpage_path,
+ output: fs.stem(manpage) + '.' + category.to_string(),
install: true,
install_dir: get_option('mandir') / 'man' + category.to_string(),
)
--
2.50.0.195.g74e6fc65d0.dirty
^ permalink raw reply related [flat|nested] 46+ messages in thread
* [PATCH v2 5/8] meson: fix lookup of shell on MINGW64
2025-07-08 7:57 ` [PATCH v2 0/8] A handful of Meson cleanups and improvements Patrick Steinhardt
` (3 preceding siblings ...)
2025-07-08 7:57 ` [PATCH v2 4/8] meson: clean up unnecessary variables Patrick Steinhardt
@ 2025-07-08 7:57 ` Patrick Steinhardt
2025-07-08 20:44 ` Justin Tobler
2025-07-08 7:57 ` [PATCH v2 6/8] meson: fix GIT_EXEC_PATH with overridden -Dlibexecdir= Patrick Steinhardt
` (2 subsequent siblings)
7 siblings, 1 reply; 46+ messages in thread
From: Patrick Steinhardt @ 2025-07-08 7:57 UTC (permalink / raw)
To: git; +Cc: Ramsay Jones, irecca.kun, Eli Schwartz, Jeff King, Junio C Hamano
In 4cba20fbdc6 (meson: prefer shell at "/bin/sh", 2025-04-25) we have
addressed an issue where the shell path embedded into Git was looked up
via PATH, which easily led to unportable shell paths other than the
usual "/bin/sh" location. The fix was to simply add '/bin' to the search
path explicitly, which made us prefer that directory over the PATH-based
lookup.
This fix causes issues on MINGW64 though, which uses Windows-style
paths. "/bin" is not an absolute Windows-style path, but Meson expects
the directories to be absolute. This leads to the following error:
meson.build:248:15: ERROR: Search directory /bin is not an absolute path.
Fix this by instead searching for both '/bin/sh' and 'sh', which also
causes us to prefer '/bin/sh' over a PATH-based lookup. Meson does
accept that path alright on MINGW64, even though it's not an absolute
Windows-style path, either.
Furthermore, this continues to work alright with cross-files, as well,
in case one wants to explicitly override the shell path:
$ meson setup build
...
Runtime executable paths
perl : /nix/store/gy10hw004rl2xfbfq41vnw0yb1w8rvbl-perl-5.40.0/bin/perl
python : /nix/store/sd81bvmch7njdpwx3lkjslixcbj5mivz-python3-3.13.4/bin/python3
shell : /bin/sh
$ cat >cross.ini <<-EOF
[binaries]
sh = '/nix/store/94lg0shvsfc845zy8gnflvpqxxiyijbz-bash-interactive-5.2p37/bin/bash'
EOF
$ meson setup build --cross-file=cross.ini --wipe
...
Runtime executable paths
perl : /nix/store/gy10hw004rl2xfbfq41vnw0yb1w8rvbl-perl-5.40.0/bin/perl
python : /nix/store/sd81bvmch7njdpwx3lkjslixcbj5mivz-python3-3.13.4/bin/python3
shell : /nix/store/94lg0shvsfc845zy8gnflvpqxxiyijbz-bash-interactive-5.2p37/bin/bash
Signed-off-by: Patrick Steinhardt <ps@pks.im>
---
meson.build | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/meson.build b/meson.build
index 4f22d72641e..bef80b118a8 100644
--- a/meson.build
+++ b/meson.build
@@ -245,7 +245,7 @@ time = find_program('time', dirs: program_path, required: get_option('benchmarks
# "/bin/sh" over a PATH-based lookup, which provides a working shell on most
# supported systems. This path is also the default shell path used by our
# Makefile. This lookup can be overridden via `program_path`.
-target_shell = find_program('sh', dirs: program_path + [ '/bin' ], native: false)
+target_shell = find_program('/bin/sh', 'sh', dirs: program_path, native: false)
# Sanity-check that programs required for the build exist.
foreach tool : ['cat', 'cut', 'grep', 'sort', 'tr', 'uname']
--
2.50.0.195.g74e6fc65d0.dirty
^ permalink raw reply related [flat|nested] 46+ messages in thread
* [PATCH v2 6/8] meson: fix GIT_EXEC_PATH with overridden -Dlibexecdir=
2025-07-08 7:57 ` [PATCH v2 0/8] A handful of Meson cleanups and improvements Patrick Steinhardt
` (4 preceding siblings ...)
2025-07-08 7:57 ` [PATCH v2 5/8] meson: fix lookup of shell on MINGW64 Patrick Steinhardt
@ 2025-07-08 7:57 ` Patrick Steinhardt
2025-07-08 7:57 ` [PATCH v2 7/8] meson: update subproject wrappers Patrick Steinhardt
2025-07-08 7:57 ` [PATCH v2 8/8] ci: use Meson's new `--slice` option Patrick Steinhardt
7 siblings, 0 replies; 46+ messages in thread
From: Patrick Steinhardt @ 2025-07-08 7:57 UTC (permalink / raw)
To: git; +Cc: Ramsay Jones, irecca.kun, Eli Schwartz, Jeff King, Junio C Hamano
In 837f637cf51 (meson.build: correct setting of GIT_EXEC_PATH,
2025-05-19) we have fixed how we configure GIT_EXEC_PATH in some cases.
It was reported [1] though that this causes a new issue when overriding
libexecdir with `-Dlibexecdir=`:
$ meson setup -Dprefix=/tmp/git -Dlibexecdir=libexec-different
$ meson install
$ /tmp/git/bin/git --exec-path
/tmp/git/libexec-different
$ /tmp/git/bin/git daemon
git: 'daemon' is not a git command. See 'git --help'.
While we correctly propagate the libexecdir to Git's GIT_EXEC_PATH, we
forgot to append 'git-core'. Consequently, it cannot find its binaries
anymore.
Fix this issue by appending 'git-core' to libexecdir. With this, things
work as expected:
$ meson install
$ /tmp/git/bin/git --exec-path
/tmp/git/libexec-different/git-core
$ /tmp/git/bin/git daemon -h
...
[1]: <66fd343a-1351-4350-83eb-c797e47b7693@gmail.com>
Reported-by: irecca.kun@gmail.com
Based-on-patch-by: irecca.kun@gmail.com
Signed-off-by: Patrick Steinhardt <ps@pks.im>
---
meson.build | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/meson.build b/meson.build
index bef80b118a8..0da14255820 100644
--- a/meson.build
+++ b/meson.build
@@ -1596,7 +1596,7 @@ endif
git_exec_path = 'libexec/git-core'
libexec = get_option('libexecdir')
if libexec != 'libexec' and libexec != '.'
- git_exec_path = libexec
+ git_exec_path = libexec / 'git-core'
endif
if get_option('runtime_prefix')
--
2.50.0.195.g74e6fc65d0.dirty
^ permalink raw reply related [flat|nested] 46+ messages in thread
* [PATCH v2 7/8] meson: update subproject wrappers
2025-07-08 7:57 ` [PATCH v2 0/8] A handful of Meson cleanups and improvements Patrick Steinhardt
` (5 preceding siblings ...)
2025-07-08 7:57 ` [PATCH v2 6/8] meson: fix GIT_EXEC_PATH with overridden -Dlibexecdir= Patrick Steinhardt
@ 2025-07-08 7:57 ` Patrick Steinhardt
2025-07-08 7:57 ` [PATCH v2 8/8] ci: use Meson's new `--slice` option Patrick Steinhardt
7 siblings, 0 replies; 46+ messages in thread
From: Patrick Steinhardt @ 2025-07-08 7:57 UTC (permalink / raw)
To: git; +Cc: Ramsay Jones, irecca.kun, Eli Schwartz, Jeff King, Junio C Hamano
Update subproject wrappers to newer versions by executing `meson wrap
update` in the project's root directory
Signed-off-by: Patrick Steinhardt <ps@pks.im>
---
subprojects/expat.wrap | 18 +++++++++---------
subprojects/pcre2.wrap | 18 +++++++++---------
2 files changed, 18 insertions(+), 18 deletions(-)
diff --git a/subprojects/expat.wrap b/subprojects/expat.wrap
index 2e0427dcfd1..0e9292f97bf 100644
--- a/subprojects/expat.wrap
+++ b/subprojects/expat.wrap
@@ -1,13 +1,13 @@
[wrap-file]
-directory = expat-2.6.3
-source_url = https://github.com/libexpat/libexpat/releases/download/R_2_6_3/expat-2.6.3.tar.xz
-source_filename = expat-2.6.3.tar.bz2
-source_hash = 274db254a6979bde5aad404763a704956940e465843f2a9bd9ed7af22e2c0efc
-patch_filename = expat_2.6.3-1_patch.zip
-patch_url = https://wrapdb.mesonbuild.com/v2/expat_2.6.3-1/get_patch
-patch_hash = cf017fbe105e31428b2768360bd9be39094df4e948a1e8d1c54b6f7c76460cb1
-source_fallback_url = https://github.com/mesonbuild/wrapdb/releases/download/expat_2.6.3-1/expat-2.6.3.tar.bz2
-wrapdb_version = 2.6.3-1
+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
[provide]
expat = expat_dep
diff --git a/subprojects/pcre2.wrap b/subprojects/pcre2.wrap
index 7e184472543..f45c968e2f3 100644
--- a/subprojects/pcre2.wrap
+++ b/subprojects/pcre2.wrap
@@ -1,13 +1,13 @@
[wrap-file]
-directory = pcre2-10.44
-source_url = https://github.com/PCRE2Project/pcre2/releases/download/pcre2-10.44/pcre2-10.44.tar.bz2
-source_filename = pcre2-10.44.tar.bz2
-source_hash = d34f02e113cf7193a1ebf2770d3ac527088d485d4e047ed10e5d217c6ef5de96
-patch_filename = pcre2_10.44-2_patch.zip
-patch_url = https://wrapdb.mesonbuild.com/v2/pcre2_10.44-2/get_patch
-patch_hash = 4336d422ee9043847e5e10dbbbd01940d4c9e5027f31ccdc33a7898a1ca94009
-source_fallback_url = https://github.com/mesonbuild/wrapdb/releases/download/pcre2_10.44-2/pcre2-10.44.tar.bz2
-wrapdb_version = 10.44-2
+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
[provide]
libpcre2-8 = libpcre2_8
--
2.50.0.195.g74e6fc65d0.dirty
^ permalink raw reply related [flat|nested] 46+ messages in thread
* [PATCH v2 8/8] ci: use Meson's new `--slice` option
2025-07-08 7:57 ` [PATCH v2 0/8] A handful of Meson cleanups and improvements Patrick Steinhardt
` (6 preceding siblings ...)
2025-07-08 7:57 ` [PATCH v2 7/8] meson: update subproject wrappers Patrick Steinhardt
@ 2025-07-08 7:57 ` Patrick Steinhardt
7 siblings, 0 replies; 46+ messages in thread
From: Patrick Steinhardt @ 2025-07-08 7:57 UTC (permalink / raw)
To: git; +Cc: Ramsay Jones, irecca.kun, Eli Schwartz, Jeff King, Junio C Hamano
As executing our test suite is notoriously slow on Windows we use matrix
jobs in our CI systems to slice up tests and run them via multiple jobs.
On Meson this is done with a comparatively complex PowerShell invocation
as Meson didn't yet have a native way to slice tests like this.
I have upstreamed a new `--slice` option [1] that addresses this use
case though, which has been merged and released with Meson 1.8. Both
GitLab and GitHub CI have Meson 1.8.2 available by now, so let's update
the jobs to use that new option.
[1]: https://github.com/mesonbuild/meson/pull/14092
Signed-off-by: Patrick Steinhardt <ps@pks.im>
---
.github/workflows/main.yml | 2 +-
.gitlab-ci.yml | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
index 7dbf9f7f123..d122e79415a 100644
--- a/.github/workflows/main.yml
+++ b/.github/workflows/main.yml
@@ -298,7 +298,7 @@ jobs:
path: build
- name: Test
shell: pwsh
- run: meson test -C build --list | Select-Object -Skip 1 | Select-String .* | Group-Object -Property { $_.LineNumber % 10 } | Where-Object Name -EQ ${{ matrix.nr }} | ForEach-Object { meson test -C build --no-rebuild --print-errorlogs $_.Group }
+ run: meson test -C build --no-rebuild --print-errorlogs --slice "$(1+${{ matrix.nr }})/10"
regular:
name: ${{matrix.vector.jobname}} (${{matrix.vector.pool}})
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index bb6d5b976cd..af10ebb59a3 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -178,7 +178,7 @@ test:msvc-meson:
- job: "build:msvc-meson"
artifacts: true
script:
- - meson test -C build --list | Select-Object -Skip 1 | Select-String .* | Group-Object -Property { $_.LineNumber % $Env:CI_NODE_TOTAL + 1 } | Where-Object Name -EQ $Env:CI_NODE_INDEX | ForEach-Object { meson test -C build --no-rebuild --print-errorlogs $_.Group; if (!$?) { exit $LASTEXITCODE } }
+ - meson test -C build --no-rebuild --print-errorlogs --slice $Env:CI_NODE_INDEX/$Env:CI_NODE_TOTAL
parallel: 10
test:fuzz-smoke-tests:
--
2.50.0.195.g74e6fc65d0.dirty
^ permalink raw reply related [flat|nested] 46+ messages in thread
* Re: [PATCH 6/8] meson: fix GIT_EXEC_PATH with overridden -Dlibexecdir=
2025-07-03 16:39 ` Ramsay Jones
@ 2025-07-08 8:44 ` Patrick Steinhardt
0 siblings, 0 replies; 46+ messages in thread
From: Patrick Steinhardt @ 2025-07-08 8:44 UTC (permalink / raw)
To: Ramsay Jones; +Cc: git, irecca.kun, Eli Schwartz
On Thu, Jul 03, 2025 at 05:39:31PM +0100, Ramsay Jones wrote:
>
>
> On 03/07/2025 10:28, Patrick Steinhardt wrote:
> > In 837f637cf51 (meson.build: correct setting of GIT_EXEC_PATH,
> > 2025-05-19) we have fixed how we configure GIT_EXEC_PATH in some cases.
> > It was reported [1] though that this causes a new issue when overriding
> > libexecdir with `-Dlibexecdir=`:
>
> Yep, I noticed this report when I got back. My first thought was 'no, we
> may just as well revert commit 837f637cf51', since that is in effect what
> this patch does! ;)
>
> Then I had a quick look and left a diff/commit 'note to myself' which
> effectively did a global search/replace of the string:
>
> install_dir: get_option('libexecdir') / 'git-core'
>
> with:
>
> install_dir: git_exec_path
>
> and put it on my TODO list. (Note, that is *all* I did - I didn't even
> attempt a build, let alone test!)
>
> Of course, I need to spend some time on this (if nothing else, git-gui and
> presumably gitk will need some changes as well?).
Neither git-gui nor gitk are currently supported by Meson. I do have a
local patch series that backfills the support though.
> Hopefully, I can find some time soon (those round tuits are in short supply).
>
> >
> > $ meson setup -Dprefix=/tmp/git -Dlibexecdir=libexec-different
> > $ meson install
> > $ /tmp/git/bin/git --exec-path
> > /tmp/git/libexec-different
> > $ /tmp/git/bin/git daemon
> > git: 'daemon' is not a git command. See 'git --help'.
> >
> > While we correctly propagate the libexecdir to Git's GIT_EXEC_PATH, we
> > forgot to append 'git-core'. Consequently, it cannot find its binaries
> > anymore.
> >
> > Fix this issue by appending 'git-core' to libexecdir. With this, things
> > work as expected:
> >
> > $ meson install
> > $ /tmp/git/bin/git --exec-path
> > /tmp/git/libexec-different/git-core
> > $ /tmp/git/bin/git daemon -h
> > ...
>
> Hmm, I'm pretty certain I tested commit 837f637cf51 in a similar (but
> not identical) way! ;) I will use the above test next time.
>
> Sorry for causing a regression. :(
No worries, it happens to all of us.
Patrick
^ permalink raw reply [flat|nested] 46+ messages in thread
* Re: [PATCH 1/8] meson: stop discovering native version of Python
2025-07-03 9:28 ` [PATCH 1/8] meson: stop discovering native version of Python Patrick Steinhardt
@ 2025-07-08 19:38 ` Justin Tobler
2025-07-09 6:16 ` Patrick Steinhardt
0 siblings, 1 reply; 46+ messages in thread
From: Justin Tobler @ 2025-07-08 19:38 UTC (permalink / raw)
To: Patrick Steinhardt; +Cc: git, Ramsay Jones, irecca.kun, Eli Schwartz
On 25/07/03 11:28AM, Patrick Steinhardt wrote:
> When Python features are enabled we search both for a native and
> non-native version of Python. This is wrong though: we don't use Python
> in our build process, so there is no need to search for it in the first
> place.
>
> There is one location where we use the native version of Python, namely
> when deciding whether or not we want to wire up git-p4(1). This check is
> invalid though, as we shouldn't check for the build host to have Python,
> but for the target host.
Ok, we are using the native python version, but we should really care
wether the target host has python.
> Fix this invalid check to use the non-native version of Python and stop
> searching for a native version of Python altogether.
>
> Signed-off-by: Patrick Steinhardt <ps@pks.im>
> ---
> meson.build | 9 ++++-----
> 1 file changed, 4 insertions(+), 5 deletions(-)
>
> diff --git a/meson.build b/meson.build
> index 7fea4a34d68..21fdff0f496 100644
> --- a/meson.build
> +++ b/meson.build
> @@ -866,9 +866,8 @@ if host_machine.system() == 'cygwin' or host_machine.system() == 'windows'
> endif
> build_options_config.set_quoted('X', executable_suffix)
>
> -python = import('python').find_installation('python3', required: get_option('python'))
> -target_python = find_program('python3', native: false, required: python.found())
> -if python.found()
> +target_python = find_program('python3', native: false, required: get_option('python'))
> +if target_python.found()
Ok, so here we are not actually using python to build, but instead need
to know whether to include this build configuration which is dependent
on the target host having python. Makes sense.
It might be nice to leave a comment here to explain this. The changes in
this patch look good though.
> build_options_config.set('NO_PYTHON', '')
> else
> libgit_c_args += '-DNO_PYTHON'
> @@ -1979,7 +1978,7 @@ if perl_features_enabled
> subdir('perl')
> endif
>
> -if python.found()
> +if target_python.found()
> scripts_python = [
> 'git-p4.py'
> ]
> @@ -2202,7 +2201,7 @@ summary({
> 'iconv': iconv.found(),
> 'pcre2': pcre2.found(),
> 'perl': perl_features_enabled,
> - 'python': python.found(),
> + 'python': target_python.found(),
> }, section: 'Auto-detected features')
>
> summary({
>
> --
> 2.50.0.195.g74e6fc65d0.dirty
>
>
^ permalink raw reply [flat|nested] 46+ messages in thread
* Re: [PATCH 3/8] meson: improve summary of auto-detected features
2025-07-03 9:28 ` [PATCH 3/8] meson: improve summary of auto-detected features Patrick Steinhardt
@ 2025-07-08 19:56 ` Justin Tobler
0 siblings, 0 replies; 46+ messages in thread
From: Justin Tobler @ 2025-07-08 19:56 UTC (permalink / raw)
To: Patrick Steinhardt; +Cc: git, Ramsay Jones, irecca.kun, Eli Schwartz
On 25/07/03 11:28AM, Patrick Steinhardt wrote:
> The summary of auto-detected features prints a boolean for every option
> to tell the user whether or not the feature has been auto-enabled or
> not. This summary can be improved though, as in some cases this boolean
> is derived from a dependency. So if we pass in the dependency directly,
> then Meson knows to both print a boolean and, if the dependency was
> found, it also prints a version number.
>
> Adapt the code accordingly and enable `bool_yn` so that actual booleans
> are formatted similarly to dependencies. Before this change:
Ok so without `bool_yn` enabled, only the dependencies listed directly
would say YES/NO and not match the other entries.
> Auto-detected features
> benchmarks : true
> curl : true
> expat : true
> gettext : true
> gitweb : true
> iconv : true
> pcre2 : true
> perl : true
> python : true
>
> And after this change, we now see the version numbers as expected:
>
> Auto-detected features
> benchmarks : YES
> curl : YES 8.14.1
> expat : YES 2.7.1
> gettext : YES
> gitweb : YES
> iconv : YES
> pcre2 : YES 10.44
> perl : YES
> python : YES
>
> Note that this change also enables colorization of the boolean options,
> green for "YES" and red for "NO".
Ok, it looks like colorization it not an explicit option, but comes
automatically with the `bool_yn` and dependency change. Nice.
> Signed-off-by: Patrick Steinhardt <ps@pks.im>
> ---
> meson.build | 12 ++++++------
> 1 file changed, 6 insertions(+), 6 deletions(-)
>
> diff --git a/meson.build b/meson.build
> index 4e41c3007bb..4f22d72641e 100644
> --- a/meson.build
> +++ b/meson.build
> @@ -2193,15 +2193,15 @@ meson.add_dist_script(
>
> summary({
> 'benchmarks': get_option('tests') and perl.found() and time.found(),
> - 'curl': curl.found(),
> - 'expat': expat.found(),
> - 'gettext': intl.found(),
> + 'curl': curl,
> + 'expat': expat,
> + 'gettext': intl,
> 'gitweb': gitweb_option.allowed(),
> - 'iconv': iconv.found(),
> - 'pcre2': pcre2.found(),
> + 'iconv': iconv,
> + 'pcre2': pcre2,
> 'perl': perl_features_enabled,
> 'python': target_python.found(),
> -}, section: 'Auto-detected features')
> +}, section: 'Auto-detected features', bool_yn: true)
Looks good!
-Justin
^ permalink raw reply [flat|nested] 46+ messages in thread
* Re: [PATCH v2 5/8] meson: fix lookup of shell on MINGW64
2025-07-08 7:57 ` [PATCH v2 5/8] meson: fix lookup of shell on MINGW64 Patrick Steinhardt
@ 2025-07-08 20:44 ` Justin Tobler
0 siblings, 0 replies; 46+ messages in thread
From: Justin Tobler @ 2025-07-08 20:44 UTC (permalink / raw)
To: Patrick Steinhardt
Cc: git, Ramsay Jones, irecca.kun, Eli Schwartz, Jeff King,
Junio C Hamano
On 25/07/08 09:57AM, Patrick Steinhardt wrote:
> In 4cba20fbdc6 (meson: prefer shell at "/bin/sh", 2025-04-25) we have
> addressed an issue where the shell path embedded into Git was looked up
> via PATH, which easily led to unportable shell paths other than the
> usual "/bin/sh" location. The fix was to simply add '/bin' to the search
> path explicitly, which made us prefer that directory over the PATH-based
> lookup.
>
> This fix causes issues on MINGW64 though, which uses Windows-style
> paths. "/bin" is not an absolute Windows-style path, but Meson expects
> the directories to be absolute. This leads to the following error:
>
> meson.build:248:15: ERROR: Search directory /bin is not an absolute path.
Ok so the specifed `dirs` takes higher precedence over searching the
$PATH and appending `/bin` was how we ensured `/bin/sh` was checked
first. The problem is that for MINGW64, `/bin` is not a valid absolute
path and results in the above mention error.
> Fix this by instead searching for both '/bin/sh' and 'sh', which also
> causes us to prefer '/bin/sh' over a PATH-based lookup. Meson does
> accept that path alright on MINGW64, even though it's not an absolute
> Windows-style path, either.
To avoid this problem, we instead search for `/bin/sh` directly. By
specifying `/bin/sh` first, we maintain the same preference without
affecting MINGW64. Makes sense.
> Furthermore, this continues to work alright with cross-files, as well,
> in case one wants to explicitly override the shell path:
>
> $ meson setup build
> ...
> Runtime executable paths
> perl : /nix/store/gy10hw004rl2xfbfq41vnw0yb1w8rvbl-perl-5.40.0/bin/perl
> python : /nix/store/sd81bvmch7njdpwx3lkjslixcbj5mivz-python3-3.13.4/bin/python3
> shell : /bin/sh
>
> $ cat >cross.ini <<-EOF
> [binaries]
> sh = '/nix/store/94lg0shvsfc845zy8gnflvpqxxiyijbz-bash-interactive-5.2p37/bin/bash'
> EOF
>
> $ meson setup build --cross-file=cross.ini --wipe
> ...
> Runtime executable paths
> perl : /nix/store/gy10hw004rl2xfbfq41vnw0yb1w8rvbl-perl-5.40.0/bin/perl
> python : /nix/store/sd81bvmch7njdpwx3lkjslixcbj5mivz-python3-3.13.4/bin/python3
> shell : /nix/store/94lg0shvsfc845zy8gnflvpqxxiyijbz-bash-interactive-5.2p37/bin/bash
>
> Signed-off-by: Patrick Steinhardt <ps@pks.im>
> ---
> meson.build | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/meson.build b/meson.build
> index 4f22d72641e..bef80b118a8 100644
> --- a/meson.build
> +++ b/meson.build
> @@ -245,7 +245,7 @@ time = find_program('time', dirs: program_path, required: get_option('benchmarks
> # "/bin/sh" over a PATH-based lookup, which provides a working shell on most
> # supported systems. This path is also the default shell path used by our
> # Makefile. This lookup can be overridden via `program_path`.
> -target_shell = find_program('sh', dirs: program_path + [ '/bin' ], native: false)
> +target_shell = find_program('/bin/sh', 'sh', dirs: program_path, native: false)
Looks good!
-Justin
^ permalink raw reply [flat|nested] 46+ messages in thread
* Re: [PATCH 1/8] meson: stop discovering native version of Python
2025-07-08 19:38 ` Justin Tobler
@ 2025-07-09 6:16 ` Patrick Steinhardt
0 siblings, 0 replies; 46+ messages in thread
From: Patrick Steinhardt @ 2025-07-09 6:16 UTC (permalink / raw)
To: Justin Tobler; +Cc: git, Ramsay Jones, irecca.kun, Eli Schwartz
On Tue, Jul 08, 2025 at 02:38:49PM -0500, Justin Tobler wrote:
> On 25/07/03 11:28AM, Patrick Steinhardt wrote:
> > diff --git a/meson.build b/meson.build
> > index 7fea4a34d68..21fdff0f496 100644
> > --- a/meson.build
> > +++ b/meson.build
> > @@ -866,9 +866,8 @@ if host_machine.system() == 'cygwin' or host_machine.system() == 'windows'
> > endif
> > build_options_config.set_quoted('X', executable_suffix)
> >
> > -python = import('python').find_installation('python3', required: get_option('python'))
> > -target_python = find_program('python3', native: false, required: python.found())
> > -if python.found()
> > +target_python = find_program('python3', native: false, required: get_option('python'))
> > +if target_python.found()
>
> Ok, so here we are not actually using python to build, but instead need
> to know whether to include this build configuration which is dependent
> on the target host having python. Makes sense.
>
> It might be nice to leave a comment here to explain this. The changes in
> this patch look good though.
Makes sense, will do.
Patrick
^ permalink raw reply [flat|nested] 46+ messages in thread
* [PATCH v3 0/8] A handful of Meson cleanups and improvements
2025-07-03 9:28 [PATCH 0/8] A handful of Meson cleanups and improvements Patrick Steinhardt
` (8 preceding siblings ...)
2025-07-08 7:57 ` [PATCH v2 0/8] A handful of Meson cleanups and improvements Patrick Steinhardt
@ 2025-07-09 6:23 ` Patrick Steinhardt
2025-07-09 6:23 ` [PATCH v3 1/8] meson: stop discovering native version of Python Patrick Steinhardt
` (8 more replies)
9 siblings, 9 replies; 46+ messages in thread
From: Patrick Steinhardt @ 2025-07-09 6:23 UTC (permalink / raw)
To: git
Cc: Ramsay Jones, irecca.kun, Eli Schwartz, Jeff King, Junio C Hamano,
Justin Tobler
Hi,
this patch series contains a couple of more-or-less random cleanups and
improvements for Meson that I have accumulated over the last two months.
Changes in v2:
- Fix an off-by-one error for test slices used in GitHub Workflows.
- Now tested with both GitLab (https://gitlab.com/gitlab-org/git/-/merge_requests/375)
and GitHub (https://github.com/git/git/pull/2010).
- Link to v1: https://lore.kernel.org/r/20250703-b4-pks-meson-cleanups-v1-0-2804c2932abe@pks.im
Changes in v3:
- Add a comment explaining why we only need to search for Python on
the build target.
- Link to v2: https://lore.kernel.org/r/20250708-b4-pks-meson-cleanups-v2-0-94ac53cd4b95@pks.im
Thanks!
Patrick
---
Patrick Steinhardt (8):
meson: stop discovering native version of Python
meson: stop printing 'https' option twice in our summaries
meson: improve summary of auto-detected features
meson: clean up unnecessary variables
meson: fix lookup of shell on MINGW64
meson: fix GIT_EXEC_PATH with overridden -Dlibexecdir=
meson: update subproject wrappers
ci: use Meson's new `--slice` option
.github/workflows/main.yml | 2 +-
.gitlab-ci.yml | 2 +-
Documentation/meson.build | 5 ++---
meson.build | 29 +++++++++++++++--------------
subprojects/expat.wrap | 18 +++++++++---------
subprojects/pcre2.wrap | 18 +++++++++---------
6 files changed, 37 insertions(+), 37 deletions(-)
Range-diff versus v2:
1: af222af4b0b ! 1: 5b6ff96df15 meson: stop discovering native version of Python
@@ meson.build: if host_machine.system() == 'cygwin' or host_machine.system() == 'w
-python = import('python').find_installation('python3', required: get_option('python'))
-target_python = find_program('python3', native: false, required: python.found())
-if python.found()
++# Python is not used for our build system, but exclusively for git-p4.
++# Consequently we only need to determine whether Python is available for the
++# build target.
+target_python = find_program('python3', native: false, required: get_option('python'))
+if target_python.found()
build_options_config.set('NO_PYTHON', '')
2: e1fe6822400 = 2: cb5a42b63a0 meson: stop printing 'https' option twice in our summaries
3: 9caa9813f94 = 3: 4b165ffa205 meson: improve summary of auto-detected features
4: 2fbae915050 = 4: fed79e92b3e meson: clean up unnecessary variables
5: 2a72ec1cf78 = 5: f7496adc08a meson: fix lookup of shell on MINGW64
6: c44a8783eac = 6: e7692a76c89 meson: fix GIT_EXEC_PATH with overridden -Dlibexecdir=
7: 3fb621da6ae = 7: 19853592a22 meson: update subproject wrappers
8: ad9176ef14e = 8: 5cd1b3ec3c3 ci: use Meson's new `--slice` option
---
base-commit: 8b6f19ccfc3aefbd0f22f6b7d56ad6a3fc5e4f37
change-id: 20250703-b4-pks-meson-cleanups-f53858d694f3
^ permalink raw reply [flat|nested] 46+ messages in thread
* [PATCH v3 1/8] meson: stop discovering native version of Python
2025-07-09 6:23 ` [PATCH v3 0/8] A handful of Meson cleanups and improvements Patrick Steinhardt
@ 2025-07-09 6:23 ` Patrick Steinhardt
2025-07-09 15:09 ` Junio C Hamano
2025-07-09 6:23 ` [PATCH v3 2/8] meson: stop printing 'https' option twice in our summaries Patrick Steinhardt
` (7 subsequent siblings)
8 siblings, 1 reply; 46+ messages in thread
From: Patrick Steinhardt @ 2025-07-09 6:23 UTC (permalink / raw)
To: git
Cc: Ramsay Jones, irecca.kun, Eli Schwartz, Jeff King, Junio C Hamano,
Justin Tobler
When Python features are enabled we search both for a native and
non-native version of Python. This is wrong though: we don't use Python
in our build process, so there is no need to search for it in the first
place.
There is one location where we use the native version of Python, namely
when deciding whether or not we want to wire up git-p4(1). This check is
invalid though, as we shouldn't check for the build host to have Python,
but for the target host.
Fix this invalid check to use the non-native version of Python and stop
searching for a native version of Python altogether.
Signed-off-by: Patrick Steinhardt <ps@pks.im>
---
meson.build | 12 +++++++-----
1 file changed, 7 insertions(+), 5 deletions(-)
diff --git a/meson.build b/meson.build
index 7fea4a34d68..4ee1a55b0bb 100644
--- a/meson.build
+++ b/meson.build
@@ -866,9 +866,11 @@ if host_machine.system() == 'cygwin' or host_machine.system() == 'windows'
endif
build_options_config.set_quoted('X', executable_suffix)
-python = import('python').find_installation('python3', required: get_option('python'))
-target_python = find_program('python3', native: false, required: python.found())
-if python.found()
+# Python is not used for our build system, but exclusively for git-p4.
+# Consequently we only need to determine whether Python is available for the
+# build target.
+target_python = find_program('python3', native: false, required: get_option('python'))
+if target_python.found()
build_options_config.set('NO_PYTHON', '')
else
libgit_c_args += '-DNO_PYTHON'
@@ -1979,7 +1981,7 @@ if perl_features_enabled
subdir('perl')
endif
-if python.found()
+if target_python.found()
scripts_python = [
'git-p4.py'
]
@@ -2202,7 +2204,7 @@ summary({
'iconv': iconv.found(),
'pcre2': pcre2.found(),
'perl': perl_features_enabled,
- 'python': python.found(),
+ 'python': target_python.found(),
}, section: 'Auto-detected features')
summary({
--
2.50.1.327.g047016eb4a.dirty
^ permalink raw reply related [flat|nested] 46+ messages in thread
* [PATCH v3 2/8] meson: stop printing 'https' option twice in our summaries
2025-07-09 6:23 ` [PATCH v3 0/8] A handful of Meson cleanups and improvements Patrick Steinhardt
2025-07-09 6:23 ` [PATCH v3 1/8] meson: stop discovering native version of Python Patrick Steinhardt
@ 2025-07-09 6:23 ` Patrick Steinhardt
2025-07-09 15:17 ` Junio C Hamano
2025-07-09 6:23 ` [PATCH v3 3/8] meson: improve summary of auto-detected features Patrick Steinhardt
` (6 subsequent siblings)
8 siblings, 1 reply; 46+ messages in thread
From: Patrick Steinhardt @ 2025-07-09 6:23 UTC (permalink / raw)
To: git
Cc: Ramsay Jones, irecca.kun, Eli Schwartz, Jeff King, Junio C Hamano,
Justin Tobler
The value for the 'https' backend option is printed twice: once via the
summary of auto-detected features and once via our summary of backends.
Drop it from the former summary.
Signed-off-by: Patrick Steinhardt <ps@pks.im>
---
meson.build | 1 -
1 file changed, 1 deletion(-)
diff --git a/meson.build b/meson.build
index 4ee1a55b0bb..0ed00254ef3 100644
--- a/meson.build
+++ b/meson.build
@@ -2200,7 +2200,6 @@ summary({
'expat': expat.found(),
'gettext': intl.found(),
'gitweb': gitweb_option.allowed(),
- 'https': https_backend,
'iconv': iconv.found(),
'pcre2': pcre2.found(),
'perl': perl_features_enabled,
--
2.50.1.327.g047016eb4a.dirty
^ permalink raw reply related [flat|nested] 46+ messages in thread
* [PATCH v3 3/8] meson: improve summary of auto-detected features
2025-07-09 6:23 ` [PATCH v3 0/8] A handful of Meson cleanups and improvements Patrick Steinhardt
2025-07-09 6:23 ` [PATCH v3 1/8] meson: stop discovering native version of Python Patrick Steinhardt
2025-07-09 6:23 ` [PATCH v3 2/8] meson: stop printing 'https' option twice in our summaries Patrick Steinhardt
@ 2025-07-09 6:23 ` Patrick Steinhardt
2025-07-10 15:25 ` Toon Claes
2025-07-09 6:23 ` [PATCH v3 4/8] meson: clean up unnecessary variables Patrick Steinhardt
` (5 subsequent siblings)
8 siblings, 1 reply; 46+ messages in thread
From: Patrick Steinhardt @ 2025-07-09 6:23 UTC (permalink / raw)
To: git
Cc: Ramsay Jones, irecca.kun, Eli Schwartz, Jeff King, Junio C Hamano,
Justin Tobler
The summary of auto-detected features prints a boolean for every option
to tell the user whether or not the feature has been auto-enabled or
not. This summary can be improved though, as in some cases this boolean
is derived from a dependency. So if we pass in the dependency directly,
then Meson knows to both print a boolean and, if the dependency was
found, it also prints a version number.
Adapt the code accordingly and enable `bool_yn` so that actual booleans
are formatted similarly to dependencies. Before this change:
Auto-detected features
benchmarks : true
curl : true
expat : true
gettext : true
gitweb : true
iconv : true
pcre2 : true
perl : true
python : true
And after this change, we now see the version numbers as expected:
Auto-detected features
benchmarks : YES
curl : YES 8.14.1
expat : YES 2.7.1
gettext : YES
gitweb : YES
iconv : YES
pcre2 : YES 10.44
perl : YES
python : YES
Note that this change also enables colorization of the boolean options,
green for "YES" and red for "NO".
Signed-off-by: Patrick Steinhardt <ps@pks.im>
---
meson.build | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/meson.build b/meson.build
index 0ed00254ef3..29d076bbaac 100644
--- a/meson.build
+++ b/meson.build
@@ -2196,15 +2196,15 @@ meson.add_dist_script(
summary({
'benchmarks': get_option('tests') and perl.found() and time.found(),
- 'curl': curl.found(),
- 'expat': expat.found(),
- 'gettext': intl.found(),
+ 'curl': curl,
+ 'expat': expat,
+ 'gettext': intl,
'gitweb': gitweb_option.allowed(),
- 'iconv': iconv.found(),
- 'pcre2': pcre2.found(),
+ 'iconv': iconv,
+ 'pcre2': pcre2,
'perl': perl_features_enabled,
'python': target_python.found(),
-}, section: 'Auto-detected features')
+}, section: 'Auto-detected features', bool_yn: true)
summary({
'csprng': csprng_backend,
--
2.50.1.327.g047016eb4a.dirty
^ permalink raw reply related [flat|nested] 46+ messages in thread
* [PATCH v3 4/8] meson: clean up unnecessary variables
2025-07-09 6:23 ` [PATCH v3 0/8] A handful of Meson cleanups and improvements Patrick Steinhardt
` (2 preceding siblings ...)
2025-07-09 6:23 ` [PATCH v3 3/8] meson: improve summary of auto-detected features Patrick Steinhardt
@ 2025-07-09 6:23 ` Patrick Steinhardt
2025-07-09 6:23 ` [PATCH v3 5/8] meson: fix lookup of shell on MINGW64 Patrick Steinhardt
` (4 subsequent siblings)
8 siblings, 0 replies; 46+ messages in thread
From: Patrick Steinhardt @ 2025-07-09 6:23 UTC (permalink / raw)
To: git
Cc: Ramsay Jones, irecca.kun, Eli Schwartz, Jeff King, Junio C Hamano,
Justin Tobler
The `manpage_target` variable isn't used at all, and the `manpage_path`
variable is only used in a single location. Remove the former variable
and inline the latter.
Signed-off-by: Patrick Steinhardt <ps@pks.im>
---
Documentation/meson.build | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/Documentation/meson.build b/Documentation/meson.build
index 2fe1a1369d4..4404c623f00 100644
--- a/Documentation/meson.build
+++ b/Documentation/meson.build
@@ -375,8 +375,7 @@ foreach manpage, category : manpages
output: fs.stem(manpage) + '.xml',
)
- manpage_path = fs.stem(manpage) + '.' + category.to_string()
- manpage_target = custom_target(
+ custom_target(
command: [
xmlto,
'-m', '@INPUT0@',
@@ -392,7 +391,7 @@ foreach manpage, category : manpages
'manpage-normal.xsl',
'manpage-bold-literal.xsl',
],
- output: manpage_path,
+ output: fs.stem(manpage) + '.' + category.to_string(),
install: true,
install_dir: get_option('mandir') / 'man' + category.to_string(),
)
--
2.50.1.327.g047016eb4a.dirty
^ permalink raw reply related [flat|nested] 46+ messages in thread
* [PATCH v3 5/8] meson: fix lookup of shell on MINGW64
2025-07-09 6:23 ` [PATCH v3 0/8] A handful of Meson cleanups and improvements Patrick Steinhardt
` (3 preceding siblings ...)
2025-07-09 6:23 ` [PATCH v3 4/8] meson: clean up unnecessary variables Patrick Steinhardt
@ 2025-07-09 6:23 ` Patrick Steinhardt
2025-07-09 6:23 ` [PATCH v3 6/8] meson: fix GIT_EXEC_PATH with overridden -Dlibexecdir= Patrick Steinhardt
` (3 subsequent siblings)
8 siblings, 0 replies; 46+ messages in thread
From: Patrick Steinhardt @ 2025-07-09 6:23 UTC (permalink / raw)
To: git
Cc: Ramsay Jones, irecca.kun, Eli Schwartz, Jeff King, Junio C Hamano,
Justin Tobler
In 4cba20fbdc6 (meson: prefer shell at "/bin/sh", 2025-04-25) we have
addressed an issue where the shell path embedded into Git was looked up
via PATH, which easily led to unportable shell paths other than the
usual "/bin/sh" location. The fix was to simply add '/bin' to the search
path explicitly, which made us prefer that directory over the PATH-based
lookup.
This fix causes issues on MINGW64 though, which uses Windows-style
paths. "/bin" is not an absolute Windows-style path, but Meson expects
the directories to be absolute. This leads to the following error:
meson.build:248:15: ERROR: Search directory /bin is not an absolute path.
Fix this by instead searching for both '/bin/sh' and 'sh', which also
causes us to prefer '/bin/sh' over a PATH-based lookup. Meson does
accept that path alright on MINGW64, even though it's not an absolute
Windows-style path, either.
Furthermore, this continues to work alright with cross-files, as well,
in case one wants to explicitly override the shell path:
$ meson setup build
...
Runtime executable paths
perl : /nix/store/gy10hw004rl2xfbfq41vnw0yb1w8rvbl-perl-5.40.0/bin/perl
python : /nix/store/sd81bvmch7njdpwx3lkjslixcbj5mivz-python3-3.13.4/bin/python3
shell : /bin/sh
$ cat >cross.ini <<-EOF
[binaries]
sh = '/nix/store/94lg0shvsfc845zy8gnflvpqxxiyijbz-bash-interactive-5.2p37/bin/bash'
EOF
$ meson setup build --cross-file=cross.ini --wipe
...
Runtime executable paths
perl : /nix/store/gy10hw004rl2xfbfq41vnw0yb1w8rvbl-perl-5.40.0/bin/perl
python : /nix/store/sd81bvmch7njdpwx3lkjslixcbj5mivz-python3-3.13.4/bin/python3
shell : /nix/store/94lg0shvsfc845zy8gnflvpqxxiyijbz-bash-interactive-5.2p37/bin/bash
Signed-off-by: Patrick Steinhardt <ps@pks.im>
---
meson.build | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/meson.build b/meson.build
index 29d076bbaac..02d73188537 100644
--- a/meson.build
+++ b/meson.build
@@ -245,7 +245,7 @@ time = find_program('time', dirs: program_path, required: get_option('benchmarks
# "/bin/sh" over a PATH-based lookup, which provides a working shell on most
# supported systems. This path is also the default shell path used by our
# Makefile. This lookup can be overridden via `program_path`.
-target_shell = find_program('sh', dirs: program_path + [ '/bin' ], native: false)
+target_shell = find_program('/bin/sh', 'sh', dirs: program_path, native: false)
# Sanity-check that programs required for the build exist.
foreach tool : ['cat', 'cut', 'grep', 'sort', 'tr', 'uname']
--
2.50.1.327.g047016eb4a.dirty
^ permalink raw reply related [flat|nested] 46+ messages in thread
* [PATCH v3 6/8] meson: fix GIT_EXEC_PATH with overridden -Dlibexecdir=
2025-07-09 6:23 ` [PATCH v3 0/8] A handful of Meson cleanups and improvements Patrick Steinhardt
` (4 preceding siblings ...)
2025-07-09 6:23 ` [PATCH v3 5/8] meson: fix lookup of shell on MINGW64 Patrick Steinhardt
@ 2025-07-09 6:23 ` Patrick Steinhardt
2025-07-09 6:23 ` [PATCH v3 7/8] meson: update subproject wrappers Patrick Steinhardt
` (2 subsequent siblings)
8 siblings, 0 replies; 46+ messages in thread
From: Patrick Steinhardt @ 2025-07-09 6:23 UTC (permalink / raw)
To: git
Cc: Ramsay Jones, irecca.kun, Eli Schwartz, Jeff King, Junio C Hamano,
Justin Tobler
In 837f637cf51 (meson.build: correct setting of GIT_EXEC_PATH,
2025-05-19) we have fixed how we configure GIT_EXEC_PATH in some cases.
It was reported [1] though that this causes a new issue when overriding
libexecdir with `-Dlibexecdir=`:
$ meson setup -Dprefix=/tmp/git -Dlibexecdir=libexec-different
$ meson install
$ /tmp/git/bin/git --exec-path
/tmp/git/libexec-different
$ /tmp/git/bin/git daemon
git: 'daemon' is not a git command. See 'git --help'.
While we correctly propagate the libexecdir to Git's GIT_EXEC_PATH, we
forgot to append 'git-core'. Consequently, it cannot find its binaries
anymore.
Fix this issue by appending 'git-core' to libexecdir. With this, things
work as expected:
$ meson install
$ /tmp/git/bin/git --exec-path
/tmp/git/libexec-different/git-core
$ /tmp/git/bin/git daemon -h
...
[1]: <66fd343a-1351-4350-83eb-c797e47b7693@gmail.com>
Reported-by: irecca.kun@gmail.com
Based-on-patch-by: irecca.kun@gmail.com
Signed-off-by: Patrick Steinhardt <ps@pks.im>
---
meson.build | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/meson.build b/meson.build
index 02d73188537..ffb1bb61d4a 100644
--- a/meson.build
+++ b/meson.build
@@ -1599,7 +1599,7 @@ endif
git_exec_path = 'libexec/git-core'
libexec = get_option('libexecdir')
if libexec != 'libexec' and libexec != '.'
- git_exec_path = libexec
+ git_exec_path = libexec / 'git-core'
endif
if get_option('runtime_prefix')
--
2.50.1.327.g047016eb4a.dirty
^ permalink raw reply related [flat|nested] 46+ messages in thread
* [PATCH v3 7/8] meson: update subproject wrappers
2025-07-09 6:23 ` [PATCH v3 0/8] A handful of Meson cleanups and improvements Patrick Steinhardt
` (5 preceding siblings ...)
2025-07-09 6:23 ` [PATCH v3 6/8] meson: fix GIT_EXEC_PATH with overridden -Dlibexecdir= Patrick Steinhardt
@ 2025-07-09 6:23 ` Patrick Steinhardt
2025-07-09 6:23 ` [PATCH v3 8/8] ci: use Meson's new `--slice` option Patrick Steinhardt
2025-07-09 21:37 ` [PATCH v3 0/8] A handful of Meson cleanups and improvements Justin Tobler
8 siblings, 0 replies; 46+ messages in thread
From: Patrick Steinhardt @ 2025-07-09 6:23 UTC (permalink / raw)
To: git
Cc: Ramsay Jones, irecca.kun, Eli Schwartz, Jeff King, Junio C Hamano,
Justin Tobler
Update subproject wrappers to newer versions by executing `meson wrap
update` in the project's root directory
Signed-off-by: Patrick Steinhardt <ps@pks.im>
---
subprojects/expat.wrap | 18 +++++++++---------
subprojects/pcre2.wrap | 18 +++++++++---------
2 files changed, 18 insertions(+), 18 deletions(-)
diff --git a/subprojects/expat.wrap b/subprojects/expat.wrap
index 2e0427dcfd1..0e9292f97bf 100644
--- a/subprojects/expat.wrap
+++ b/subprojects/expat.wrap
@@ -1,13 +1,13 @@
[wrap-file]
-directory = expat-2.6.3
-source_url = https://github.com/libexpat/libexpat/releases/download/R_2_6_3/expat-2.6.3.tar.xz
-source_filename = expat-2.6.3.tar.bz2
-source_hash = 274db254a6979bde5aad404763a704956940e465843f2a9bd9ed7af22e2c0efc
-patch_filename = expat_2.6.3-1_patch.zip
-patch_url = https://wrapdb.mesonbuild.com/v2/expat_2.6.3-1/get_patch
-patch_hash = cf017fbe105e31428b2768360bd9be39094df4e948a1e8d1c54b6f7c76460cb1
-source_fallback_url = https://github.com/mesonbuild/wrapdb/releases/download/expat_2.6.3-1/expat-2.6.3.tar.bz2
-wrapdb_version = 2.6.3-1
+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
[provide]
expat = expat_dep
diff --git a/subprojects/pcre2.wrap b/subprojects/pcre2.wrap
index 7e184472543..f45c968e2f3 100644
--- a/subprojects/pcre2.wrap
+++ b/subprojects/pcre2.wrap
@@ -1,13 +1,13 @@
[wrap-file]
-directory = pcre2-10.44
-source_url = https://github.com/PCRE2Project/pcre2/releases/download/pcre2-10.44/pcre2-10.44.tar.bz2
-source_filename = pcre2-10.44.tar.bz2
-source_hash = d34f02e113cf7193a1ebf2770d3ac527088d485d4e047ed10e5d217c6ef5de96
-patch_filename = pcre2_10.44-2_patch.zip
-patch_url = https://wrapdb.mesonbuild.com/v2/pcre2_10.44-2/get_patch
-patch_hash = 4336d422ee9043847e5e10dbbbd01940d4c9e5027f31ccdc33a7898a1ca94009
-source_fallback_url = https://github.com/mesonbuild/wrapdb/releases/download/pcre2_10.44-2/pcre2-10.44.tar.bz2
-wrapdb_version = 10.44-2
+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
[provide]
libpcre2-8 = libpcre2_8
--
2.50.1.327.g047016eb4a.dirty
^ permalink raw reply related [flat|nested] 46+ messages in thread
* [PATCH v3 8/8] ci: use Meson's new `--slice` option
2025-07-09 6:23 ` [PATCH v3 0/8] A handful of Meson cleanups and improvements Patrick Steinhardt
` (6 preceding siblings ...)
2025-07-09 6:23 ` [PATCH v3 7/8] meson: update subproject wrappers Patrick Steinhardt
@ 2025-07-09 6:23 ` Patrick Steinhardt
2025-07-09 21:37 ` [PATCH v3 0/8] A handful of Meson cleanups and improvements Justin Tobler
8 siblings, 0 replies; 46+ messages in thread
From: Patrick Steinhardt @ 2025-07-09 6:23 UTC (permalink / raw)
To: git
Cc: Ramsay Jones, irecca.kun, Eli Schwartz, Jeff King, Junio C Hamano,
Justin Tobler
As executing our test suite is notoriously slow on Windows we use matrix
jobs in our CI systems to slice up tests and run them via multiple jobs.
On Meson this is done with a comparatively complex PowerShell invocation
as Meson didn't yet have a native way to slice tests like this.
I have upstreamed a new `--slice` option [1] that addresses this use
case though, which has been merged and released with Meson 1.8. Both
GitLab and GitHub CI have Meson 1.8.2 available by now, so let's update
the jobs to use that new option.
[1]: https://github.com/mesonbuild/meson/pull/14092
Signed-off-by: Patrick Steinhardt <ps@pks.im>
---
.github/workflows/main.yml | 2 +-
.gitlab-ci.yml | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
index 7dbf9f7f123..d122e79415a 100644
--- a/.github/workflows/main.yml
+++ b/.github/workflows/main.yml
@@ -298,7 +298,7 @@ jobs:
path: build
- name: Test
shell: pwsh
- run: meson test -C build --list | Select-Object -Skip 1 | Select-String .* | Group-Object -Property { $_.LineNumber % 10 } | Where-Object Name -EQ ${{ matrix.nr }} | ForEach-Object { meson test -C build --no-rebuild --print-errorlogs $_.Group }
+ run: meson test -C build --no-rebuild --print-errorlogs --slice "$(1+${{ matrix.nr }})/10"
regular:
name: ${{matrix.vector.jobname}} (${{matrix.vector.pool}})
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index bb6d5b976cd..af10ebb59a3 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -178,7 +178,7 @@ test:msvc-meson:
- job: "build:msvc-meson"
artifacts: true
script:
- - meson test -C build --list | Select-Object -Skip 1 | Select-String .* | Group-Object -Property { $_.LineNumber % $Env:CI_NODE_TOTAL + 1 } | Where-Object Name -EQ $Env:CI_NODE_INDEX | ForEach-Object { meson test -C build --no-rebuild --print-errorlogs $_.Group; if (!$?) { exit $LASTEXITCODE } }
+ - meson test -C build --no-rebuild --print-errorlogs --slice $Env:CI_NODE_INDEX/$Env:CI_NODE_TOTAL
parallel: 10
test:fuzz-smoke-tests:
--
2.50.1.327.g047016eb4a.dirty
^ permalink raw reply related [flat|nested] 46+ messages in thread
* Re: [PATCH v3 1/8] meson: stop discovering native version of Python
2025-07-09 6:23 ` [PATCH v3 1/8] meson: stop discovering native version of Python Patrick Steinhardt
@ 2025-07-09 15:09 ` Junio C Hamano
2025-07-09 21:36 ` Justin Tobler
2025-07-09 22:22 ` Eli Schwartz
0 siblings, 2 replies; 46+ messages in thread
From: Junio C Hamano @ 2025-07-09 15:09 UTC (permalink / raw)
To: Patrick Steinhardt
Cc: git, Ramsay Jones, irecca.kun, Eli Schwartz, Jeff King,
Justin Tobler
Patrick Steinhardt <ps@pks.im> writes:
> When Python features are enabled we search both for a native and
> non-native version of Python. This is wrong though: we don't use Python
> in our build process, so there is no need to search for it in the first
> place.
>
> There is one location where we use the native version of Python, namely
> when deciding whether or not we want to wire up git-p4(1). This check is
> invalid though, as we shouldn't check for the build host to have Python,
> but for the target host.
>
> Fix this invalid check to use the non-native version of Python and stop
> searching for a native version of Python altogether.
>
> Signed-off-by: Patrick Steinhardt <ps@pks.im>
> ---
> meson.build | 12 +++++++-----
> 1 file changed, 7 insertions(+), 5 deletions(-)
The above explains the reasoning very nicely.
> -python = import('python').find_installation('python3', required: get_option('python'))
> -target_python = find_program('python3', native: false, required: python.found())
> -if python.found()
> +# Python is not used for our build system, but exclusively for git-p4.
> +# Consequently we only need to determine whether Python is available for the
> +# build target.
> +target_python = find_program('python3', native: false, required: get_option('python'))
> +if target_python.found()
> build_options_config.set('NO_PYTHON', '')
> else
> libgit_c_args += '-DNO_PYTHON'
We ask explicitly for Python 3 here.
Does find_program() have some magic to deal with installations where
Python3 is simply called /usr/bin/python (and worse yet, not as a
symbolic link to /usr/bin/python3)?
I found
"Since 0.50.0 if the "python3" program is requested and it is
not found in the system, Meson will return its current
interpreter",
which I suspect refers to the path to python3 used during the build
and is not what we want, at
https://mesonbuild.com/Reference-manual_functions.html#find_program
which got me a bit worried.
Perhaps everybody with Python3 has it at /usr/bin/python3 these
days, and my worries are unfounded? ;-)
Thanks.
> @@ -1979,7 +1981,7 @@ if perl_features_enabled
> subdir('perl')
> endif
>
> -if python.found()
> +if target_python.found()
> scripts_python = [
> 'git-p4.py'
> ]
> @@ -2202,7 +2204,7 @@ summary({
> 'iconv': iconv.found(),
> 'pcre2': pcre2.found(),
> 'perl': perl_features_enabled,
> - 'python': python.found(),
> + 'python': target_python.found(),
> }, section: 'Auto-detected features')
>
> summary({
^ permalink raw reply [flat|nested] 46+ messages in thread
* Re: [PATCH v3 2/8] meson: stop printing 'https' option twice in our summaries
2025-07-09 6:23 ` [PATCH v3 2/8] meson: stop printing 'https' option twice in our summaries Patrick Steinhardt
@ 2025-07-09 15:17 ` Junio C Hamano
0 siblings, 0 replies; 46+ messages in thread
From: Junio C Hamano @ 2025-07-09 15:17 UTC (permalink / raw)
To: Patrick Steinhardt
Cc: git, Ramsay Jones, irecca.kun, Eli Schwartz, Jeff King,
Justin Tobler
Patrick Steinhardt <ps@pks.im> writes:
> The value for the 'https' backend option is printed twice: once via the
> summary of auto-detected features and once via our summary of backends.
> Drop it from the former summary.
>
> Signed-off-by: Patrick Steinhardt <ps@pks.im>
> ---
> meson.build | 1 -
> 1 file changed, 1 deletion(-)
Good eyes. To me the distinction between "Auto-detected features"
and "Backends" feel a bit blurry, but most of the things in the
former are what dependency() returned, while https_backend is very
much driven by custom code of ours, so removing from "Auto-detected"
does make senseto me.
Thanks.
> diff --git a/meson.build b/meson.build
> index 4ee1a55b0bb..0ed00254ef3 100644
> --- a/meson.build
> +++ b/meson.build
> @@ -2200,7 +2200,6 @@ summary({
> 'expat': expat.found(),
> 'gettext': intl.found(),
> 'gitweb': gitweb_option.allowed(),
> - 'https': https_backend,
> 'iconv': iconv.found(),
> 'pcre2': pcre2.found(),
> 'perl': perl_features_enabled,
^ permalink raw reply [flat|nested] 46+ messages in thread
* Re: [PATCH v3 1/8] meson: stop discovering native version of Python
2025-07-09 15:09 ` Junio C Hamano
@ 2025-07-09 21:36 ` Justin Tobler
2025-07-09 22:22 ` Eli Schwartz
1 sibling, 0 replies; 46+ messages in thread
From: Justin Tobler @ 2025-07-09 21:36 UTC (permalink / raw)
To: Junio C Hamano
Cc: Patrick Steinhardt, git, Ramsay Jones, irecca.kun, Eli Schwartz,
Jeff King
On 25/07/09 08:09AM, Junio C Hamano wrote:
> Patrick Steinhardt <ps@pks.im> writes:
> > -python = import('python').find_installation('python3', required: get_option('python'))
> > -target_python = find_program('python3', native: false, required: python.found())
> > -if python.found()
> > +# Python is not used for our build system, but exclusively for git-p4.
> > +# Consequently we only need to determine whether Python is available for the
> > +# build target.
> > +target_python = find_program('python3', native: false, required: get_option('python'))
> > +if target_python.found()
> > build_options_config.set('NO_PYTHON', '')
> > else
> > libgit_c_args += '-DNO_PYTHON'
>
> We ask explicitly for Python 3 here.
>
> Does find_program() have some magic to deal with installations where
> Python3 is simply called /usr/bin/python (and worse yet, not as a
> symbolic link to /usr/bin/python3)?
My understanding is that find_program() won't do anything in this case.
I would imagine if the target host has Python3 in a non-standard
location, there would probably need to be a cross-file that defines it.
> I found
>
> "Since 0.50.0 if the "python3" program is requested and it is
> not found in the system, Meson will return its current
> interpreter",
>
> which I suspect refers to the path to python3 used during the build
> and is not what we want, at
>
> https://mesonbuild.com/Reference-manual_functions.html#find_program
>
> which got me a bit worried.
As you mentioned, I think this is only relevant for Python scipts
executed at build time.
-Justin
^ permalink raw reply [flat|nested] 46+ messages in thread
* Re: [PATCH v3 0/8] A handful of Meson cleanups and improvements
2025-07-09 6:23 ` [PATCH v3 0/8] A handful of Meson cleanups and improvements Patrick Steinhardt
` (7 preceding siblings ...)
2025-07-09 6:23 ` [PATCH v3 8/8] ci: use Meson's new `--slice` option Patrick Steinhardt
@ 2025-07-09 21:37 ` Justin Tobler
8 siblings, 0 replies; 46+ messages in thread
From: Justin Tobler @ 2025-07-09 21:37 UTC (permalink / raw)
To: Patrick Steinhardt
Cc: git, Ramsay Jones, irecca.kun, Eli Schwartz, Jeff King,
Junio C Hamano
On 25/07/09 08:23AM, Patrick Steinhardt wrote:
> Hi,
>
> this patch series contains a couple of more-or-less random cleanups and
> improvements for Meson that I have accumulated over the last two months.
>
> Changes in v2:
> - Fix an off-by-one error for test slices used in GitHub Workflows.
> - Now tested with both GitLab (https://gitlab.com/gitlab-org/git/-/merge_requests/375)
> and GitHub (https://github.com/git/git/pull/2010).
> - Link to v1: https://lore.kernel.org/r/20250703-b4-pks-meson-cleanups-v1-0-2804c2932abe@pks.im
>
> Changes in v3:
> - Add a comment explaining why we only need to search for Python on
> the build target.
> - Link to v2: https://lore.kernel.org/r/20250708-b4-pks-meson-cleanups-v2-0-94ac53cd4b95@pks.im
Thanks Patrick! From the range-diff, this version looks good to me :)
-Justin
^ permalink raw reply [flat|nested] 46+ messages in thread
* Re: [PATCH v3 1/8] meson: stop discovering native version of Python
2025-07-09 15:09 ` Junio C Hamano
2025-07-09 21:36 ` Justin Tobler
@ 2025-07-09 22:22 ` Eli Schwartz
2025-07-09 22:40 ` Junio C Hamano
1 sibling, 1 reply; 46+ messages in thread
From: Eli Schwartz @ 2025-07-09 22:22 UTC (permalink / raw)
To: Junio C Hamano, Patrick Steinhardt
Cc: git, Ramsay Jones, irecca.kun, Jeff King, Justin Tobler
[-- Attachment #1.1: Type: text/plain, Size: 3635 bytes --]
On 7/9/25 11:09 AM, Junio C Hamano wrote:
>> -python = import('python').find_installation('python3', required: get_option('python'))
>> -target_python = find_program('python3', native: false, required: python.found())
>> -if python.found()
>> +# Python is not used for our build system, but exclusively for git-p4.
>> +# Consequently we only need to determine whether Python is available for the
>> +# build target.
>> +target_python = find_program('python3', native: false, required: get_option('python'))
>> +if target_python.found()
>> build_options_config.set('NO_PYTHON', '')
>> else
>> libgit_c_args += '-DNO_PYTHON'
>
> We ask explicitly for Python 3 here.
>
> Does find_program() have some magic to deal with installations where
> Python3 is simply called /usr/bin/python (and worse yet, not as a
> symbolic link to /usr/bin/python3)?
>
> I found
>
> "Since 0.50.0 if the "python3" program is requested and it is
> not found in the system, Meson will return its current
> interpreter",
>
> which I suspect refers to the path to python3 used during the build
> and is not what we want, at
>
> https://mesonbuild.com/Reference-manual_functions.html#find_program
>
> which got me a bit worried.
Well, this patch doesn't really change that. But a cross compile where
build != host and thus the build meson and build python don't represent
the host `git`, already needs a cross env setup to define the right C
compiler which can produce host binaries, and that's where you'd define
the host python too.
[binaries]
c = 'usr/bin/aarch64-linux-gnu-gcc'
# we have python 3.13, but our cross target is really old
python3 = '/usr/bin/python3.6'
> Perhaps everybody with Python3 has it at /usr/bin/python3 these
> days, and my worries are unfounded? ;-)
>
> Thanks.
Python installs as python3.13 or some other major.minor version.
"python3" is a symlink to that.
"python" may be a symlink to python 2.x, or 3.x, or not exist at all. I
am not aware of *any* scenario where a distributor has re-packaged
Python, "python" exists on PATH and is a real Python 3.x interpreter,
but "python3" doesn't exist.
I am not aware of this ever being an existing real world scenario in the
past, either -- it is not a "we no longer live in the bad old days"
scenario.
The only big change to how people deploy python was around the
unversioned "python" name.
Since 1996 and earlier, "python" was a symlink pointing to the "full"
name, "python1.4". The full name was created by "make altinstall".
And "make install" had a Makefile dependency on "altinstall", and then
additionally created symlinks. You could run "install" for a full
default install, or "altinstall" if you wanted to install multiple
versions side by side.
Python 3.x originally didn't create a "python" symlink, only a "python3"
symlink, because too many people would have scripts running "python" and
expect it to be version 2.x; this problem obviously never existed for
"python3", as having the major version was new for "python3" and indeed
the whole point of adding a new "prog{MAJORVERSION}" was to avoid
confusing versions 2.x and 3.x
Anyways, yes, it is in my reasonably knowledgeable opinion flat out
*impossible* for
find_program('python')
to ever be a good idea when you could do
find_program('python3')
The former will correctly work in a strict subset of cases that the
latter already works; in some cases it seems to work but returns a bad
program; in some cases it fails but using the right name would work.
--
Eli Schwartz
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 236 bytes --]
^ permalink raw reply [flat|nested] 46+ messages in thread
* Re: [PATCH v3 1/8] meson: stop discovering native version of Python
2025-07-09 22:22 ` Eli Schwartz
@ 2025-07-09 22:40 ` Junio C Hamano
0 siblings, 0 replies; 46+ messages in thread
From: Junio C Hamano @ 2025-07-09 22:40 UTC (permalink / raw)
To: Eli Schwartz
Cc: Patrick Steinhardt, git, Ramsay Jones, irecca.kun, Jeff King,
Justin Tobler
Eli Schwartz <eschwartz@gentoo.org> writes:
> "python" may be a symlink to python 2.x, or 3.x, or not exist at all. I
> am not aware of *any* scenario where a distributor has re-packaged
> Python, "python" exists on PATH and is a real Python 3.x interpreter,
> but "python3" doesn't exist.
>
> I am not aware of this ever being an existing real world scenario in the
> past, either -- it is not a "we no longer live in the bad old days"
> scenario.
Good. Thanks.
^ permalink raw reply [flat|nested] 46+ messages in thread
* Re: [PATCH v3 3/8] meson: improve summary of auto-detected features
2025-07-09 6:23 ` [PATCH v3 3/8] meson: improve summary of auto-detected features Patrick Steinhardt
@ 2025-07-10 15:25 ` Toon Claes
2025-07-10 16:24 ` Junio C Hamano
0 siblings, 1 reply; 46+ messages in thread
From: Toon Claes @ 2025-07-10 15:25 UTC (permalink / raw)
To: Patrick Steinhardt, git
Cc: Ramsay Jones, irecca.kun, Eli Schwartz, Jeff King, Junio C Hamano,
Justin Tobler
Patrick Steinhardt <ps@pks.im> writes:
> The summary of auto-detected features prints a boolean for every option
> to tell the user whether or not the feature has been auto-enabled or
> not. This summary can be improved though, as in some cases this boolean
> is derived from a dependency. So if we pass in the dependency directly,
> then Meson knows to both print a boolean and, if the dependency was
> found, it also prints a version number.
>
> Adapt the code accordingly and enable `bool_yn` so that actual booleans
> are formatted similarly to dependencies. Before this change:
>
> Auto-detected features
> benchmarks : true
> curl : true
> expat : true
> gettext : true
> gitweb : true
> iconv : true
> pcre2 : true
> perl : true
> python : true
>
> And after this change, we now see the version numbers as expected:
>
> Auto-detected features
> benchmarks : YES
> curl : YES 8.14.1
> expat : YES 2.7.1
> gettext : YES
> gitweb : YES
> iconv : YES
> pcre2 : YES 10.44
> perl : YES
> python : YES
>
> Note that this change also enables colorization of the boolean options,
> green for "YES" and red for "NO".
Nice, I'm really liking this change.
I've also reviewed the rest of the patches, and all looks good to me.
--
Cheers,
Toon
^ permalink raw reply [flat|nested] 46+ messages in thread
* Re: [PATCH v3 3/8] meson: improve summary of auto-detected features
2025-07-10 15:25 ` Toon Claes
@ 2025-07-10 16:24 ` Junio C Hamano
0 siblings, 0 replies; 46+ messages in thread
From: Junio C Hamano @ 2025-07-10 16:24 UTC (permalink / raw)
To: Toon Claes
Cc: Patrick Steinhardt, git, Ramsay Jones, irecca.kun, Eli Schwartz,
Jeff King, Justin Tobler
Toon Claes <toon@iotcl.com> writes:
> Patrick Steinhardt <ps@pks.im> writes:
>
>> The summary of auto-detected features prints a boolean for every option
>> to tell the user whether or not the feature has been auto-enabled or
>> not. This summary can be improved though, as in some cases this boolean
>> is derived from a dependency. So if we pass in the dependency directly,
>> then Meson knows to both print a boolean and, if the dependency was
>> found, it also prints a version number.
>>
>> Adapt the code accordingly and enable `bool_yn` so that actual booleans
>> are formatted similarly to dependencies. Before this change:
>>
>> Auto-detected features
>> benchmarks : true
>> curl : true
>> expat : true
>> gettext : true
>> gitweb : true
>> iconv : true
>> pcre2 : true
>> perl : true
>> python : true
>>
>> And after this change, we now see the version numbers as expected:
>>
>> Auto-detected features
>> benchmarks : YES
>> curl : YES 8.14.1
>> expat : YES 2.7.1
>> gettext : YES
>> gitweb : YES
>> iconv : YES
>> pcre2 : YES 10.44
>> perl : YES
>> python : YES
>>
>> Note that this change also enables colorization of the boolean options,
>> green for "YES" and red for "NO".
>
> Nice, I'm really liking this change.
>
> I've also reviewed the rest of the patches, and all looks good to me.
Thanks.
^ permalink raw reply [flat|nested] 46+ messages in thread
end of thread, other threads:[~2025-07-10 16:24 UTC | newest]
Thread overview: 46+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-07-03 9:28 [PATCH 0/8] A handful of Meson cleanups and improvements Patrick Steinhardt
2025-07-03 9:28 ` [PATCH 1/8] meson: stop discovering native version of Python Patrick Steinhardt
2025-07-08 19:38 ` Justin Tobler
2025-07-09 6:16 ` Patrick Steinhardt
2025-07-03 9:28 ` [PATCH 2/8] meson: stop printing 'https' option twice in our summaries Patrick Steinhardt
2025-07-03 9:28 ` [PATCH 3/8] meson: improve summary of auto-detected features Patrick Steinhardt
2025-07-08 19:56 ` Justin Tobler
2025-07-03 9:28 ` [PATCH 4/8] meson: clean up unnecessary variables Patrick Steinhardt
2025-07-03 9:28 ` [PATCH 5/8] meson: fix lookup of shell on MINGW64 Patrick Steinhardt
2025-07-03 9:28 ` [PATCH 6/8] meson: fix GIT_EXEC_PATH with overridden -Dlibexecdir= Patrick Steinhardt
2025-07-03 16:39 ` Ramsay Jones
2025-07-08 8:44 ` Patrick Steinhardt
2025-07-03 9:28 ` [PATCH 7/8] meson: update subproject wrappers Patrick Steinhardt
2025-07-03 9:28 ` [PATCH 8/8] ci: use Meson's new `--slice` option Patrick Steinhardt
2025-07-08 0:16 ` Junio C Hamano
2025-07-08 1:12 ` Jeff King
2025-07-08 1:39 ` Jeff King
2025-07-08 4:39 ` Junio C Hamano
2025-07-08 7:16 ` Patrick Steinhardt
2025-07-08 7:57 ` [PATCH v2 0/8] A handful of Meson cleanups and improvements Patrick Steinhardt
2025-07-08 7:57 ` [PATCH v2 1/8] meson: stop discovering native version of Python Patrick Steinhardt
2025-07-08 7:57 ` [PATCH v2 2/8] meson: stop printing 'https' option twice in our summaries Patrick Steinhardt
2025-07-08 7:57 ` [PATCH v2 3/8] meson: improve summary of auto-detected features Patrick Steinhardt
2025-07-08 7:57 ` [PATCH v2 4/8] meson: clean up unnecessary variables Patrick Steinhardt
2025-07-08 7:57 ` [PATCH v2 5/8] meson: fix lookup of shell on MINGW64 Patrick Steinhardt
2025-07-08 20:44 ` Justin Tobler
2025-07-08 7:57 ` [PATCH v2 6/8] meson: fix GIT_EXEC_PATH with overridden -Dlibexecdir= Patrick Steinhardt
2025-07-08 7:57 ` [PATCH v2 7/8] meson: update subproject wrappers Patrick Steinhardt
2025-07-08 7:57 ` [PATCH v2 8/8] ci: use Meson's new `--slice` option Patrick Steinhardt
2025-07-09 6:23 ` [PATCH v3 0/8] A handful of Meson cleanups and improvements Patrick Steinhardt
2025-07-09 6:23 ` [PATCH v3 1/8] meson: stop discovering native version of Python Patrick Steinhardt
2025-07-09 15:09 ` Junio C Hamano
2025-07-09 21:36 ` Justin Tobler
2025-07-09 22:22 ` Eli Schwartz
2025-07-09 22:40 ` Junio C Hamano
2025-07-09 6:23 ` [PATCH v3 2/8] meson: stop printing 'https' option twice in our summaries Patrick Steinhardt
2025-07-09 15:17 ` Junio C Hamano
2025-07-09 6:23 ` [PATCH v3 3/8] meson: improve summary of auto-detected features Patrick Steinhardt
2025-07-10 15:25 ` Toon Claes
2025-07-10 16:24 ` Junio C Hamano
2025-07-09 6:23 ` [PATCH v3 4/8] meson: clean up unnecessary variables Patrick Steinhardt
2025-07-09 6:23 ` [PATCH v3 5/8] meson: fix lookup of shell on MINGW64 Patrick Steinhardt
2025-07-09 6:23 ` [PATCH v3 6/8] meson: fix GIT_EXEC_PATH with overridden -Dlibexecdir= Patrick Steinhardt
2025-07-09 6:23 ` [PATCH v3 7/8] meson: update subproject wrappers Patrick Steinhardt
2025-07-09 6:23 ` [PATCH v3 8/8] ci: use Meson's new `--slice` option Patrick Steinhardt
2025-07-09 21:37 ` [PATCH v3 0/8] A handful of Meson cleanups and improvements Justin Tobler
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).