diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 5a2b01049..1b8a7582e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -365,74 +365,75 @@ jobs: path: dist build: - name: build on ${{ matrix.platform || matrix.os }} (${{ matrix.target }} - ${{ matrix.manylinux || 'auto' }}) + name: build on ${{ matrix.os }} (${{ matrix.target }} - ${{ matrix.manylinux || 'auto' }}) # only run on push to main and on release if: startsWith(github.ref, 'refs/tags/') || github.ref == 'refs/heads/main' || contains(github.event.pull_request.labels.*.name, 'Full Build') strategy: fail-fast: false matrix: - os: [ubuntu, macos, windows] - target: [x86_64, aarch64] + os: [linux, macos, windows] manylinux: [auto] include: - - os: ubuntu - platform: linux - - os: windows - ls: dir - interpreter: 3.7 3.8 3.9 3.10 3.11 3.12 pypy3.8 pypy3.9 pypy3.10 + # standard runners on macos x86_64 (which we don't PGO optimize) + - os: linux + runs-on: ubuntu-latest - os: windows ls: dir - target: i686 - python-architecture: x86 - interpreter: 3.7 3.8 3.9 3.10 3.11 3.12 - - os: windows - ls: dir - target: aarch64 - interpreter: 3.11 3.12 + runs-on: windows-latest - os: macos - target: aarch64 - interpreter: 3.7 3.8 3.9 pypy3.8 pypy3.9 pypy3.10 - - os: ubuntu - platform: linux + runs-on: macos-latest + + # manylinux for various platforms, plus x86_64 pypy + - os: linux target: i686 - - os: ubuntu - platform: linux + - os: linux target: aarch64 - - - os: ubuntu - platform: linux + - os: linux target: armv7 interpreter: 3.7 3.8 3.9 3.10 3.11 3.12 + - os: linux + target: ppc64le + interpreter: 3.7 3.8 3.9 3.10 3.11 3.12 + - os: linux + target: s390x + interpreter: 3.7 3.8 3.9 3.10 3.11 3.12 + - os: linux + target: x86_64 + interpreter: pypy3.7 pypy3.8 pypy3.9 pypy3.10 + # musllinux - - os: ubuntu - platform: linux + - os: linux target: x86_64 manylinux: musllinux_1_1 - - os: ubuntu - platform: linux + - os: linux target: aarch64 manylinux: musllinux_1_1 - - os: ubuntu - platform: linux - target: ppc64le - interpreter: 3.7 3.8 3.9 3.10 3.11 3.12 - - os: ubuntu - platform: linux - target: s390x - interpreter: 3.7 3.8 3.9 3.10 3.11 3.12 - exclude: - # Optimized PGO builds for x86_64 manylinux and windows follow a different matrix, - # maybe in future maturin-action can support this automatically - - os: ubuntu + + # macos; + # all versions x86_64 + # arm pypy and older pythons which can't be run on the arm hardware for PGO + - os: macos target: x86_64 - manylinux: auto + - os: macos + target: aarch64 + interpreter: 3.7 3.8 3.9 pypy3.8 pypy3.9 pypy3.10 + + # windows; + # x86_64 pypy builds are not PGO optimized + # i686 not supported by pypy + # aarch64 only 3.11 and up, also not PGO optimized - os: windows target: x86_64 - # Windows on arm64 only supports Python 3.11+ + interpreter: pypy3.8 pypy3.9 pypy3.10 + - os: windows + target: i686 + python-architecture: x86 + interpreter: 3.7 3.8 3.9 3.10 3.11 3.12 - os: windows target: aarch64 + interpreter: 3.11 3.12 - runs-on: ${{ matrix.os }}-latest + runs-on: ${{ (matrix.os == 'linux' && 'ubuntu') || matrix.os }}-latest steps: - uses: actions/checkout@v4 @@ -473,20 +474,27 @@ jobs: strategy: fail-fast: false matrix: - os: [ubuntu-latest, windows-latest, macos-latest-xlarge] + os: [linux, windows, macos] interpreter: ['3.7', '3.8', '3.9', '3.10', '3.11', '3.12'] include: - - os: windows-latest + # standard runners with override for macos arm + - os: linux + runs-on: ubuntu-latest + - os: windows ls: dir + runs-on: windows-latest + - os: macos + runs-on: macos-latest-xlarge exclude: - - os: macos-latest-xlarge + # macos arm only supported from 3.10 and up + - os: macos interpreter: '3.7' - - os: macos-latest-xlarge + - os: macos interpreter: '3.8' - - os: macos-latest-xlarge + - os: macos interpreter: '3.9' - runs-on: ${{ matrix.os }} + runs-on: ${{ matrix.runs-on }} steps: - uses: actions/checkout@v4