From: Toon Claes <toon@iotcl.com>
To: Patrick Steinhardt <ps@pks.im>, git@vger.kernel.org
Cc: Peter Seiderer <ps.report@gmx.net>,
Junio C Hamano <gitster@pobox.com>,
Eli Schwartz <eschwartz@gentoo.org>,
Justin Tobler <jltobler@gmail.com>
Subject: Re: [PATCH v2 2/2] meson: prefer POSIX-specified shell path
Date: Fri, 25 Apr 2025 10:35:01 +0200 [thread overview]
Message-ID: <874iycfxl6.fsf@iotcl.com> (raw)
In-Reply-To: <20250425-pks-meson-posix-shell-v2-2-fddc6123511b@pks.im>
Patrick Steinhardt <ps@pks.im> writes:
> Meson detects the path of the target shell via `find_program("sh")`,
> which essentially does a lookup via `PATH`. This may easily lead to a
> subtly-broken Git distribution when the build host has its shell in a
> non-standard location that the target host doesn't know about.
>
> Fix the issue by appending "/bin" to the custom program path, which
> causes us to prefer "/bin/sh" over a `PATH` lookup. As this location is
> specified by POSIX this should make us pick a better default shell path
> on all POSIX-compliant systems.
>
> Note that we intentionally append, not prepend, to the custom program
> path. This is because the program path can be configured by the user via
> the `-Dsane_tool_path=` build option, which should take precedence over
> any defaults we pick for the user.
>
> Signed-off-by: Patrick Steinhardt <ps@pks.im>
> ---
> meson.build | 5 ++++-
> 1 file changed, 4 insertions(+), 1 deletion(-)
>
> diff --git a/meson.build b/meson.build
> index a180c66ee69..c0d0982b00f 100644
> --- a/meson.build
> +++ b/meson.build
> @@ -236,7 +236,10 @@ sed = find_program('sed', dirs: program_path, native: true)
> shell = find_program('sh', dirs: program_path, native: true)
> tar = find_program('tar', dirs: program_path, native: true)
>
> -target_shell = find_program('sh', dirs: program_path, native: false)
> +# Detect the target shell that is used by Git at runtime. Note that we prefer
> +# '/bin/sh' over a PATH-based lookup given that '/bin/sh' is the location
> +# specified by POSIX. This lookup can be overridden via `program_path`.
> +target_shell = find_program('sh', dirs: program_path + [ '/bin' ], native: false)
It was not instantly obvious to me, but this is what the docs[1] say
about the use of `dirs` in `find_program()`:
extra list of absolute paths where to look for program names
So the function *first* looks in `dirs` *before* it looks in $PATH. I
wasn't fully aware what `program_path` contained, but I assumed it had
to contain the dirs in $PATH. But it seems $PATH is searched if the
program is not found in `dirs`.
So I agree with these changes.
[1]: https://mesonbuild.com/Reference-manual_functions.html#find_program
--
Toon
next prev parent reply other threads:[~2025-04-25 8:35 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-04-24 13:38 [PATCH 0/2] meson: prefer '/bin/sh' over PATH lookup Patrick Steinhardt
2025-04-24 13:38 ` [PATCH 1/2] meson: report detected runtime executable paths Patrick Steinhardt
2025-04-25 0:45 ` Eli Schwartz
2025-04-25 5:21 ` Patrick Steinhardt
2025-04-25 16:34 ` Junio C Hamano
2025-04-24 13:38 ` [PATCH 2/2] meson: prefer POSIX-specified shell path Patrick Steinhardt
2025-04-24 20:18 ` Justin Tobler
2025-04-25 5:21 ` Patrick Steinhardt
2025-04-24 18:28 ` [PATCH 0/2] meson: prefer '/bin/sh' over PATH lookup Junio C Hamano
2025-04-25 5:21 ` Patrick Steinhardt
2025-04-25 5:47 ` [PATCH v2 " Patrick Steinhardt
2025-04-25 5:47 ` [PATCH v2 1/2] meson: report detected runtime executable paths Patrick Steinhardt
2025-04-25 8:27 ` Toon Claes
2025-04-25 5:47 ` [PATCH v2 2/2] meson: prefer POSIX-specified shell path Patrick Steinhardt
2025-04-25 8:35 ` Toon Claes [this message]
2025-04-25 10:49 ` brian m. carlson
2025-04-25 11:52 ` Patrick Steinhardt
2025-04-25 11:24 ` [PATCH v2 0/2] meson: prefer '/bin/sh' over PATH lookup Toon Claes
2025-04-25 14:11 ` [PATCH v3 " Patrick Steinhardt
2025-04-25 14:11 ` [PATCH v3 1/2] meson: report detected runtime executable paths Patrick Steinhardt
2025-04-25 14:11 ` [PATCH v3 2/2] meson: prefer shell at "/bin/sh" Patrick Steinhardt
2025-04-25 17:04 ` Junio C Hamano
2025-04-25 18:07 ` Eli Schwartz
2025-04-25 18:51 ` Junio C Hamano
2025-04-25 22:21 ` Eli Schwartz
2025-04-25 20:10 ` brian m. carlson
2025-04-25 22:25 ` Eli Schwartz
2025-04-25 20:13 ` brian m. carlson
2025-05-02 21:16 ` [PATCH v3 0/2] meson: prefer '/bin/sh' over PATH lookup Junio C Hamano
2025-05-02 22:37 ` Eli Schwartz
2025-05-05 6:08 ` Patrick Steinhardt
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=874iycfxl6.fsf@iotcl.com \
--to=toon@iotcl.com \
--cc=eschwartz@gentoo.org \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=jltobler@gmail.com \
--cc=ps.report@gmx.net \
--cc=ps@pks.im \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.