From f26c36c96b56b1cce159fb86c22bf657a094ad99 Mon Sep 17 00:00:00 2001 From: Ray Molenkamp Date: Tue, 25 Jan 2022 09:19:03 -0700 Subject: [PATCH] make.bat: unify python detection Several sub commands tried on their own to locate python, given I wanted to look in several locations for a broader libdir compatibility this is best done in a central location. Python 3.9 is still preferred, but if 3.10-3.12 are available that be accepted as well. note: this is about the python version make.bat uses to run various python helper scripts, this change has no influence on the python version blender itself uses. --- build_files/windows/find_dependencies.cmd | 29 +++++++++++++++++++---- build_files/windows/format.cmd | 12 +++------- build_files/windows/icons.cmd | 16 +++---------- build_files/windows/icons_geom.cmd | 16 +++---------- build_files/windows/update_sources.cmd | 9 +++---- make.bat | 11 ++++++--- 6 files changed, 45 insertions(+), 48 deletions(-) diff --git a/build_files/windows/find_dependencies.cmd b/build_files/windows/find_dependencies.cmd index 9fa3b156a4f..fec2bd2e752 100644 --- a/build_files/windows/find_dependencies.cmd +++ b/build_files/windows/find_dependencies.cmd @@ -3,7 +3,32 @@ for %%X in (svn.exe) do (set SVN=%%~$PATH:X) for %%X in (cmake.exe) do (set CMAKE=%%~$PATH:X) for %%X in (ctest.exe) do (set CTEST=%%~$PATH:X) for %%X in (git.exe) do (set GIT=%%~$PATH:X) +REM For python, default on 39 but if that does not exist also check +REM the 310,311 and 312 folders to see if those are there, it checks +REM this far ahead to ensure good lib folder compatiblity in the future. set PYTHON=%BLENDER_DIR%\..\lib\win64_vc15\python\39\bin\python.exe +if EXIST %PYTHON% ( + goto detect_python_done +) +set PYTHON=%BLENDER_DIR%\..\lib\win64_vc15\python\310\bin\python.exe +if EXIST %PYTHON% ( + goto detect_python_done +) +set PYTHON=%BLENDER_DIR%\..\lib\win64_vc15\python\311\bin\python.exe +if EXIST %PYTHON% ( + goto detect_python_done +) +set PYTHON=%BLENDER_DIR%\..\lib\win64_vc15\python\312\bin\python.exe +if EXIST %PYTHON% ( + goto detect_python_done +) + +if NOT EXIST %PYTHON% ( + echo Warning: Python not found, there is likely an issue with the library folder + set PYTHON="" +) + +:detect_python_done if NOT "%verbose%" == "" ( echo svn : "%SVN%" echo cmake : "%CMAKE%" @@ -11,7 +36,3 @@ if NOT "%verbose%" == "" ( echo git : "%GIT%" echo python : "%PYTHON%" ) -if "%CMAKE%" == "" ( - echo Cmake not found in path, required for building, exiting... - exit /b 1 -) diff --git a/build_files/windows/format.cmd b/build_files/windows/format.cmd index d5003c9f8d8..95440cb1818 100644 --- a/build_files/windows/format.cmd +++ b/build_files/windows/format.cmd @@ -9,17 +9,11 @@ exit /b 1 :detect_done echo found clang-format in %CF_PATH% -if EXIST %PYTHON% ( - set PYTHON=%BLENDER_DIR%\..\lib\win64_vc15\python\39\bin\python.exe - goto detect_python_done +if NOT EXIST %PYTHON% ( + echo python not found, required for this operation + exit /b 1 ) -echo python not found in lib folder -exit /b 1 - -:detect_python_done -echo found python (%PYTHON%) - set FORMAT_PATHS=%BLENDER_DIR%\source\tools\utils_maintenance\clang_format_paths.py REM The formatting script expects clang-format to be in the current PATH. diff --git a/build_files/windows/icons.cmd b/build_files/windows/icons.cmd index d51b27d8953..9390ccf827c 100644 --- a/build_files/windows/icons.cmd +++ b/build_files/windows/icons.cmd @@ -1,18 +1,8 @@ -if EXIST "%PYTHON%" ( - goto detect_python_done +if NOT EXIST %PYTHON% ( + echo python not found, required for this operation + exit /b 1 ) -set PYTHON=%BLENDER_DIR%\..\lib\win64_vc15\python\39\bin\python.exe -if EXIST %PYTHON% ( - goto detect_python_done -) - -echo python not found at %PYTHON% -exit /b 1 - -:detect_python_done -echo found python (%PYTHON%) - call "%~dp0\find_inkscape.cmd" if EXIST "%INKSCAPE_BIN%" ( diff --git a/build_files/windows/icons_geom.cmd b/build_files/windows/icons_geom.cmd index 18312daf35b..4cb3bf5b4df 100644 --- a/build_files/windows/icons_geom.cmd +++ b/build_files/windows/icons_geom.cmd @@ -1,18 +1,8 @@ -if EXIST %PYTHON% ( - goto detect_python_done +if NOT EXIST %PYTHON% ( + echo python not found, required for this operation + exit /b 1 ) -set PYTHON=%BLENDER_DIR%\..\lib\win64_vc15\python\39\bin\python.exe -if EXIST %PYTHON% ( - goto detect_python_done -) - -echo python not found at %PYTHON% -exit /b 1 - -:detect_python_done -echo found python (%PYTHON%) - call "%~dp0\find_blender.cmd" if EXIST "%BLENDER_BIN%" ( diff --git a/build_files/windows/update_sources.cmd b/build_files/windows/update_sources.cmd index f8fbd383090..f99ce43f40f 100644 --- a/build_files/windows/update_sources.cmd +++ b/build_files/windows/update_sources.cmd @@ -1,10 +1,7 @@ -if EXIST %PYTHON% ( - goto detect_python_done +if NOT EXIST %PYTHON% ( + echo python not found, required for this operation + exit /b 1 ) - -echo python not found in lib folder -exit /b 1 - :detect_python_done REM Use -B to avoid writing __pycache__ in lib directory and causing update conflicts. diff --git a/make.bat b/make.bat index d55b2cfd1b3..ff8059b0754 100644 --- a/make.bat +++ b/make.bat @@ -13,6 +13,9 @@ if errorlevel 1 goto EOF call "%BLENDER_DIR%\build_files\windows\parse_arguments.cmd" %* if errorlevel 1 goto EOF +call "%BLENDER_DIR%\build_files\windows\find_dependencies.cmd" +if errorlevel 1 goto EOF + REM if it is one of the convenience targets and BLENDER_BIN is set REM skip compiler detection if "%ICONS%%ICONS_GEOM%%DOC_PY%" == "1" ( @@ -21,9 +24,6 @@ if "%ICONS%%ICONS_GEOM%%DOC_PY%" == "1" ( ) ) -call "%BLENDER_DIR%\build_files\windows\find_dependencies.cmd" -if errorlevel 1 goto EOF - if "%BUILD_SHOW_HASHES%" == "1" ( call "%BLENDER_DIR%\build_files\windows\show_hashes.cmd" goto EOF @@ -88,6 +88,11 @@ if "%DOC_PY%" == "1" ( goto EOF ) +if "%CMAKE%" == "" ( + echo Cmake not found in path, required for building, exiting... + exit /b 1 +) + echo Building blender with VS%BUILD_VS_YEAR% for %BUILD_ARCH% in %BUILD_DIR% call "%BLENDER_DIR%\build_files\windows\check_libraries.cmd"