This change enables custom GHA runners for Ubuntu-24.04 that run on Arm hardware. It also prepares for Windows runners on Arm hardware, but doesn't enable that just yet, because the Arm GHA runner images for Windows need to be updated.
--- /dev/null
+self-hosted-runner:
+ labels: ["ubuntu-24.04-aarch64", "windows-aarch64"]
+
+config-variables: null
+
+paths:
+ .github/workflows/**/*.yml:
+ ignore:
+ - 1st argument of function call is not assignable
+ - SC2(015|038|086|091|097|098|129|155)
\ No newline at end of file
needs: check_source
if: fromJSON(needs.check_source.outputs.run_tests)
strategy:
+ fail-fast: false
matrix:
+ os:
+ - windows-latest
arch:
- - Win32
- - x64
- - arm64
+ - x64
free-threading:
- - false
- - true
+ - false
+ - true
+ include:
+ - os: windows-latest # FIXME(diegorusso): change to os: windows-aarch64
+ arch: arm64
+ free-threading: false
+ - os: windows-latest # FIXME(diegorusso): change to os: windows-aarch64
+ arch: arm64
+ free-threading: true
+ - os: windows-latest
+ arch: Win32
+ free-threading: false
uses: ./.github/workflows/reusable-windows.yml
with:
+ os: ${{ matrix.os }}
arch: ${{ matrix.arch }}
free-threading: ${{ matrix.free-threading }}
strategy:
fail-fast: false
matrix:
- os: [ubuntu-24.04]
+ os: [ubuntu-24.04, ubuntu-24.04-aarch64]
env:
FORCE_COLOR: 1
OPENSSL_VER: 3.0.15
- name: Build CPython out-of-tree
if: ${{ inputs.free-threading }}
working-directory: ${{ env.CPYTHON_BUILDDIR }}
- run: make -j4
+ run: make -j
- name: Build CPython out-of-tree (for compiler warning check)
if: ${{ !inputs.free-threading}}
working-directory: ${{ env.CPYTHON_BUILDDIR }}
- run: set -o pipefail; make -j4 --output-sync 2>&1 | tee compiler_output_ubuntu.txt
+ run: set -o pipefail; make -j --output-sync 2>&1 | tee compiler_output_ubuntu.txt
- name: Display build info
working-directory: ${{ env.CPYTHON_BUILDDIR }}
run: make pythoninfo
on:
workflow_call:
inputs:
+ os:
+ description: OS to run on
+ required: true
+ type: string
arch:
description: CPU architecture
required: true
jobs:
build:
- name: >-
- build${{ inputs.arch != 'arm64' && ' and test' || '' }}
- (${{ inputs.arch }})
- runs-on: windows-latest
+ name: 'build and test (${{ inputs.arch }})'
+ runs-on: ${{ inputs.os }}
timeout-minutes: 60
steps:
- uses: actions/checkout@v4
run: echo "::add-matcher::.github/problem-matchers/msvc.json"
- name: Build CPython
run: >-
- .\PCbuild\build.bat
+ .\\PCbuild\\build.bat
-e -d -v
-p ${{ inputs.arch }}
${{ fromJSON(inputs.free-threading) && '--disable-gil' || '' }}
- - name: Display build info
+ - name: Display build info # FIXME(diegorusso): remove the `if`
if: inputs.arch != 'arm64'
- run: .\python.bat -m test.pythoninfo
- - name: Tests
+ run: .\\python.bat -m test.pythoninfo
+ - name: Tests # FIXME(diegorusso): remove the `if`
if: inputs.arch != 'arm64'
run: >-
- .\PCbuild\rt.bat
+ .\\PCbuild\\rt.bat
-p ${{ inputs.arch }}
-d -q --fast-ci
${{ fromJSON(inputs.free-threading) && '--disable-gil' || '' }}
- id: check-github-workflows
- repo: https://github.com/rhysd/actionlint
- rev: v1.7.3
+ rev: v1.7.4
hooks:
- id: actionlint
- args: [
- -ignore=1st argument of function call is not assignable,
- -ignore=SC2(015|038|086|091|097|098|129|155),
- ]
- repo: https://github.com/sphinx-contrib/sphinx-lint
rev: v1.0.0