[Buildroot] [PATCH] package/meson: fix shabang in deep build trees

Arnout Vandecappelle arnout at mind.be
Mon Jan 13 20:58:35 UTC 2020



On 13/01/2020 19:03, Yann E. MORIN wrote:
> The meson script includes the full path to the python interpreter. In
> deep build trees, this path can be more than 128 characters long, which
> is the limit a shabang might be.
> 
> In older kernels, that was silently ignored, leading to potential bugs,
> but newer kernels enforce that limit, and refuse to execve() the script,
> returning with NOEXEC. Since the script is +x, the shell (any bourne
> shell, as well as the C shell) will conclude from that situation that
> they should interpret it as a shell script, which it obviously is not.
> 
> Fix the problem bu replacing the shabang with a call to /usr/bin/env
> which will redirect to the correct pytohn3 interpreter found in the
> PATH.
> 
> Note however that this means our meson installation can no longer be
> called from outside of the meson-package infrastructure anymore (not
> that we ever supported it before, but who knows what people may have
> done in their br2-external), unless one does set the PATH to include
> $(HOST_DIR)/bin/ earlier than a system-provided python3 would be found.

Actually, since meson doesn't depend on any non-standard python package, using
the system-provided python3 is fine. In fact, IIRC the idea was to use the
system-provided python3 if available, but nobody ever implemented that.

 Regards,
 Arnout

> 
> Fixes: #12331 #12461
> 
> Reported-by: Jean-pierre Cartal <jpcartal at free.fr>
> Reported-by: Matthias Weißer <m.weisser.m at gmail.com>
> Signed-off-by: Yann E. MORIN <yann.morin.1998 at free.fr>
> Cc: Thomas Petazzoni <thomas.petazzoni at bootlin.com>
> ---
>  package/meson/meson.mk | 6 ++++++
>  1 file changed, 6 insertions(+)
> 
> diff --git a/package/meson/meson.mk b/package/meson/meson.mk
> index d409ae7b52..179daaa38a 100644
> --- a/package/meson/meson.mk
> +++ b/package/meson/meson.mk
> @@ -49,4 +49,10 @@ HOST_MESON_SED_CFLAGS = $(if $(strip $(TARGET_CFLAGS)),`printf '"%s"$(comma) ' $
>  HOST_MESON_SED_LDFLAGS = $(if $(strip $(TARGET_LDFLAGS)),`printf '"%s"$(comma) ' $(TARGET_LDFLAGS)`)
>  HOST_MESON_SED_CXXFLAGS = $(if $(strip $(TARGET_CXXFLAGS)),`printf '"%s"$(comma) ' $(TARGET_CXXFLAGS)`)
>  
> +# Avoid interpreter shabang longer than 127 chars
> +define HOST_MESON_SET_INTERPRETER
> +	$(SED) '1s:.*:#!/usr/bin/env python3:' $(HOST_DIR)/bin/meson
> +endef
> +HOST_MESON_POST_INSTALL_HOOKS += HOST_MESON_SET_INTERPRETER
> +
>  $(eval $(host-python-package))
> 



More information about the buildroot mailing list