diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 6a6d4a2..22718dd 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -56,13 +56,21 @@ jobs: make install make doc - # GitHub provides only x86_64 runners, so we cannot test on arm architecture test: runs-on: ${{ matrix.os }} strategy: matrix: python-version: ["3.10", "3.11", "3.12", "3.13", "3.14", "3.14t"] - os: ["ubuntu-latest", "macos-14", "windows-latest"] + os: + - "ubuntu-latest" + - "ubuntu-24.04-arm" + - "macos-14" + - "windows-latest" + - "windows-11-arm" + exclude: + # Python ARM builds for windows are only available from Python 3.11 + - os: windows-11-arm + python-version: 3.10 steps: - uses: actions/checkout@v6 - name: Set up Python @@ -88,17 +96,17 @@ jobs: python-version: ["3.10", "3.14t"] os: ["ubuntu-latest", "macos-14", "windows-latest"] architecture: [x86-64, aarch64] - exclude: - - os: windows-latest - architecture: aarch64 steps: - uses: actions/checkout@v6 - uses: dtolnay/rust-toolchain@stable - name: Set Rust target id: target - if: matrix.os != 'windows-latest' run: | - TARGET=${{ matrix.os == 'macos-14' && (matrix.architecture == 'aarch64' && 'aarch64-apple-darwin' || 'x86_64-apple-darwin') || (matrix.architecture == 'aarch64' && 'aarch64-unknown-linux-gnu' || null) }} + TARGET=${{ + (matrix.os == 'macos-14' && (matrix.architecture == 'aarch64' && 'aarch64-apple-darwin' || 'x86_64-apple-darwin')) + || (matrix.os == 'ubuntu-latest' && (matrix.architecture == 'aarch64' && 'aarch64-unknown-linux-gnu' || 'x86_64-unknown-linux-gnu')) + || (matrix.os == 'windows-latest' && (matrix.architecture == 'aarch64' && 'aarch64-pc-windows-msvc' || 'x86_64-pc-windows-msvc')) + }} echo "target=$TARGET" >> $GITHUB_OUTPUT - name: Set up Python uses: actions/setup-python@v6 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 800de25..1338447 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -60,8 +60,8 @@ jobs: runs-on: windows-latest strategy: matrix: - # amd64 only for windows, as no arm64 runners are available python-version: ["3.10", "3.14t"] + architecture: [x86-64, aarch64] steps: - uses: actions/checkout@v6 - uses: dtolnay/rust-toolchain@stable @@ -73,10 +73,11 @@ jobs: with: command: build args: "--release -o dist -i python${{ matrix.python-version }}" + target: ${{ matrix.architecture == 'aarch64' && 'aarch64-pc-windows-msvc' || 'x86_64-pc-windows-msvc' }} - name: Upload wheels uses: actions/upload-artifact@v6 with: - name: "wheels-windows-python-${{ matrix.python-version }}" + name: "wheels-windows-python-${{ matrix.python-version }}-${{ matrix.architecture }}" path: dist sdist: