From 6928c1d3eed8fb3ab0b136f0ebdcef50f7bda2f3 Mon Sep 17 00:00:00 2001 From: Charles Duffy Date: Wed, 20 Jan 2016 05:09:06 +0000 Subject: BaseTools: Improve shell wrappers for Python build commands - Use `python2` executable if it exists, to avoid breakage on systems (such as Arch Linux) where `python` is Python 3. - Quote all references to `$0`, for safety when located in a directory containing spaces in its name. - Use the `exec` shell command to avoid leaving the shell wrapper in the process table when invoking the actual build tool. - Use `"$@"` rather than `$*` to pass arguments through directly rather than concatenating to a string, and then string-splitting and glob-expanding its contents. - Use `$BASH_SOURCE` in preference to `$0` (which is only guaranteed to be process name, *not* source path). Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Charles Duffy Reviewed-by: Yonghong Zhu git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@19694 6f19259b-4bc3-4df7-8a09-765794883524 --- BaseTools/BinWrappers/PosixLike/UPT | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) (limited to 'BaseTools/BinWrappers/PosixLike/UPT') diff --git a/BaseTools/BinWrappers/PosixLike/UPT b/BaseTools/BinWrappers/PosixLike/UPT index 2cb8b86a99..214d88fff1 100755 --- a/BaseTools/BinWrappers/PosixLike/UPT +++ b/BaseTools/BinWrappers/PosixLike/UPT @@ -1,5 +1,14 @@ #!/usr/bin/env bash #python `dirname $0`/RunToolFromSource.py `basename $0` $* -PYTHONPATH="`dirname $0`/../../Source/Python" \ - python "`dirname $0`/../../Source/Python"/`basename $0`/`basename $0`.py $* +# If a python2 command is available, use it in preference to python +if command -v python2 >/dev/null 2>&1; then + python_exe=python2 +fi + +full_cmd=${BASH_SOURCE:-$0} # see http://mywiki.wooledge.org/BashFAQ/028 for a discussion of why $0 is not a good choice here +dir=$(dirname "$full_cmd") +cmd=${full_cmd##*/} + +export PYTHONPATH="$dir/../../Source/Python" +exec "${python_exe:-python}" "$dir/../../Source/Python/$cmd/$cmd.py" "$@" -- cgit v1.2.3