From 10a77619f9a465ecfbd1ccb4f8aea9175d76912d Mon Sep 17 00:00:00 2001 From: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com> Date: Wed, 16 Apr 2025 16:27:20 +0300 Subject: [PATCH] Use Windows ARM64 hosted runners (#132546) Co-authored-by: Diego Russo --- .github/actionlint.yaml | 3 ++- .github/workflows/build.yml | 28 +++++----------------- .github/workflows/jit.yml | 6 ++--- .github/workflows/reusable-windows-msi.yml | 8 +------ .github/workflows/reusable-windows.yml | 12 +--------- 5 files changed, 12 insertions(+), 45 deletions(-) diff --git a/.github/actionlint.yaml b/.github/actionlint.yaml index af125266ae7..68aae196357 100644 --- a/.github/actionlint.yaml +++ b/.github/actionlint.yaml @@ -1,5 +1,6 @@ self-hosted-runner: - labels: ["windows-aarch64"] + # Pending https://github.com/rhysd/actionlint/issues/533 + labels: ["windows-11-arm"] config-variables: null diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index c8fc5cff28b..dcd5060d7cf 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -156,28 +156,18 @@ jobs: 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 }} @@ -189,18 +179,12 @@ jobs: 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: diff --git a/.github/workflows/jit.yml b/.github/workflows/jit.yml index 4f5ba84d48e..e08d3c8bfd6 100644 --- a/.github/workflows/jit.yml +++ b/.github/workflows/jit.yml @@ -74,8 +74,7 @@ jobs: 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 @@ -97,8 +96,7 @@ jobs: 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 }} diff --git a/.github/workflows/reusable-windows-msi.yml b/.github/workflows/reusable-windows-msi.yml index 6213c903c5a..a50de344bba 100644 --- a/.github/workflows/reusable-windows-msi.yml +++ b/.github/workflows/reusable-windows-msi.yml @@ -3,10 +3,6 @@ name: Reusable Windows MSI on: workflow_call: inputs: - os: - description: OS to run on - required: true - type: string arch: description: CPU architecture required: true @@ -21,7 +17,7 @@ env: 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 }} @@ -31,7 +27,5 @@ jobs: 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 diff --git a/.github/workflows/reusable-windows.yml b/.github/workflows/reusable-windows.yml index deb1f41640e..37c802095b0 100644 --- a/.github/workflows/reusable-windows.yml +++ b/.github/workflows/reusable-windows.yml @@ -3,10 +3,6 @@ name: Reusable Windows on: workflow_call: inputs: - os: - description: OS to run on - required: true - type: string arch: description: CPU architecture required: true @@ -25,7 +21,7 @@ env: 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 }} @@ -37,8 +33,6 @@ jobs: 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 @@ -46,12 +40,8 @@ jobs: ${{ 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}"