| 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 | |
| permissions: | |
| contents: read | |
| env: | |
| FORCE_COLOR: 1 | |
| jobs: | |
| build: | |
| name: Build and test (${{ inputs.arch }}, ${{ inputs.interpreter }}) | |
| runs-on: ${{ inputs.arch == 'arm64' && 'windows-11-arm' || 'windows-2025' }} | |
| timeout-minutes: 60 | |
| env: | |
| ARCH: ${{ inputs.arch }} | |
| steps: | |
| - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 | |
| 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}" | |
| ${{ 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' || '' }} | |
| ${{ inputs.free-threading && '--disable-gil' || '' }} | |
| shell: bash |