Re: Broken /usr/bin/env (invalid option)

From: Dominique Martinet
Date: Wed Dec 09 2020 - 08:08:59 EST


Krzysztof Kozlowski wrote on Wed, Dec 09, 2020:
> Your commit ece075366294 ("ld-version: use /usr/bin/env awk for
> shebank") breaks current linux-next on Ubuntu 16.04:
>
> $ make defconfig
>
> make[1]: Entering directory '/mnt/data2/linux/linux-upstream/out'
> GEN Makefile
> *** Default configuration is based on 'multi_v7_defconfig'
> /usr/bin/env: invalid option -- 'S'
> Try '/usr/bin/env --help' for more information.
> init/Kconfig:39: syntax error
> init/Kconfig:38: invalid statement
> ../scripts/kconfig/Makefile:80: recipe for target 'defconfig' failed
> make[2]: *** [defconfig] Error 1
> /mnt/data2/linux/linux-upstream/Makefile:602: recipe for target 'defconfig' failed
> make[1]: *** [defconfig] Error 2
> make[1]: Leaving directory '/mnt/data2/linux/linux-upstream/out'
> Makefile:185: recipe for target '__sub-make' failed
> make: *** [__sub-make] Error 2
>
> https://krzk.eu/#/builders/12/builds/1170/steps/4/logs/stdio
>
> It's not possible to build anything...

Hm, what version of env is that?
I only checked on a couple of systems that env -S exists, but it might
not be available (e.g. now I'm looking, at least busybox env does not
provide -S)

OTOH, we need -S to split arguments because the kernel splits the
shebang as [binary, single argument], so without it awk wouldn't work.

Apparently gawk can work without an explicit -f is invoked as gawk (so
could be used without -S), but that won't be much better wrt
compatibility in my opinion.


I don't see any way to make this work out of the box for me (awk not in
/usr/bin) and you (env not supporting -S), but I guess I can keep that
patch around locally...

Sorry for the trouble.
--
Dominique