Re: [OE-core] [PATCH] sanity.bbclass: raise_sanity_error if /tmp is noexec

Ross Burton
2024-02-21T09:48:56Z

On 21 Feb 2024, at 07:18, ChenQi <Qi.Chen@windriver.com> wrote:
> I just noticed the change. I can't find the V2 in my mailbox, so I'm going to reply here.
> I'm a little concerned about forcing such requirement here. It does not seem *necessary*.
> As far as I know, the whole oe-core does not need /tmp to be exec. The commit message says 'old meson', this means the current version of meson works well, right?
> Also, why is there 'no simple way to workaround'? Is the recipe hardcoding '/tmp' instead of using API or command? Does exporting TMPDIR work?
> e.g.,
> export TMPDIR="${B}/tmp”

You _can_ export TMPDIR but that has to be done on a per-recipe/class basis very carefully as TMPDIR means something else to Bitbake.

The problem is recipes that use mktemp to write files and execute them (be it shell scripts, or as a place to write C and then compile in the same directory). These will be in /tmp (again, we can’t set TMPDIR because for foolish historical reasons, TMPDIR is used by bitbake).

We first noticed this with Meson where noexec /tmp meant the configure tests failed. We worked around it at the time by assigning TMPDIR when calling Meson, but since them Meson writes to its own build tree now. This has been seen before though, but luckily noexec /tmp is fairly unusual so I doubt this will break many builds.

Ross