Skip to content

[3.14] GH-144679: When building with VS 2026 on Windows, use PlatformToolset v145 by default (GH-144680) - #158188

Merged
pablogsal merged 2 commits into
python:3.14from
miss-islington:backport-c06f4f4-3.14
Sep 25, 2026
Merged

pablogsal merged 2 commits into
python:3.14from
miss-islington:backport-c06f4f4-3.14

Conversation

@miss-islington

@miss-islington miss-islington commented Sep 25, 2026 •

Copy link
Copy Markdown
Contributor

…oolset v145 by default (pythonGH-144680)

(cherry picked from commit c06f4f4)

Co-authored-by: Chris Eibl <138194463+chris-eibl@users.noreply.github.com>
@StanFromIreland

Copy link
Copy Markdown
Member

The Windows (arm) jobs in the CI recently started failing on 3.14, for example:

Using py -3.14 (found 3.14 with py.exe)

C:\a\cpython\cpython>"C:\Program Files\Microsoft Visual Studio\18\Enterprise\MSBuild\Current\Bin\msbuild.exe" "C:\a\cpython\cpython\PCbuild\pcbuild.proj" /t:Build /m /v:n /p:Configuration=Debug /p:Platform=arm64 /p:IncludeExternals=true /p:IncludeCTypes=true /p:IncludeSSL=true /p:IncludeTkinter=true /p:DisableGil=true /p:UseTestMarker= /p:GIT="C:\Program Files\Git\clangarm64\bin\git.exe" /p:UseJIT= /p:UseTIER2= /p:PyStats= /p:UseTailCallInterp= /p:DisableRemoteDebug=          
MSBuild version 18.10.1-1.26427.6+3cd27c13e for .NET Framework
Build started 9/25/2026 11:22:22 AM.

     1>Project "C:\a\cpython\cpython\PCbuild\pcbuild.proj" on node 1 (Build target(s)).
     1>Project "C:\a\cpython\cpython\PCbuild\pcbuild.proj" (1) is building "C:\a\cpython\cpython\PCbuild\_freeze_module.vcxproj" (2) on node 1 (Build target(s)).
     2>C:\Program Files\Microsoft Visual Studio\18\Enterprise\MSBuild\Microsoft\VC\v180\Microsoft.CppBuild.targets(473,5): error MSB8020: The build tools for Visual Studio 2022 (Platform Toolset = 'v143') cannot be found. To build using the v143 build tools, please install Visual Studio 2022 build tools.  Alternatively, you may upgrade to the current Visual Studio tools by selecting the Project menu or right-click the solution, and then selecting "Retarget solution". [C:\a\cpython\cpython\PCbuild\_freeze_module.vcxproj]
     2>Done Building Project "C:\a\cpython\cpython\PCbuild\_freeze_module.vcxproj" (Build target(s)) -- FAILED.
     1>Done Building Project "C:\a\cpython\cpython\PCbuild\pcbuild.proj" (Build target(s)) -- FAILED.

Build FAILED.

       "C:\a\cpython\cpython\PCbuild\pcbuild.proj" (Build target) (1) ->
       "C:\a\cpython\cpython\PCbuild\_freeze_module.vcxproj" (Build target) (2) ->
       (PrepareForBuild target) -> 
         C:\Program Files\Microsoft Visual Studio\18\Enterprise\MSBuild\Microsoft\VC\v180\Microsoft.CppBuild.targets(473,5): error MSB8020: The build tools for Visual Studio 2022 (Platform Toolset = 'v143') cannot be found. To build using the v143 build tools, please install Visual Studio 2022 build tools.  Alternatively, you may upgrade to the current Visual Studio tools by selecting the Project menu or right-click the solution, and then selecting "Retarget solution". [C:\a\cpython\cpython\PCbuild\_freeze_module.vcxproj]

    0 Warning(s)
    1 Error(s)

The windows-11-arm runner is being migrated to the Visual Studio 2026 image (actions/runner-images#14602), which doesn't have the VS 2022 v143 build tools. On 3.14, PCbuild/python.props maps VS 2026 to v143, so the arm64 builds fail. This maps it to v145 instead, and the arm64 jobs pass with it. I'm not sure if this is correct here, however, as I'm not really familiar with the Windows build system (I'd like to unblock the CI, however).

CC @zooba @chris-eibl

@StanFromIreland

Copy link
Copy Markdown
Member

Aargh, and I think it would require #150788 as well?

Also CC @zware here.

Co-authored-by: Zachary Ware <zach@python.org>
(cherry picked from commit 7241db1)
@pablogsal

Copy link
Copy Markdown
Member

The VS 2026 runner got past the toolset selection but then failed compiling the UWP launcher on the experimental coroutine header. I cherry-picked the one-line fix from #150788 onto this backport branch; that fix is already on main and 3.15.

@pablogsal pablogsal left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This now matches the VS 2026 toolset and UWP fixes already used on main and 3.15.

@pablogsal
pablogsal enabled auto-merge (squash) September 25, 2026 19:33
@chris-eibl

Copy link
Copy Markdown
Member

Hm, @zooba's preference regarding backporting this was #144680 (comment)

Yes but the "observation period" includes a couple of releases of 3.15. We want actual feedback from users, not just CI stability.

Seems that windows-11-arm migration to VS2026 seems to force us to do that earlier?
At least for arm? That's what this backport would do for 3.14, because without switching 3.14 CI

runs-on: ${{ inputs.arch == 'arm64' && 'windows-11-arm' || 'windows-2022' }}

to windows-2025 at least amd64 and x86 will stay on v143.

Aargh, and I think it would require #150788 as well?

Yupp, see error C2338: static assertion failed: 'error STL1011: The /await compiler option, for the regular and ft build.
@pablogsal already cherry-picked and this should fix it.

What strikes me even more: Windows MSI / installer for arm64 fails with

C:\a\cpython\cpython\Modules\_hacl\Hacl_Hash_SHA2.c(282): fatal error C1002: compiler is out of heap space in pass 2 [C:\a\cpython\cpython\PCbuild\pythoncore.vcxproj]

This rings a bell (#153668), but different file affected here ...

I don't know, yet, how this affects the official release builds (they are done with an azure image).

@chris-eibl

Copy link
Copy Markdown
Member

Another option might be to install the v143 build tools in CI.

@chris-eibl

chris-eibl commented Sep 25, 2026 •

Copy link
Copy Markdown
Member

Something like

- name: Install v143 ARM64
  shell: pwsh
  run: |
    $vs = & "$env:ProgramFiles\Microsoft Visual Studio\Installer\vswhere.exe" -latest -products * -property installationPath
    & "$env:ProgramFiles\Microsoft Visual Studio\Installer\setup.exe" modify --installPath "$vs" --add Microsoft.VisualStudio.Component.VC.14.44.17.14.ARM64 --quiet --norestart --wait

@pablogsal
pablogsal merged commit 2649b37 into python:3.14 Sep 25, 2026
54 of 55 checks passed
@miss-islington
miss-islington deleted the backport-c06f4f4-3.14 branch September 25, 2026 20:10
@hugovk

hugovk commented Sep 25, 2026

Copy link
Copy Markdown
Member

Hm, @zooba's preference regarding backporting this was #144680 (comment)

Yes but the "observation period" includes a couple of releases of 3.15. We want actual feedback from users, not just CI stability.

We've had 8 pre-releases since then. Or does it mean only non-pre-releases?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants