All of lore.kernel.org
 help / color / mirror / Atom feed
From: Arnout Vandecappelle <arnout@mind.be>
To: buildroot@busybox.net
Subject: [Buildroot] [PATCH] package/meson: fix shabang in deep build trees
Date: Mon, 13 Jan 2020 21:58:35 +0100	[thread overview]
Message-ID: <3d675a20-7663-c884-70c2-0880176346de@mind.be> (raw)
In-Reply-To: <20200113180322.5618-1-yann.morin.1998@free.fr>



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@free.fr>
> Reported-by: Matthias Wei?er <m.weisser.m@gmail.com>
> Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
> Cc: Thomas Petazzoni <thomas.petazzoni@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))
> 

  reply	other threads:[~2020-01-13 20:58 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-01-13 18:03 [Buildroot] [PATCH] package/meson: fix shabang in deep build trees Yann E. MORIN
2020-01-13 20:58 ` Arnout Vandecappelle [this message]
2020-02-03 11:08 ` Peter Korsgaard

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=3d675a20-7663-c884-70c2-0880176346de@mind.be \
    --to=arnout@mind.be \
    --cc=buildroot@busybox.net \
    /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.