All of lore.kernel.org
 help / color / mirror / Atom feed
* [Buildroot] [PATCH] package/meson: fix shabang in deep build trees
@ 2020-01-13 18:03 Yann E. MORIN
  2020-01-13 20:58 ` Arnout Vandecappelle
  2020-02-03 11:08 ` Peter Korsgaard
  0 siblings, 2 replies; 3+ messages in thread
From: Yann E. MORIN @ 2020-01-13 18:03 UTC (permalink / raw)
  To: buildroot

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.

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))
-- 
2.20.1

^ permalink raw reply related	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2020-02-03 11:08 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
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
2020-02-03 11:08 ` Peter Korsgaard

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.