self-hosted-runner:
- labels: ["windows-aarch64"]
+ # Pending https://github.com/rhysd/actionlint/issues/533
+ labels: ["windows-11-arm"]
config-variables: null
strategy:
fail-fast: false
matrix:
- os:
- - windows-latest
arch:
- x64
+ - Win32
+ - arm64
free-threading:
- false
- true
- include:
- # Forks don't have access to Windows on Arm runners. These jobs are skipped below:
- - os: ${{ github.repository_owner == 'python' && 'windows-aarch64' || 'windows-latest' }}
- arch: arm64
- free-threading: false
- # Forks don't have access to Windows on Arm runners. These jobs are skipped below:
- - os: ${{ github.repository_owner == 'python' && 'windows-aarch64' || 'windows-latest' }}
- arch: arm64
- free-threading: true
- - os: windows-latest
- arch: Win32
- free-threading: false
+ exclude:
+ # Skip Win32 on free-threaded builds
+ - { arch: Win32, free-threading: true }
uses: ./.github/workflows/reusable-windows.yml
with:
- os: ${{ matrix.os }}
arch: ${{ matrix.arch }}
free-threading: ${{ matrix.free-threading }}
strategy:
fail-fast: false
matrix:
- os:
- - windows-latest
arch:
- x86
- x64
- include:
- # Forks don't have access to Windows on Arm runners. These jobs are skipped below:
- - os: ${{ github.repository_owner == 'python' && 'windows-aarch64' || 'windows-latest' }}
- arch: arm64
+ - arm64
uses: ./.github/workflows/reusable-windows-msi.yml
with:
- os: ${{ matrix.os }}
arch: ${{ matrix.arch }}
build-macos:
runner: windows-latest
- target: aarch64-pc-windows-msvc/msvc
architecture: ARM64
- # Forks don't have access to Windows on Arm runners. These jobs are skipped below:
- runner: ${{ github.repository_owner == 'python' && 'windows-aarch64' || 'windows-latest' }}
+ runner: windows-11-arm
- target: x86_64-apple-darwin/clang
architecture: x86_64
runner: macos-13
python-version: '3.11'
- name: Windows
- # Forks don't have access to Windows on Arm runners. Skip those:
- if: runner.os == 'Windows' && (matrix.architecture != 'ARM64' || github.repository_owner == 'python')
+ if: runner.os == 'Windows'
run: |
choco install llvm --allow-downgrade --no-progress --version ${{ matrix.llvm }}.1.0
./PCbuild/build.bat --experimental-jit ${{ matrix.debug && '-d' || '' }} -p ${{ matrix.architecture }}
on:
workflow_call:
inputs:
- os:
- description: OS to run on
- required: true
- type: string
arch:
description: CPU architecture
required: true
jobs:
build:
name: installer for ${{ inputs.arch }}
- runs-on: ${{ inputs.os }}
+ runs-on: ${{ inputs.arch == 'arm64' && 'windows-11-arm' || 'windows-latest' }}
timeout-minutes: 60
env:
ARCH: ${{ inputs.arch }}
with:
persist-credentials: false
- name: Build CPython installer
- # Forks don't have access to Windows on Arm runners. Skip those:
- if: inputs.arch != 'arm64' || github.repository_owner == 'python'
run: ./Tools/msi/build.bat --doc -"${ARCH}"
shell: bash
on:
workflow_call:
inputs:
- os:
- description: OS to run on
- required: true
- type: string
arch:
description: CPU architecture
required: true
jobs:
build:
name: Build and test (${{ inputs.arch }})
- runs-on: ${{ inputs.os }}
+ runs-on: ${{ inputs.arch == 'arm64' && 'windows-11-arm' || 'windows-latest' }}
timeout-minutes: 60
env:
ARCH: ${{ inputs.arch }}
if: inputs.arch != 'Win32'
run: echo "::add-matcher::.github/problem-matchers/msvc.json"
- name: Build CPython
- # Forks don't have access to Windows on Arm runners. Skip those:
- if: inputs.arch != 'arm64' || github.repository_owner == 'python'
run: >-
.\\PCbuild\\build.bat
-e -d -v
${{ fromJSON(inputs.free-threading) && '--disable-gil' || '' }}
shell: bash
- name: Display build info
- # Forks don't have access to Windows on Arm runners. Skip those:
- if: inputs.arch != 'arm64' || github.repository_owner == 'python'
run: .\\python.bat -m test.pythoninfo
- name: Tests
- # Forks don't have access to Windows on Arm runners. Skip those:
- if: inputs.arch != 'arm64' || github.repository_owner == 'python'
run: >-
.\\PCbuild\\rt.bat
-p "${ARCH}"