diff options
author | Charles Duffy <chaduffy@cisco.com> | 2016-01-20 05:09:06 +0000 |
---|---|---|
committer | yzhu52 <yzhu52@Edk2> | 2016-01-20 05:09:06 +0000 |
commit | 6928c1d3eed8fb3ab0b136f0ebdcef50f7bda2f3 (patch) | |
tree | e47219d12dd7e34d0b1d6bcc4a98262603b29eae /BaseTools | |
parent | 59fae92d8d8d3d5471e59cc2922080854b570e7c (diff) | |
download | edk2-platforms-6928c1d3eed8fb3ab0b136f0ebdcef50f7bda2f3.tar.xz |
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 <chaduffy@cisco.com>
Reviewed-by: Yonghong Zhu <yonghong.zhu@intel.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@19694 6f19259b-4bc3-4df7-8a09-765794883524
Diffstat (limited to 'BaseTools')
-rwxr-xr-x | BaseTools/Bin/CYGWIN_NT-5.1-i686/Ecc | 13 | ||||
-rwxr-xr-x | BaseTools/Bin/CYGWIN_NT-5.1-i686/GenDepex | 15 | ||||
-rwxr-xr-x | BaseTools/Bin/CYGWIN_NT-5.1-i686/GenFds | 13 | ||||
-rwxr-xr-x | BaseTools/Bin/CYGWIN_NT-5.1-i686/TargetTool | 13 | ||||
-rwxr-xr-x | BaseTools/Bin/CYGWIN_NT-5.1-i686/Trim | 13 | ||||
-rwxr-xr-x | BaseTools/Bin/CYGWIN_NT-5.1-i686/build | 13 | ||||
-rwxr-xr-x | BaseTools/BinWrappers/PosixLike/BPDG | 13 | ||||
-rwxr-xr-x | BaseTools/BinWrappers/PosixLike/Ecc | 13 | ||||
-rwxr-xr-x | BaseTools/BinWrappers/PosixLike/GenDepex | 15 | ||||
-rwxr-xr-x | BaseTools/BinWrappers/PosixLike/GenFds | 13 | ||||
-rwxr-xr-x | BaseTools/BinWrappers/PosixLike/GenPatchPcdTable | 13 | ||||
-rwxr-xr-x | BaseTools/BinWrappers/PosixLike/PatchPcdValue | 13 | ||||
-rwxr-xr-x | BaseTools/BinWrappers/PosixLike/TargetTool | 13 | ||||
-rwxr-xr-x | BaseTools/BinWrappers/PosixLike/Trim | 13 | ||||
-rwxr-xr-x | BaseTools/BinWrappers/PosixLike/UPT | 13 | ||||
-rwxr-xr-x | BaseTools/BinWrappers/PosixLike/build | 13 |
16 files changed, 180 insertions, 32 deletions
diff --git a/BaseTools/Bin/CYGWIN_NT-5.1-i686/Ecc b/BaseTools/Bin/CYGWIN_NT-5.1-i686/Ecc index 2cb8b86a99..214d88fff1 100755 --- a/BaseTools/Bin/CYGWIN_NT-5.1-i686/Ecc +++ b/BaseTools/Bin/CYGWIN_NT-5.1-i686/Ecc @@ -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" "$@" diff --git a/BaseTools/Bin/CYGWIN_NT-5.1-i686/GenDepex b/BaseTools/Bin/CYGWIN_NT-5.1-i686/GenDepex index bd3141a758..214d88fff1 100755 --- a/BaseTools/Bin/CYGWIN_NT-5.1-i686/GenDepex +++ b/BaseTools/Bin/CYGWIN_NT-5.1-i686/GenDepex @@ -1,3 +1,14 @@ #!/usr/bin/env bash -PYTHONPATH="`dirname $0`/../../Source/Python" \ - python "`dirname $0`/../../Source/Python"/AutoGen/`basename $0`.py $* +#python `dirname $0`/RunToolFromSource.py `basename $0` $* + +# 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" "$@" diff --git a/BaseTools/Bin/CYGWIN_NT-5.1-i686/GenFds b/BaseTools/Bin/CYGWIN_NT-5.1-i686/GenFds index 2cb8b86a99..214d88fff1 100755 --- a/BaseTools/Bin/CYGWIN_NT-5.1-i686/GenFds +++ b/BaseTools/Bin/CYGWIN_NT-5.1-i686/GenFds @@ -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" "$@" diff --git a/BaseTools/Bin/CYGWIN_NT-5.1-i686/TargetTool b/BaseTools/Bin/CYGWIN_NT-5.1-i686/TargetTool index 2cb8b86a99..214d88fff1 100755 --- a/BaseTools/Bin/CYGWIN_NT-5.1-i686/TargetTool +++ b/BaseTools/Bin/CYGWIN_NT-5.1-i686/TargetTool @@ -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" "$@" diff --git a/BaseTools/Bin/CYGWIN_NT-5.1-i686/Trim b/BaseTools/Bin/CYGWIN_NT-5.1-i686/Trim index 2cb8b86a99..7cac4f7c4f 100755 --- a/BaseTools/Bin/CYGWIN_NT-5.1-i686/Trim +++ b/BaseTools/Bin/CYGWIN_NT-5.1-i686/Trim @@ -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") +exe=$(basename "$full_cmd") + +export PYTHONPATH="$dir/../../Source/Python" +exec "${python_exe:-python}" "$dir/../../Source/Python/$exe/$exe.py" "$@" diff --git a/BaseTools/Bin/CYGWIN_NT-5.1-i686/build b/BaseTools/Bin/CYGWIN_NT-5.1-i686/build index 2cb8b86a99..214d88fff1 100755 --- a/BaseTools/Bin/CYGWIN_NT-5.1-i686/build +++ b/BaseTools/Bin/CYGWIN_NT-5.1-i686/build @@ -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" "$@" diff --git a/BaseTools/BinWrappers/PosixLike/BPDG b/BaseTools/BinWrappers/PosixLike/BPDG index 2cb8b86a99..214d88fff1 100755 --- a/BaseTools/BinWrappers/PosixLike/BPDG +++ b/BaseTools/BinWrappers/PosixLike/BPDG @@ -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" "$@" diff --git a/BaseTools/BinWrappers/PosixLike/Ecc b/BaseTools/BinWrappers/PosixLike/Ecc index 2cb8b86a99..214d88fff1 100755 --- a/BaseTools/BinWrappers/PosixLike/Ecc +++ b/BaseTools/BinWrappers/PosixLike/Ecc @@ -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" "$@" diff --git a/BaseTools/BinWrappers/PosixLike/GenDepex b/BaseTools/BinWrappers/PosixLike/GenDepex index bd3141a758..214d88fff1 100755 --- a/BaseTools/BinWrappers/PosixLike/GenDepex +++ b/BaseTools/BinWrappers/PosixLike/GenDepex @@ -1,3 +1,14 @@ #!/usr/bin/env bash -PYTHONPATH="`dirname $0`/../../Source/Python" \ - python "`dirname $0`/../../Source/Python"/AutoGen/`basename $0`.py $* +#python `dirname $0`/RunToolFromSource.py `basename $0` $* + +# 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" "$@" diff --git a/BaseTools/BinWrappers/PosixLike/GenFds b/BaseTools/BinWrappers/PosixLike/GenFds index 2cb8b86a99..214d88fff1 100755 --- a/BaseTools/BinWrappers/PosixLike/GenFds +++ b/BaseTools/BinWrappers/PosixLike/GenFds @@ -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" "$@" diff --git a/BaseTools/BinWrappers/PosixLike/GenPatchPcdTable b/BaseTools/BinWrappers/PosixLike/GenPatchPcdTable index 2cb8b86a99..214d88fff1 100755 --- a/BaseTools/BinWrappers/PosixLike/GenPatchPcdTable +++ b/BaseTools/BinWrappers/PosixLike/GenPatchPcdTable @@ -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" "$@" diff --git a/BaseTools/BinWrappers/PosixLike/PatchPcdValue b/BaseTools/BinWrappers/PosixLike/PatchPcdValue index 2cb8b86a99..214d88fff1 100755 --- a/BaseTools/BinWrappers/PosixLike/PatchPcdValue +++ b/BaseTools/BinWrappers/PosixLike/PatchPcdValue @@ -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" "$@" diff --git a/BaseTools/BinWrappers/PosixLike/TargetTool b/BaseTools/BinWrappers/PosixLike/TargetTool index 2cb8b86a99..214d88fff1 100755 --- a/BaseTools/BinWrappers/PosixLike/TargetTool +++ b/BaseTools/BinWrappers/PosixLike/TargetTool @@ -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" "$@" diff --git a/BaseTools/BinWrappers/PosixLike/Trim b/BaseTools/BinWrappers/PosixLike/Trim index 2cb8b86a99..7cac4f7c4f 100755 --- a/BaseTools/BinWrappers/PosixLike/Trim +++ b/BaseTools/BinWrappers/PosixLike/Trim @@ -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") +exe=$(basename "$full_cmd") + +export PYTHONPATH="$dir/../../Source/Python" +exec "${python_exe:-python}" "$dir/../../Source/Python/$exe/$exe.py" "$@" 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" "$@" diff --git a/BaseTools/BinWrappers/PosixLike/build b/BaseTools/BinWrappers/PosixLike/build index 2cb8b86a99..214d88fff1 100755 --- a/BaseTools/BinWrappers/PosixLike/build +++ b/BaseTools/BinWrappers/PosixLike/build @@ -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" "$@" |