From 9c2d68c0a29909d23266395fc48d0b81b118e341 Mon Sep 17 00:00:00 2001 From: Zhijux Fan Date: Wed, 19 Dec 2018 13:28:44 +0800 Subject: [PATCH] BaseTools: Update windows and linux run scripts file to use Python3 Modify windows script, PosixLike script, edksetup.sh, edksetup.bat to use Python3 based on PYTHON3_ENABLE environment. Cc: Bob Feng Cc: Liming Gao Cc: Yonghong Zhu Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Zhiju.Fan Tested-by: Laszlo Ersek Tested-by: Ard Biesheuvel Reviewed-by: Liming Gao Reviewed-by: Bob Feng --- BaseTools/Bin/CYGWIN_NT-5.1-i686/Ecc | 6 +-- BaseTools/Bin/CYGWIN_NT-5.1-i686/GenDepex | 6 +-- BaseTools/Bin/CYGWIN_NT-5.1-i686/GenFds | 6 +-- BaseTools/Bin/CYGWIN_NT-5.1-i686/TargetTool | 6 +-- BaseTools/Bin/CYGWIN_NT-5.1-i686/Trim | 6 +-- BaseTools/Bin/CYGWIN_NT-5.1-i686/build | 6 +-- BaseTools/BinWrappers/PosixLike/BPDG | 6 +-- BaseTools/BinWrappers/PosixLike/Ecc | 6 +-- BaseTools/BinWrappers/PosixLike/GenDepex | 6 +-- BaseTools/BinWrappers/PosixLike/GenFds | 6 +-- .../BinWrappers/PosixLike/GenPatchPcdTable | 6 +-- .../BinWrappers/PosixLike/GenerateCapsule | 6 +-- BaseTools/BinWrappers/PosixLike/PatchPcdValue | 6 +-- BaseTools/BinWrappers/PosixLike/Pkcs7Sign | 6 +-- .../PosixLike/Rsa2048Sha256GenerateKeys | 6 +-- .../BinWrappers/PosixLike/Rsa2048Sha256Sign | 6 +-- BaseTools/BinWrappers/PosixLike/TargetTool | 6 +-- BaseTools/BinWrappers/PosixLike/Trim | 6 +-- BaseTools/BinWrappers/PosixLike/UPT | 6 +-- BaseTools/BinWrappers/PosixLike/build | 6 +-- BaseTools/BinWrappers/WindowsLike/BPDG.bat | 2 +- BaseTools/BinWrappers/WindowsLike/Ecc.bat | 2 +- .../BinWrappers/WindowsLike/GenDepex.bat | 2 +- BaseTools/BinWrappers/WindowsLike/GenFds.bat | 2 +- .../WindowsLike/GenPatchPcdTable.bat | 2 +- .../WindowsLike/GenerateCapsule.bat | 2 +- .../BinWrappers/WindowsLike/PatchPcdValue.bat | 2 +- .../BinWrappers/WindowsLike/Pkcs7Sign.bat | 2 +- .../WindowsLike/Rsa2048Sha256GenerateKeys.bat | 2 +- .../WindowsLike/Rsa2048Sha256Sign.bat | 2 +- .../BinWrappers/WindowsLike/TargetTool.bat | 2 +- BaseTools/BinWrappers/WindowsLike/Trim.bat | 2 +- BaseTools/BinWrappers/WindowsLike/UPT.bat | 2 +- BaseTools/BinWrappers/WindowsLike/build.bat | 2 +- BaseTools/Makefile | 8 +-- BaseTools/Source/C/Makefile | 8 +-- BaseTools/Tests/GNUmakefile | 2 +- BaseTools/toolsetup.bat | 53 +++++++++++++++---- edksetup.sh | 51 +++++++++++++++++- 39 files changed, 177 insertions(+), 93 deletions(-) diff --git a/BaseTools/Bin/CYGWIN_NT-5.1-i686/Ecc b/BaseTools/Bin/CYGWIN_NT-5.1-i686/Ecc index 214d88fff1..8532fe510d 100755 --- a/BaseTools/Bin/CYGWIN_NT-5.1-i686/Ecc +++ b/BaseTools/Bin/CYGWIN_NT-5.1-i686/Ecc @@ -1,9 +1,9 @@ #!/usr/bin/env bash #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 +# If a ${PYTHON} command is available, use it in preference to python +if command -v ${PYTHON} >/dev/null 2>&1; then + python_exe=${PYTHON} 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 diff --git a/BaseTools/Bin/CYGWIN_NT-5.1-i686/GenDepex b/BaseTools/Bin/CYGWIN_NT-5.1-i686/GenDepex index 214d88fff1..8532fe510d 100755 --- a/BaseTools/Bin/CYGWIN_NT-5.1-i686/GenDepex +++ b/BaseTools/Bin/CYGWIN_NT-5.1-i686/GenDepex @@ -1,9 +1,9 @@ #!/usr/bin/env bash #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 +# If a ${PYTHON} command is available, use it in preference to python +if command -v ${PYTHON} >/dev/null 2>&1; then + python_exe=${PYTHON} 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 diff --git a/BaseTools/Bin/CYGWIN_NT-5.1-i686/GenFds b/BaseTools/Bin/CYGWIN_NT-5.1-i686/GenFds index 214d88fff1..8532fe510d 100755 --- a/BaseTools/Bin/CYGWIN_NT-5.1-i686/GenFds +++ b/BaseTools/Bin/CYGWIN_NT-5.1-i686/GenFds @@ -1,9 +1,9 @@ #!/usr/bin/env bash #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 +# If a ${PYTHON} command is available, use it in preference to python +if command -v ${PYTHON} >/dev/null 2>&1; then + python_exe=${PYTHON} 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 diff --git a/BaseTools/Bin/CYGWIN_NT-5.1-i686/TargetTool b/BaseTools/Bin/CYGWIN_NT-5.1-i686/TargetTool index 214d88fff1..8532fe510d 100755 --- a/BaseTools/Bin/CYGWIN_NT-5.1-i686/TargetTool +++ b/BaseTools/Bin/CYGWIN_NT-5.1-i686/TargetTool @@ -1,9 +1,9 @@ #!/usr/bin/env bash #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 +# If a ${PYTHON} command is available, use it in preference to python +if command -v ${PYTHON} >/dev/null 2>&1; then + python_exe=${PYTHON} 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 diff --git a/BaseTools/Bin/CYGWIN_NT-5.1-i686/Trim b/BaseTools/Bin/CYGWIN_NT-5.1-i686/Trim index 7cac4f7c4f..54e09c039b 100755 --- a/BaseTools/Bin/CYGWIN_NT-5.1-i686/Trim +++ b/BaseTools/Bin/CYGWIN_NT-5.1-i686/Trim @@ -1,9 +1,9 @@ #!/usr/bin/env bash #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 +# If a ${PYTHON} command is available, use it in preference to python +if command -v ${PYTHON} >/dev/null 2>&1; then + python_exe=${PYTHON} 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 diff --git a/BaseTools/Bin/CYGWIN_NT-5.1-i686/build b/BaseTools/Bin/CYGWIN_NT-5.1-i686/build index 214d88fff1..8532fe510d 100755 --- a/BaseTools/Bin/CYGWIN_NT-5.1-i686/build +++ b/BaseTools/Bin/CYGWIN_NT-5.1-i686/build @@ -1,9 +1,9 @@ #!/usr/bin/env bash #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 +# If a ${PYTHON} command is available, use it in preference to python +if command -v ${PYTHON} >/dev/null 2>&1; then + python_exe=${PYTHON} 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 diff --git a/BaseTools/BinWrappers/PosixLike/BPDG b/BaseTools/BinWrappers/PosixLike/BPDG index 276c7ea207..e9f570b52c 100755 --- a/BaseTools/BinWrappers/PosixLike/BPDG +++ b/BaseTools/BinWrappers/PosixLike/BPDG @@ -1,9 +1,9 @@ #!/usr/bin/env bash #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 +# If a ${PYTHON} command is available, use it in preference to python +if command -v ${PYTHON} >/dev/null 2>&1; then + python_exe=${PYTHON} 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 diff --git a/BaseTools/BinWrappers/PosixLike/Ecc b/BaseTools/BinWrappers/PosixLike/Ecc index 1142964028..ed4b7cd384 100755 --- a/BaseTools/BinWrappers/PosixLike/Ecc +++ b/BaseTools/BinWrappers/PosixLike/Ecc @@ -1,9 +1,9 @@ #!/usr/bin/env bash #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 +# If a ${PYTHON} command is available, use it in preference to python +if command -v ${PYTHON} >/dev/null 2>&1; then + python_exe=${PYTHON} 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 diff --git a/BaseTools/BinWrappers/PosixLike/GenDepex b/BaseTools/BinWrappers/PosixLike/GenDepex index dad174788b..d99e54f222 100755 --- a/BaseTools/BinWrappers/PosixLike/GenDepex +++ b/BaseTools/BinWrappers/PosixLike/GenDepex @@ -1,9 +1,9 @@ #!/usr/bin/env bash #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 +# If a ${PYTHON} command is available, use it in preference to python +if command -v ${PYTHON} >/dev/null 2>&1; then + python_exe=${PYTHON} 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 diff --git a/BaseTools/BinWrappers/PosixLike/GenFds b/BaseTools/BinWrappers/PosixLike/GenFds index 276c7ea207..e9f570b52c 100755 --- a/BaseTools/BinWrappers/PosixLike/GenFds +++ b/BaseTools/BinWrappers/PosixLike/GenFds @@ -1,9 +1,9 @@ #!/usr/bin/env bash #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 +# If a ${PYTHON} command is available, use it in preference to python +if command -v ${PYTHON} >/dev/null 2>&1; then + python_exe=${PYTHON} 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 diff --git a/BaseTools/BinWrappers/PosixLike/GenPatchPcdTable b/BaseTools/BinWrappers/PosixLike/GenPatchPcdTable index 01ae23ddeb..d8b8b8f145 100755 --- a/BaseTools/BinWrappers/PosixLike/GenPatchPcdTable +++ b/BaseTools/BinWrappers/PosixLike/GenPatchPcdTable @@ -1,9 +1,9 @@ #!/usr/bin/env bash #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 +# If a ${PYTHON} command is available, use it in preference to python +if command -v ${PYTHON} >/dev/null 2>&1; then + python_exe=${PYTHON} 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 diff --git a/BaseTools/BinWrappers/PosixLike/GenerateCapsule b/BaseTools/BinWrappers/PosixLike/GenerateCapsule index 59a6c8ba43..91bbd22738 100755 --- a/BaseTools/BinWrappers/PosixLike/GenerateCapsule +++ b/BaseTools/BinWrappers/PosixLike/GenerateCapsule @@ -1,9 +1,9 @@ #!/usr/bin/env bash #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 +# If a ${PYTHON} command is available, use it in preference to python +if command -v ${PYTHON} >/dev/null 2>&1; then + python_exe=${PYTHON} 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 diff --git a/BaseTools/BinWrappers/PosixLike/PatchPcdValue b/BaseTools/BinWrappers/PosixLike/PatchPcdValue index 01ae23ddeb..d8b8b8f145 100755 --- a/BaseTools/BinWrappers/PosixLike/PatchPcdValue +++ b/BaseTools/BinWrappers/PosixLike/PatchPcdValue @@ -1,9 +1,9 @@ #!/usr/bin/env bash #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 +# If a ${PYTHON} command is available, use it in preference to python +if command -v ${PYTHON} >/dev/null 2>&1; then + python_exe=${PYTHON} 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 diff --git a/BaseTools/BinWrappers/PosixLike/Pkcs7Sign b/BaseTools/BinWrappers/PosixLike/Pkcs7Sign index 01ae23ddeb..d8b8b8f145 100755 --- a/BaseTools/BinWrappers/PosixLike/Pkcs7Sign +++ b/BaseTools/BinWrappers/PosixLike/Pkcs7Sign @@ -1,9 +1,9 @@ #!/usr/bin/env bash #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 +# If a ${PYTHON} command is available, use it in preference to python +if command -v ${PYTHON} >/dev/null 2>&1; then + python_exe=${PYTHON} 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 diff --git a/BaseTools/BinWrappers/PosixLike/Rsa2048Sha256GenerateKeys b/BaseTools/BinWrappers/PosixLike/Rsa2048Sha256GenerateKeys index 1bc1054a34..b42a126840 100755 --- a/BaseTools/BinWrappers/PosixLike/Rsa2048Sha256GenerateKeys +++ b/BaseTools/BinWrappers/PosixLike/Rsa2048Sha256GenerateKeys @@ -1,9 +1,9 @@ #!/usr/bin/env bash #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 +# If a ${PYTHON} command is available, use it in preference to python +if command -v ${PYTHON} >/dev/null 2>&1; then + python_exe=${PYTHON} 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 diff --git a/BaseTools/BinWrappers/PosixLike/Rsa2048Sha256Sign b/BaseTools/BinWrappers/PosixLike/Rsa2048Sha256Sign index 01ae23ddeb..d8b8b8f145 100755 --- a/BaseTools/BinWrappers/PosixLike/Rsa2048Sha256Sign +++ b/BaseTools/BinWrappers/PosixLike/Rsa2048Sha256Sign @@ -1,9 +1,9 @@ #!/usr/bin/env bash #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 +# If a ${PYTHON} command is available, use it in preference to python +if command -v ${PYTHON} >/dev/null 2>&1; then + python_exe=${PYTHON} 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 diff --git a/BaseTools/BinWrappers/PosixLike/TargetTool b/BaseTools/BinWrappers/PosixLike/TargetTool index 01ae23ddeb..d8b8b8f145 100755 --- a/BaseTools/BinWrappers/PosixLike/TargetTool +++ b/BaseTools/BinWrappers/PosixLike/TargetTool @@ -1,9 +1,9 @@ #!/usr/bin/env bash #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 +# If a ${PYTHON} command is available, use it in preference to python +if command -v ${PYTHON} >/dev/null 2>&1; then + python_exe=${PYTHON} 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 diff --git a/BaseTools/BinWrappers/PosixLike/Trim b/BaseTools/BinWrappers/PosixLike/Trim index 6c8dde5bec..d64b834006 100755 --- a/BaseTools/BinWrappers/PosixLike/Trim +++ b/BaseTools/BinWrappers/PosixLike/Trim @@ -1,9 +1,9 @@ #!/usr/bin/env bash #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 +# If a ${PYTHON} command is available, use it in preference to python +if command -v ${PYTHON} >/dev/null 2>&1; then + python_exe=${PYTHON} 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 diff --git a/BaseTools/BinWrappers/PosixLike/UPT b/BaseTools/BinWrappers/PosixLike/UPT index 01ae23ddeb..d8b8b8f145 100755 --- a/BaseTools/BinWrappers/PosixLike/UPT +++ b/BaseTools/BinWrappers/PosixLike/UPT @@ -1,9 +1,9 @@ #!/usr/bin/env bash #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 +# If a ${PYTHON} command is available, use it in preference to python +if command -v ${PYTHON} >/dev/null 2>&1; then + python_exe=${PYTHON} 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 diff --git a/BaseTools/BinWrappers/PosixLike/build b/BaseTools/BinWrappers/PosixLike/build index 01ae23ddeb..d8b8b8f145 100755 --- a/BaseTools/BinWrappers/PosixLike/build +++ b/BaseTools/BinWrappers/PosixLike/build @@ -1,9 +1,9 @@ #!/usr/bin/env bash #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 +# If a ${PYTHON} command is available, use it in preference to python +if command -v ${PYTHON} >/dev/null 2>&1; then + python_exe=${PYTHON} 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 diff --git a/BaseTools/BinWrappers/WindowsLike/BPDG.bat b/BaseTools/BinWrappers/WindowsLike/BPDG.bat index 98095cfbd4..4a43e5353e 100644 --- a/BaseTools/BinWrappers/WindowsLike/BPDG.bat +++ b/BaseTools/BinWrappers/WindowsLike/BPDG.bat @@ -1,4 +1,4 @@ @setlocal @set ToolName=%~n0% @set PYTHONPATH=%PYTHONPATH%;%BASE_TOOLS_PATH%\Source\Python -@%PYTHON_HOME%\python.exe -m %ToolName%.%ToolName% %* +@%PYTHON% -m %ToolName%.%ToolName% %* diff --git a/BaseTools/BinWrappers/WindowsLike/Ecc.bat b/BaseTools/BinWrappers/WindowsLike/Ecc.bat index 8705e7541e..e63ef50135 100644 --- a/BaseTools/BinWrappers/WindowsLike/Ecc.bat +++ b/BaseTools/BinWrappers/WindowsLike/Ecc.bat @@ -1,4 +1,4 @@ @setlocal @set ToolName=%~n0% @set PYTHONPATH=%PYTHONPATH%;%BASE_TOOLS_PATH%\Source\Python -@%PYTHON_HOME%\python.exe -m %ToolName%.EccMain %* +@%PYTHON% -m %ToolName%.EccMain %* diff --git a/BaseTools/BinWrappers/WindowsLike/GenDepex.bat b/BaseTools/BinWrappers/WindowsLike/GenDepex.bat index ffc783d2be..6c7250f008 100644 --- a/BaseTools/BinWrappers/WindowsLike/GenDepex.bat +++ b/BaseTools/BinWrappers/WindowsLike/GenDepex.bat @@ -1,3 +1,3 @@ @setlocal @set ToolName=%~n0% -@%PYTHON_HOME%\python.exe %BASE_TOOLS_PATH%\Source\Python\AutoGen\%ToolName%.py %* +@%PYTHON% %BASE_TOOLS_PATH%\Source\Python\AutoGen\%ToolName%.py %* diff --git a/BaseTools/BinWrappers/WindowsLike/GenFds.bat b/BaseTools/BinWrappers/WindowsLike/GenFds.bat index 98095cfbd4..4a43e5353e 100644 --- a/BaseTools/BinWrappers/WindowsLike/GenFds.bat +++ b/BaseTools/BinWrappers/WindowsLike/GenFds.bat @@ -1,4 +1,4 @@ @setlocal @set ToolName=%~n0% @set PYTHONPATH=%PYTHONPATH%;%BASE_TOOLS_PATH%\Source\Python -@%PYTHON_HOME%\python.exe -m %ToolName%.%ToolName% %* +@%PYTHON% -m %ToolName%.%ToolName% %* diff --git a/BaseTools/BinWrappers/WindowsLike/GenPatchPcdTable.bat b/BaseTools/BinWrappers/WindowsLike/GenPatchPcdTable.bat index 9fbb704a6e..82e0a90d6c 100644 --- a/BaseTools/BinWrappers/WindowsLike/GenPatchPcdTable.bat +++ b/BaseTools/BinWrappers/WindowsLike/GenPatchPcdTable.bat @@ -1,3 +1,3 @@ @setlocal @set ToolName=%~n0% -@%PYTHON_HOME%\python.exe %BASE_TOOLS_PATH%\Source\Python\%ToolName%\%ToolName%.py %* +@%PYTHON% %BASE_TOOLS_PATH%\Source\Python\%ToolName%\%ToolName%.py %* diff --git a/BaseTools/BinWrappers/WindowsLike/GenerateCapsule.bat b/BaseTools/BinWrappers/WindowsLike/GenerateCapsule.bat index ca442d181b..1ab7d33f98 100644 --- a/BaseTools/BinWrappers/WindowsLike/GenerateCapsule.bat +++ b/BaseTools/BinWrappers/WindowsLike/GenerateCapsule.bat @@ -1 +1 @@ -@%PYTHON_HOME%\python.exe %BASE_TOOLS_PATH%\Source\Python\Capsule\GenerateCapsule.py %* +@%PYTHON% %BASE_TOOLS_PATH%\Source\Python\Capsule\GenerateCapsule.py %* diff --git a/BaseTools/BinWrappers/WindowsLike/PatchPcdValue.bat b/BaseTools/BinWrappers/WindowsLike/PatchPcdValue.bat index 9fbb704a6e..82e0a90d6c 100644 --- a/BaseTools/BinWrappers/WindowsLike/PatchPcdValue.bat +++ b/BaseTools/BinWrappers/WindowsLike/PatchPcdValue.bat @@ -1,3 +1,3 @@ @setlocal @set ToolName=%~n0% -@%PYTHON_HOME%\python.exe %BASE_TOOLS_PATH%\Source\Python\%ToolName%\%ToolName%.py %* +@%PYTHON% %BASE_TOOLS_PATH%\Source\Python\%ToolName%\%ToolName%.py %* diff --git a/BaseTools/BinWrappers/WindowsLike/Pkcs7Sign.bat b/BaseTools/BinWrappers/WindowsLike/Pkcs7Sign.bat index 9fbb704a6e..82e0a90d6c 100644 --- a/BaseTools/BinWrappers/WindowsLike/Pkcs7Sign.bat +++ b/BaseTools/BinWrappers/WindowsLike/Pkcs7Sign.bat @@ -1,3 +1,3 @@ @setlocal @set ToolName=%~n0% -@%PYTHON_HOME%\python.exe %BASE_TOOLS_PATH%\Source\Python\%ToolName%\%ToolName%.py %* +@%PYTHON% %BASE_TOOLS_PATH%\Source\Python\%ToolName%\%ToolName%.py %* diff --git a/BaseTools/BinWrappers/WindowsLike/Rsa2048Sha256GenerateKeys.bat b/BaseTools/BinWrappers/WindowsLike/Rsa2048Sha256GenerateKeys.bat index df9336567c..32da349b31 100644 --- a/BaseTools/BinWrappers/WindowsLike/Rsa2048Sha256GenerateKeys.bat +++ b/BaseTools/BinWrappers/WindowsLike/Rsa2048Sha256GenerateKeys.bat @@ -1 +1 @@ -@%PYTHON_HOME%\python.exe %BASE_TOOLS_PATH%\Source\Python\Rsa2048Sha256Sign\Rsa2048Sha256GenerateKeys.py %* +@%PYTHON% %BASE_TOOLS_PATH%\Source\Python\Rsa2048Sha256Sign\Rsa2048Sha256GenerateKeys.py %* diff --git a/BaseTools/BinWrappers/WindowsLike/Rsa2048Sha256Sign.bat b/BaseTools/BinWrappers/WindowsLike/Rsa2048Sha256Sign.bat index 9fbb704a6e..82e0a90d6c 100644 --- a/BaseTools/BinWrappers/WindowsLike/Rsa2048Sha256Sign.bat +++ b/BaseTools/BinWrappers/WindowsLike/Rsa2048Sha256Sign.bat @@ -1,3 +1,3 @@ @setlocal @set ToolName=%~n0% -@%PYTHON_HOME%\python.exe %BASE_TOOLS_PATH%\Source\Python\%ToolName%\%ToolName%.py %* +@%PYTHON% %BASE_TOOLS_PATH%\Source\Python\%ToolName%\%ToolName%.py %* diff --git a/BaseTools/BinWrappers/WindowsLike/TargetTool.bat b/BaseTools/BinWrappers/WindowsLike/TargetTool.bat index 9fbb704a6e..82e0a90d6c 100644 --- a/BaseTools/BinWrappers/WindowsLike/TargetTool.bat +++ b/BaseTools/BinWrappers/WindowsLike/TargetTool.bat @@ -1,3 +1,3 @@ @setlocal @set ToolName=%~n0% -@%PYTHON_HOME%\python.exe %BASE_TOOLS_PATH%\Source\Python\%ToolName%\%ToolName%.py %* +@%PYTHON% %BASE_TOOLS_PATH%\Source\Python\%ToolName%\%ToolName%.py %* diff --git a/BaseTools/BinWrappers/WindowsLike/Trim.bat b/BaseTools/BinWrappers/WindowsLike/Trim.bat index 9fbb704a6e..82e0a90d6c 100644 --- a/BaseTools/BinWrappers/WindowsLike/Trim.bat +++ b/BaseTools/BinWrappers/WindowsLike/Trim.bat @@ -1,3 +1,3 @@ @setlocal @set ToolName=%~n0% -@%PYTHON_HOME%\python.exe %BASE_TOOLS_PATH%\Source\Python\%ToolName%\%ToolName%.py %* +@%PYTHON% %BASE_TOOLS_PATH%\Source\Python\%ToolName%\%ToolName%.py %* diff --git a/BaseTools/BinWrappers/WindowsLike/UPT.bat b/BaseTools/BinWrappers/WindowsLike/UPT.bat index 9fbb704a6e..82e0a90d6c 100644 --- a/BaseTools/BinWrappers/WindowsLike/UPT.bat +++ b/BaseTools/BinWrappers/WindowsLike/UPT.bat @@ -1,3 +1,3 @@ @setlocal @set ToolName=%~n0% -@%PYTHON_HOME%\python.exe %BASE_TOOLS_PATH%\Source\Python\%ToolName%\%ToolName%.py %* +@%PYTHON% %BASE_TOOLS_PATH%\Source\Python\%ToolName%\%ToolName%.py %* diff --git a/BaseTools/BinWrappers/WindowsLike/build.bat b/BaseTools/BinWrappers/WindowsLike/build.bat index 9fbb704a6e..82e0a90d6c 100644 --- a/BaseTools/BinWrappers/WindowsLike/build.bat +++ b/BaseTools/BinWrappers/WindowsLike/build.bat @@ -1,3 +1,3 @@ @setlocal @set ToolName=%~n0% -@%PYTHON_HOME%\python.exe %BASE_TOOLS_PATH%\Source\Python\%ToolName%\%ToolName%.py %* +@%PYTHON% %BASE_TOOLS_PATH%\Source\Python\%ToolName%\%ToolName%.py %* diff --git a/BaseTools/Makefile b/BaseTools/Makefile index e6932c77c0..2569ea2ff4 100644 --- a/BaseTools/Makefile +++ b/BaseTools/Makefile @@ -20,17 +20,17 @@ SUBDIRS = $(BASE_TOOLS_PATH)\Source\C $(BASE_TOOLS_PATH)\Source\Python all: c c : - @$(PYTHON_HOME)\python.exe $(BASE_TOOLS_PATH)\Source\C\Makefiles\NmakeSubdirs.py all $(BASE_TOOLS_PATH)\Source\C + @$(PYTHON) $(BASE_TOOLS_PATH)\Source\C\Makefiles\NmakeSubdirs.py all $(BASE_TOOLS_PATH)\Source\C subdirs: $(SUBDIRS) - @$(PYTHON_HOME)\python.exe $(BASE_TOOLS_PATH)\Source\C\Makefiles\NmakeSubdirs.py all $** + @$(PYTHON) $(BASE_TOOLS_PATH)\Source\C\Makefiles\NmakeSubdirs.py all $** .PHONY: clean clean: - $(PYTHON_HOME)\python.exe $(BASE_TOOLS_PATH)\Source\C\Makefiles\NmakeSubdirs.py clean $(SUBDIRS) + $(PYTHON) $(BASE_TOOLS_PATH)\Source\C\Makefiles\NmakeSubdirs.py clean $(SUBDIRS) .PHONY: cleanall cleanall: - $(PYTHON_HOME)\python.exe $(BASE_TOOLS_PATH)\Source\C\Makefiles\NmakeSubdirs.py cleanall $(SUBDIRS) + $(PYTHON) $(BASE_TOOLS_PATH)\Source\C\Makefiles\NmakeSubdirs.py cleanall $(SUBDIRS) diff --git a/BaseTools/Source/C/Makefile b/BaseTools/Source/C/Makefile index 5806dcedd9..dd39661272 100644 --- a/BaseTools/Source/C/Makefile +++ b/BaseTools/Source/C/Makefile @@ -38,7 +38,7 @@ libs: $(LIBRARIES) @echo # Build libraries @echo ###################### @if not exist $(LIB_PATH) mkdir $(LIB_PATH) - @$(PYTHON_HOME)\python.exe Makefiles\NmakeSubdirs.py all $** + @$(PYTHON) Makefiles\NmakeSubdirs.py all $** apps: $(APPLICATIONS) @echo. @@ -46,7 +46,7 @@ apps: $(APPLICATIONS) @echo # Build executables @echo ###################### @if not exist $(BIN_PATH) mkdir $(BIN_PATH) - @$(PYTHON_HOME)\python.exe Makefiles\NmakeSubdirs.py all $** + @$(PYTHON) Makefiles\NmakeSubdirs.py all $** install: $(LIB_PATH) $(BIN_PATH) @echo. @@ -60,11 +60,11 @@ install: $(LIB_PATH) $(BIN_PATH) .PHONY: clean clean: - @$(PYTHON_HOME)\python.exe Makefiles\NmakeSubdirs.py clean $(LIBRARIES) $(APPLICATIONS) + @$(PYTHON) Makefiles\NmakeSubdirs.py clean $(LIBRARIES) $(APPLICATIONS) .PHONY: cleanall cleanall: - @$(PYTHON_HOME)\python.exe Makefiles\NmakeSubdirs.py cleanall $(LIBRARIES) $(APPLICATIONS) + @$(PYTHON) Makefiles\NmakeSubdirs.py cleanall $(LIBRARIES) $(APPLICATIONS) !INCLUDE Makefiles\ms.rule diff --git a/BaseTools/Tests/GNUmakefile b/BaseTools/Tests/GNUmakefile index 0c11f6aae9..d6f4e1908b 100644 --- a/BaseTools/Tests/GNUmakefile +++ b/BaseTools/Tests/GNUmakefile @@ -14,7 +14,7 @@ all: test test: - @if command -v python2 >/dev/null 2>&1; then python2 RunTests.py; else python RunTests.py; fi + @if command -v $(PYTHON) >/dev/null 1; then $(PYTHON) RunTests.py; else python RunTests.py; fi clean: find . -name '*.pyc' -exec rm '{}' ';' diff --git a/BaseTools/toolsetup.bat b/BaseTools/toolsetup.bat index 1cac3105c2..811b23051f 100755 --- a/BaseTools/toolsetup.bat +++ b/BaseTools/toolsetup.bat @@ -274,8 +274,7 @@ goto check_build_environment echo. :check_build_environment - set PYTHONHASHSEED=0 - if defined BASETOOLS_PYTHON_SOURCE goto VisualStudioAvailable + set PYTHONHASHSEED=1 if not defined BASE_TOOLS_PATH ( if not exist "Source\C\Makefile" ( @@ -286,24 +285,60 @@ goto check_build_environment ) ) - if not defined PYTHON_HOME ( - if defined PYTHONHOME ( - set PYTHON_HOME=%PYTHONHOME% - ) else ( +:defined_python +if defined PYTHON3_ENABLE ( + if "%PYTHON3_ENABLE%" EQU "TRUE" ( + set PYTHON=py -3 + %PYTHON% --version >NUL 2>&1 + if %ERRORLEVEL% NEQ 0 ( echo. - echo !!! ERROR !!! Binary python tools are missing. PYTHON_HOME environment variable is not set. - echo PYTHON_HOME is required to build or execute the python tools. + echo !!! ERROR !!! PYTHON3 is not installed or added to environment variables echo. goto end + ) else ( + goto check_freezer_path + ) + ) +) + +if defined PYTHON_HOME ( + if EXIST "%PYTHON_HOME%" ( + set PYTHON=%PYTHON_HOME%\python.exe + goto check_freezer_path + ) + ) +if defined PYTHONHOME ( + if EXIST "%PYTHONHOME%" ( + set PYTHON_HOME=%PYTHONHOME% + set PYTHON=%PYTHON_HOME%\python.exe + goto check_freezer_path ) ) + + echo. + echo !!! ERROR !!! Binary python tools are missing. + echo PYTHON_HOME or PYTHON3_ENABLE environment variable is not set successfully. + echo PYTHON_HOME or PYTHON3_ENABLE is required to build or execute the python tools. + echo. + goto end +:check_freezer_path + if defined BASETOOLS_PYTHON_SOURCE goto print_python_info set "PATH=%BASE_TOOLS_PATH%\BinWrappers\WindowsLike;%PATH%" set BASETOOLS_PYTHON_SOURCE=%BASE_TOOLS_PATH%\Source\Python set PYTHONPATH=%BASETOOLS_PYTHON_SOURCE%;%PYTHONPATH% +:print_python_info echo PATH = %PATH% - echo PYTHON_HOME = %PYTHON_HOME% + if "%PYTHON3_ENABLE%" EQU "TRUE" ( + echo PYTHON3_ENABLE = %PYTHON3_ENABLE% + echo PYTHON3 = %PYTHON% + ) else ( + echo PYTHON3_ENABLE = %PYTHON3_ENABLE% + if defined PYTHON_HOME ( + echo PYTHON_HOME = %PYTHON_HOME% + ) + ) echo PYTHONPATH = %PYTHONPATH% echo. diff --git a/edksetup.sh b/edksetup.sh index 3dee8c5d61..06f95f4b9c 100755 --- a/edksetup.sh +++ b/edksetup.sh @@ -77,7 +77,7 @@ function SetWorkspace() # Set $WORKSPACE # export WORKSPACE=`pwd` - export PYTHONHASHSEED=0 + export PYTHONHASHSEED=1 return 0 } @@ -111,10 +111,59 @@ function SetupEnv() fi } +function SetupPython() +{ + if [ $PYTHON3_ENABLE ] && [ $PYTHON3_ENABLE == TRUE ] + then + for python in $(which python3) + do + python=$(echo $python | grep "[[:digit:]]$" || true) + python_version=${python##*python} + if [ -z "${python_version}" ];then + continue + fi + if [ -z $origin_version ];then + origin_version=$python_version + export PYTHON=$python + continue + fi + ret=`echo "$origin_version < $python_version" |bc` + if [ "$ret" -eq 1 ]; then + origin_version=$python_version + export PYTHON=$python + fi + done + fi + + if [ -z $PYTHON3_ENABLE ] || [ $PYTHON3_ENABLE != TRUE ] + then + for python in $(which python2) + do + python=$(echo $python | grep "[[:digit:]]$" || true) + python_version=${python##*python} + if [ -z "${python_version}" ];then + continue + fi + if [ -z $origin_version ] || [ $origin_version -ge 3 ] + then + origin_version=$python_version + export PYTHON=$python + continue + fi + ret=`echo "$origin_version < $python_version" |bc` + if [ "$ret" -eq 1 ]; then + origin_version=$python_version + export PYTHON=$python + fi + done + fi +} + function SourceEnv() { SetWorkspace && SetupEnv + SetupPython } I=$# -- 2.39.2