From e14a8cb2152bf19d8be377bb0a333939a87f38c3 Mon Sep 17 00:00:00 2001 From: "d.rotanov" Date: Mon, 12 Oct 2026 16:58:29 +0400 Subject: [PATCH 1/2] STARSTEER-28862 [AI] Fail the Windows build when build.bat fails build_common.cmake ran build.bat for Release and Debug without checking the result, so a failed Release build still produced a package (Debug-only, empty python312.zip) and the job reported SUCCESS (CPython-any-branch #51). --- rogii/build_common.cmake | 30 +++++++++++++++++++----------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/rogii/build_common.cmake b/rogii/build_common.cmake index 8a79dfb34afd07..e0d70ebbb5beda 100644 --- a/rogii/build_common.cmake +++ b/rogii/build_common.cmake @@ -89,18 +89,26 @@ if(WIN32) message ( "cmd /C ${BUILD_DIRECTORY}\\build.bat -c Release -p ${BUILD_ARCH}" ) - execute_process( - COMMAND - cmd /C "${BUILD_DIRECTORY}/build.bat -c Release -p ${BUILD_ARCH} ${MSBUILD_PARAMS}" - WORKING_DIRECTORY - "${BUILD_DIRECTORY}" - ) - execute_process( - COMMAND - cmd /C "${BUILD_DIRECTORY}/build.bat -c Debug -p ${BUILD_ARCH} ${MSBUILD_PARAMS}" - WORKING_DIRECTORY - "${BUILD_DIRECTORY}" + foreach( + CONFIGURATION + Release + Debug ) + execute_process( + COMMAND + cmd /C "${BUILD_DIRECTORY}/build.bat -c ${CONFIGURATION} -p ${BUILD_ARCH} ${MSBUILD_PARAMS}" + WORKING_DIRECTORY + "${BUILD_DIRECTORY}" + RESULT_VARIABLE + BUILD_RESULT + ) + if(NOT BUILD_RESULT EQUAL 0) + message( + FATAL_ERROR + "build.bat -c ${CONFIGURATION} -p ${BUILD_ARCH} failed: ${BUILD_RESULT}" + ) + endif() + endforeach() elseif(UNIX) set( From 1e34a6a4b0f6852cd8fd7dfa151d07d058ee32f8 Mon Sep 17 00:00:00 2001 From: "d.rotanov" Date: Mon, 12 Oct 2026 17:02:45 +0400 Subject: [PATCH 2/2] STARSTEER-28862 [AI] Build with a pinned host Python 3.14.7 PCbuild/find_python.bat installs the latest pythonx86 from nuget unless externals/pythonx86 already holds one. pythonx86 3.15.0 dropped SourceFileLoader.load_module, which Python/makeopcodetargets.py (3.12) still calls, so the Release build broke (CPython-any-branch #51/#52). Install pythonx86 3.14.7 (the version build #50 used) into externals, verified by its nuget SHA512, before running build.bat. --- rogii/build_common.cmake | 41 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/rogii/build_common.cmake b/rogii/build_common.cmake index e0d70ebbb5beda..0d9d1909ea1e60 100644 --- a/rogii/build_common.cmake +++ b/rogii/build_common.cmake @@ -82,6 +82,47 @@ set( ) if(WIN32) + # PCbuild/find_python.bat takes externals/pythonx86 first and otherwise installs the latest + # pythonx86 from nuget; pythonx86 3.15 can no longer run the 3.12 regen scripts. + set( + HOST_PYTHON_VERSION + 3.14.7 + ) + set( + HOST_PYTHON_DIR + "${CMAKE_CURRENT_LIST_DIR}/../externals/pythonx86" + ) + set( + HOST_PYTHON_ARCHIVE + "${CMAKE_CURRENT_LIST_DIR}/../externals/pythonx86.${HOST_PYTHON_VERSION}.nupkg" + ) + file( + DOWNLOAD + "https://api.nuget.org/v3-flatcontainer/pythonx86/${HOST_PYTHON_VERSION}/pythonx86.${HOST_PYTHON_VERSION}.nupkg" + "${HOST_PYTHON_ARCHIVE}" + EXPECTED_HASH + SHA512=d2bb139210513ab54821e82969131cadde68a86d8e2ed7d27cb747cf8aeb855e4e6d34261f5e86d1a7d7e68e773760e8a14970d6e426a67a3a4df27a89e341e5 + TLS_VERIFY + ON + ) + file( + REMOVE_RECURSE + "${HOST_PYTHON_DIR}" + ) + file( + ARCHIVE_EXTRACT + INPUT + "${HOST_PYTHON_ARCHIVE}" + DESTINATION + "${HOST_PYTHON_DIR}" + ) + if(NOT EXISTS "${HOST_PYTHON_DIR}/tools/python.exe") + message( + FATAL_ERROR + "pythonx86 ${HOST_PYTHON_VERSION} has no tools/python.exe" + ) + endif() + set( MSBUILD_PARAMS "-v:n"