utils: Avoid need to relocate wrapper scripts

Whilst the path to the executable is dynamically determined, the passed in
environment variables or parameters are not relocatable and rely on the sstate
remapping code. In the recipe specific sysroot case this has become more costly.

This patch translates such paths into relocatable entries which means that
a sed replacement at final installation isn't needed.

(From OE-Core rev: 3e02a7cda0ba70e3f9886c5cce37d71361280b11)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Richard Purdie 2017-01-30 23:08:11 +00:00
parent bfead495de
commit 2bb0b1d9b5
1 changed files with 16 additions and 2 deletions

View File

@ -264,10 +264,17 @@ create_cmdline_wrapper () {
mv $cmd $cmd.real
cmdname=`basename $cmd`
dirname=`dirname $cmd`
cmdoptions=$@
if [ "${base_prefix}" != "" ]; then
relpath=`python3 -c "import os; print(os.path.relpath('${D}${base_prefix}', '$dirname'))"`
cmdoptions=`echo $@ | sed -e "s:${base_prefix}:\\$realdir/$relpath:g"`
fi
cat <<END >$cmd
#!/bin/bash
realpath=\`readlink -fn \$0\`
exec -a \`dirname \$realpath\`/$cmdname \`dirname \$realpath\`/$cmdname.real $@ "\$@"
realdir=\`dirname \$realpath\`
exec -a \`dirname \$realpath\`/$cmdname \`dirname \$realpath\`/$cmdname.real $cmdoptions "\$@"
END
chmod +x $cmd
}
@ -287,10 +294,17 @@ create_wrapper () {
mv $cmd $cmd.real
cmdname=`basename $cmd`
dirname=`dirname $cmd`
exportstring=$@
if [ "${base_prefix}" != "" ]; then
relpath=`python3 -c "import os; print(os.path.relpath('${D}${base_prefix}', '$dirname'))"`
exportstring=`echo $@ | sed -e "s:${base_prefix}:\\$realdir/$relpath:g"`
fi
cat <<END >$cmd
#!/bin/bash
realpath=\`readlink -fn \$0\`
export $@
realdir=\`dirname \$realpath\`
export $exportstring
exec -a \`dirname \$realpath\`/$cmdname \`dirname \$realpath\`/$cmdname.real "\$@"
END
chmod +x $cmd