| name: Reusable Windows | |
| on: | |
| workflow_call: | |
| inputs: | |
| os: | |
| description: OS to run on | |
| required: true | |
| type: string | |
| 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 | |
| env: | |
| IncludeUwp: >- | |
| true | |
| jobs: | |
| build: | |
| name: 'build and test (${{ inputs.arch }})' | |
| runs-on: ${{ inputs.os }} | |
| timeout-minutes: 60 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Register MSVC problem matcher | |
| if: inputs.arch != 'Win32' | |
| run: echo "::add-matcher::.github/problem-matchers/msvc.json" | |
| - name: Build CPython | |
| run: >- | |
| .\\PCbuild\\build.bat | |
| -e -d -v | |
| -p ${{ inputs.arch }} | |
| ${{ fromJSON(inputs.free-threading) && '--disable-gil' || '' }} | |
| - name: Display build info # FIXME(diegorusso): remove the `if` | |
| if: inputs.arch != 'arm64' | |
| run: .\\python.bat -m test.pythoninfo | |
| - name: Tests # FIXME(diegorusso): remove the `if` | |
| if: inputs.arch != 'arm64' | |
| run: >- | |
| .\\PCbuild\\rt.bat | |
| -p ${{ inputs.arch }} | |
| -d -q --fast-ci | |
| ${{ fromJSON(inputs.free-threading) && '--disable-gil' || '' }} |