utils.bbclass: ensure $0 is correct in wrapper scripts

Some packages (eg mesa) will invoke a tool with --version and do string matches
on the output (i.e. mesa does $LEX --version |grep "^flex ").  This doesn't work
with the combination of wrapper scripts and binaries that use $0 as they output
"flex.real".

Luckily bash's exec lets you set $0.  As we want to use this we can't use env,
but using export appears to work just as well.

(From OE-Core rev: e8d2a2a3646f964ec61ece62e14788cd7184dd01)

Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Ross Burton 2013-05-30 17:55:10 +01:00 committed by Richard Purdie
parent 29049da221
commit 3aaa4f78c6
1 changed files with 5 additions and 4 deletions

View File

@ -261,9 +261,9 @@ create_cmdline_wrapper () {
mv $cmd $cmd.real
cmdname=`basename $cmd`.real
cat <<END >$cmd
#!/bin/sh
#!/bin/bash
realpath=\`readlink -fn \$0\`
exec \`dirname \$realpath\`/$cmdname $@ "\$@"
exec -a $cmd \`dirname \$realpath\`/$cmdname $@ "\$@"
END
chmod +x $cmd
}
@ -284,9 +284,10 @@ create_wrapper () {
mv $cmd $cmd.real
cmdname=`basename $cmd`.real
cat <<END >$cmd
#!/bin/sh
#!/bin/bash
realpath=\`readlink -fn \$0\`
exec env $@ \`dirname \$realpath\`/$cmdname "\$@"
export $@
exec -a $cmd \`dirname \$realpath\`/$cmdname "\$@"
END
chmod +x $cmd
}