| name: Reusable Windows |
| |
| on: |
| workflow_call: |
| inputs: |
| arch: |
| description: CPU architecture |
| required: true |
| type: string |
| free-threading: |
| description: Whether to compile CPython in free-threading mode |
| required: false |
| type: boolean |
| default: false |
| interpreter: |
| description: Which interpreter to build (switch-case or tail-call) |
| required: true |
| type: string |
| |
| env: |
| FORCE_COLOR: 1 |
| IncludeUwp: >- |
| true |
| |
| jobs: |
| build: |
| name: Build and test (${{ inputs.arch }}, ${{ inputs.interpreter }}) |
| runs-on: ${{ inputs.arch == 'arm64' && 'windows-11-arm' || 'windows-2025-vs2026' }} |
| timeout-minutes: 60 |
| env: |
| ARCH: ${{ inputs.arch }} |
| steps: |
| - uses: actions/checkout@v6 |
| with: |
| persist-credentials: false |
| - name: Register MSVC problem matcher |
| if: inputs.arch != 'Win32' |
| run: echo "::add-matcher::.github/problem-matchers/msvc.json" |
| - name: Build CPython |
| # msvc::musttail is not supported for debug builds, so we have to |
| # switch to release. |
| run: >- |
| .\\PCbuild\\build.bat |
| -e -v |
| ${{ inputs.interpreter == 'switch-case' && '-d' || '--tail-call-interp -c Release' }} |
| -p "${ARCH}" |
| ${{ fromJSON(inputs.free-threading) && '--disable-gil' || '' }} |
| shell: bash |
| - name: Display build info |
| run: .\\python.bat -m test.pythoninfo |
| - name: Tests |
| run: >- |
| .\\PCbuild\\rt.bat |
| -p "${ARCH}" |
| -q --fast-ci |
| ${{ inputs.interpreter == 'switch-case' && '-d' || '' }} |
| ${{ fromJSON(inputs.free-threading) && '--disable-gil' || '' }} |
| shell: bash |