Re: [PATCH 2/2] meson: prefer POSIX-specified shell path

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 25/04/24 03:38PM, Patrick Steinhardt wrote:
> 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.

Ok, so we run into this issue if the shell path picked up from the build
host's $PATH doesn't exist on the target host. Makes sense.

> 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.

So if the build host has "/bin/sh", but the target host doesn't we would
still have an issue, but that is still probably a better default. I
guess now $PATH would only be used as the fallback if the build host is
even most non-standard.

> 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.

IIUC, then the order precedence is "program_path", "/bin", and finally
$PATH. That makes sense.

> Signed-off-by: Patrick Steinhardt <ps@xxxxxx>
> ---
>  meson.build | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/meson.build b/meson.build
> index 8f04534c7ff..1db768380bd 100644
> --- a/meson.build
> +++ b/meson.build
> @@ -236,7 +236,7 @@ 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)
> +target_shell = find_program('sh', dirs: program_path + [ '/bin' ], native: false)

It might be nice to leave a comment explaining the ordering intent.

>  # Sanity-check that programs required for the build exist.
>  foreach tool : ['cat', 'cut', 'grep', 'sort', 'tr', 'uname']

-Justin




[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux