* [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
* 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 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 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
* 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
* [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
* 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 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
* [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 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
* 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
* [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
* [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
* 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 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 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
* [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
* 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
* [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
* 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
* [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 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
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).