diff options
author | Bob Feng <bob.c.feng@intel.com> | 2021-01-13 11:12:24 +0800 |
---|---|---|
committer | mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> | 2021-01-21 10:19:09 +0000 |
commit | 5b4a97bbc39ed8e7eb50038b9cffe2e948e49995 (patch) | |
tree | 64fb4b3beaee4632fad244d2e9194c4b3eca9f96 /BaseTools/BinWrappers | |
parent | 339371ef78eb3a6f2e9848f8b058379de5e87d39 (diff) | |
download | edk2-5b4a97bbc39ed8e7eb50038b9cffe2e948e49995.tar.gz edk2-5b4a97bbc39ed8e7eb50038b9cffe2e948e49995.tar.bz2 edk2-5b4a97bbc39ed8e7eb50038b9cffe2e948e49995.zip |
BaseTools: Convert Split tool to python
REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3165
There are 2 reasons to convert Split tool from C to Python.
1. We are in the process of moving the Basetools Python code
to a separate repository. But there still are many C tools under
edk2/BaseTools. To make all Basetools be in the separate repo,
we can convert the C tools to Python tools.
2. The original Split tool is very slow. This python tool can reduce
90% time.
Signed-off-by: Bob Feng <bob.c.feng@intel.com>
Cc: Liming Gao <gaoliming@byosoft.com.cn>
Cc: Yuwei Chen <yuwei.chen@intel.com>
Reviewed-by: Liming Gao <gaoliming@byosoft.com.cn>
Reviewed-by: Yuwei Chen <yuwei.chen@intel.com>
Diffstat (limited to 'BaseTools/BinWrappers')
-rwxr-xr-x | BaseTools/BinWrappers/PosixLike/Split | 31 | ||||
-rw-r--r-- | BaseTools/BinWrappers/WindowsLike/Split.bat | 3 |
2 files changed, 11 insertions, 23 deletions
diff --git a/BaseTools/BinWrappers/PosixLike/Split b/BaseTools/BinWrappers/PosixLike/Split index 0945d86d92..f3770eed42 100755 --- a/BaseTools/BinWrappers/PosixLike/Split +++ b/BaseTools/BinWrappers/PosixLike/Split @@ -1,29 +1,14 @@ #!/usr/bin/env bash +#python `dirname $0`/RunToolFromSource.py `basename $0` $* + +# If a ${PYTHON_COMMAND} command is available, use it in preference to python +if command -v ${PYTHON_COMMAND} >/dev/null 2>&1; then + python_exe=${PYTHON_COMMAND} +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##*/} -if [ -n "$WORKSPACE" ] && [ -e "$WORKSPACE/Conf/BaseToolsCBinaries" ] -then - exec "$WORKSPACE/Conf/BaseToolsCBinaries/$cmd" -elif [ -n "$WORKSPACE" ] && [ -e "$EDK_TOOLS_PATH/Source/C" ] -then - if [ ! -e "$EDK_TOOLS_PATH/Source/C/bin/$cmd" ] - then - echo "BaseTools C Tool binary was not found ($cmd)" - echo "You may need to run:" - echo " make -C $EDK_TOOLS_PATH/Source/C" - else - exec "$EDK_TOOLS_PATH/Source/C/bin/$cmd" "$@" - fi -elif [ -e "$dir/../../Source/C/bin/$cmd" ] -then - exec "$dir/../../Source/C/bin/$cmd" "$@" -else - echo "Unable to find the real '$cmd' to run" - echo "This message was printed by" - echo " $0" - exit 127 -fi - +export PYTHONPATH="$dir/../../Source/Python${PYTHONPATH:+:"$PYTHONPATH"}" +exec "${python_exe:-python}" "$dir/../../Source/Python/$cmd/$cmd.py" "$@" diff --git a/BaseTools/BinWrappers/WindowsLike/Split.bat b/BaseTools/BinWrappers/WindowsLike/Split.bat new file mode 100644 index 0000000000..9616cd893b --- /dev/null +++ b/BaseTools/BinWrappers/WindowsLike/Split.bat @@ -0,0 +1,3 @@ +@setlocal
+@set ToolName=%~n0%
+@%PYTHON_COMMAND% %BASE_TOOLS_PATH%\Source\Python\%ToolName%\%ToolName%.py %*
|