[OE-core] [PATCH] terminal.bbclass: use var-SHELL as the shebang of wrapper script

Alejandro Enedino Hernandez Samaniego alejandro.enedino.hernandez-samaniego at xilinx.com
Sat Sep 1 00:14:02 UTC 2018


Hey Hongxu,


On 08/24/2018 01:54 AM, Hongxu Jia wrote:
> The devshell.bbclass set var-SHELL to var-DEVSHELL, and terminal.bbclass
> initial var-SHELL with `bash'. Keep sync with it, use var-SHELL rather
> than hardcoded `/bin/sh' as the shebang of wrapper script.
>
> On Ubuntu host, default shell is dash (/bin/sh -> dash), even though
> we assign var-SHELL with `/bin/bash', the wrapper script is still dashism.
>
> Signed-off-by: Hongxu Jia <hongxu.jia at windriver.com>
> ---
>   meta/classes/terminal.bbclass | 3 ++-
>   1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/meta/classes/terminal.bbclass b/meta/classes/terminal.bbclass
> index a27e10c..73e765d 100644
> --- a/meta/classes/terminal.bbclass
> +++ b/meta/classes/terminal.bbclass
> @@ -25,7 +25,8 @@ def emit_terminal_func(command, envdata, d):
>       bb.utils.mkdirhier(os.path.dirname(runfile))
>   
>       with open(runfile, 'w') as script:
> -        script.write('#!/bin/sh -e\n')
> +        script.write('#!/usr/bin/env %s\n' % d.getVar('SHELL'))
> +        script.write('set -e\n')
This is causing a bug on several systems, I believe that it is because 
the way our systems are set up,
basically, our running shell isn't necessarily $SHELL, so it is causing 
the process to exit immediately,
anything thats using this class is affected, devshell, menuconfig, etc.


$ echo $SHELL
/bin/csh

$ echo $0
/bin/bash



Sadly we are unable to set $SHELL correctly.

I wonder if there is another way of doing this that wouldn't cause this 
behavior.

Cheers,

Alejandro


>           bb.data.emit_func(cmd_func, script, envdata)
>           script.write(cmd_func)
>           script.write("\n")




More information about the Openembedded-core mailing list