From: Junio C Hamano <gitster@pobox.com>
To: Patrick Steinhardt <ps@pks.im>
Cc: git@vger.kernel.org, Peter Seiderer <ps.report@gmx.net>,
Eli Schwartz <eschwartz@gentoo.org>,
Justin Tobler <jltobler@gmail.com>
Subject: Re: [PATCH v3 2/2] meson: prefer shell at "/bin/sh"
Date: Fri, 25 Apr 2025 10:04:55 -0700 [thread overview]
Message-ID: <xmqqy0votbns.fsf@gitster.g> (raw)
In-Reply-To: <20250425-pks-meson-posix-shell-v3-2-01607a2e9334@pks.im> (Patrick Steinhardt's message of "Fri, 25 Apr 2025 16:11:29 +0200")
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
> 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`-based lookup. While
> "/bin/sh" isn't standardized, this path tends to work alright on Linux
> and BSD distributions. Furthermore, "/bin/sh" is also the path we pick
> in our Makefile by default, which further demonstrates that this shell
> fulfills our needs.
>
> 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 | 6 +++++-
> 1 file changed, 5 insertions(+), 1 deletion(-)
Looking good.
> diff --git a/meson.build b/meson.build
> index a180c66ee69..6a90310a2ca 100644
> --- a/meson.build
> +++ b/meson.build
> @@ -236,7 +236,11 @@ 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, 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)
I wonder if we should be a bit more friendly to beginners (either
'meson' beginner or a newcomer to the project who are not yet
familiar with how our meson.build files are written), than saying
"via 'program_path'" by referring to "-Dsane_tool_path=", possibly
even with an example.
Now I am showing my ignorance, but does this support folks whose
shell are not spelled "sh" (like "/usr/local/bin/dash"), and more
importantly, if it does not, shouldn't we be using a mechanism that
does? I think -Dsane_tool_path=/usr/local/bin would help with the
leading directory path, but I suspect that find_program() does not
help specifying "dash" to be used as our target_shell (or host
shell), or "perl5" as our perl.
Of course, this "my sh is called dash" can be left totally outside
of the topic of these two patches.
Thanks.
next prev parent reply other threads:[~2025-04-25 17:04 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
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 [this message]
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=xmqqy0votbns.fsf@gitster.g \
--to=gitster@pobox.com \
--cc=eschwartz@gentoo.org \
--cc=git@vger.kernel.org \
--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 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).