BaseTools: Update toolsetup.bat and Tests/PythonTest.py to check ver

Update toolsetup.bat and Tests/PythonTest.py to check if we're running a
version of Python that's compatible with BaseTools and the Pip
BaseTools.

BaseTools uses syntax from Python 3.6 or newer, so set that as the minimum
version EDK2 requires.

Signed-off-by: Rebecca Cran <rebecca@bsdio.com>
Reviewed-by: Liming Gao <gaoliming@byosoft.com.cn>
This commit is contained in:
Rebecca Cran 2023-04-24 11:10:54 -06:00 committed by mergify[bot]
parent e6de6052a0
commit 5215cd5baf
2 changed files with 54 additions and 29 deletions

View File

@ -1,9 +1,27 @@
## @file
# Test whether PYTHON_COMMAND is available
# Test whether PYTHON_COMMAND is available and the
# minimum Python version is installed.
#
# Copyright (c) 2013 - 2018, Intel Corporation. All rights reserved.<BR>
# SPDX-License-Identifier: BSD-2-Clause-Patent
#
import sys
if __name__ == '__main__':
print('TRUE')
# Check if the major and minor versions required were specified.
if len(sys.argv) >= 3:
req_major_version = int(sys.argv[1])
req_minor_version = int(sys.argv[2])
else:
# If the minimum version wasn't specified on the command line,
# default to 3.6 because BaseTools uses syntax from PEP 526
# (https://peps.python.org/pep-0526/)
req_major_version = 3
req_minor_version = 6
if sys.version_info.major == req_major_version and \
sys.version_info.minor >= req_minor_version:
sys.exit(0)
else:
sys.exit(1)

View File

@ -12,6 +12,8 @@
@echo off
pushd .
set SCRIPT_ERROR=0
set PYTHON_VER_MAJOR=3
set PYTHON_VER_MINOR=6
@REM ##############################################################
@REM # You should not have to modify anything below this line
@ -304,17 +306,19 @@ goto check_build_environment
)
)
:defined_python
@REM Check Python environment
if not defined PYTHON_COMMAND (
set PYTHON_COMMAND=py -3
py -3 %BASE_TOOLS_PATH%\Tests\PythonTest.py >PythonCheck.txt 2>&1
setlocal enabledelayedexpansion
set /p PythonCheck=<"PythonCheck.txt"
del PythonCheck.txt
if "!PythonCheck!" NEQ "TRUE" (
py -3 %BASE_TOOLS_PATH%\Tests\PythonTest.py %PYTHON_VER_MAJOR% %PYTHON_VER_MINOR% >NUL 2>NUL
if %ERRORLEVEL% EQU 1 (
echo.
echo !!! ERROR !!! Python %PYTHON_VER_MAJOR%.%PYTHON_VER_MINOR% or newer is required.
echo.
goto end
)
if %ERRORLEVEL% NEQ 0 (
if not defined PYTHON_HOME if not defined PYTHONHOME (
endlocal
set PYTHON_COMMAND=
echo.
echo !!! ERROR !!! Binary python tools are missing.
@ -327,8 +331,6 @@ if not defined PYTHON_COMMAND (
)
)
endlocal
if defined PYTHON_HOME (
if EXIST "%PYTHON_HOME%" (
set PYTHON_COMMAND=%PYTHON_HOME%\python.exe
@ -340,27 +342,30 @@ if defined PYTHON_HOME (
)
)
%PYTHON_COMMAND% %BASE_TOOLS_PATH%\Tests\PythonTest.py >PythonCheck.txt 2>&1
setlocal enabledelayedexpansion
set /p PythonCheck=<"PythonCheck.txt"
del PythonCheck.txt
if "!PythonCheck!" NEQ "TRUE" (
echo.
echo ! ERROR ! PYTHON_COMMAND="%PYTHON_COMMAND%" is not installed or added to environment variables
echo.
goto end
%PYTHON_COMMAND% %BASE_TOOLS_PATH%\Tests\PythonTest.py %PYTHON_VER_MAJOR% %PYTHON_VER_MINOR% >NUL 2>NUL
if %ERRORLEVEL% EQU 1 (
echo.
echo !!! ERROR !!! Python %PYTHON_VER_MAJOR%.%PYTHON_VER_MINOR% or newer is required.
echo.
goto end
)
if %ERRORLEVEL% NEQ 0 (
echo.
echo !!! ERROR !!! PYTHON_COMMAND="%PYTHON_COMMAND%" does not exist or is not a Python interpreter.
echo.
goto end
)
endlocal
%PYTHON_COMMAND% -c "import edk2basetools" >NUL 2>NUL
if %ERRORLEVEL% EQU 0 (
goto use_pip_basetools
) else (
REM reset ERRORLEVEL
type nul>nul
goto use_builtin_basetools
)
%PYTHON_COMMAND% -c "import edk2basetools" >NUL 2>NUL
if %ERRORLEVEL% EQU 0 (
goto use_pip_basetools
) else (
REM reset ERRORLEVEL
type nul>nul
goto use_builtin_basetools
)
:use_builtin_basetools
@echo Using EDK2 in-source Basetools
@ -444,5 +449,7 @@ set VS2019=
set VS2017=
set VS2015=
set VSTool=
set PYTHON_VER_MAJOR=
set PYTHON_VER_MINOR=
set SCRIPT_ERROR=
popd