Skip to content

Merge pull request #23 from fonttools/py313 #55

Merge pull request #23 from fonttools/py313

Merge pull request #23 from fonttools/py313 #55

Workflow file for this run

name: Build + Deploy
on:
push:
branches: [master]
tags: ["v*.*.*"]
pull_request:
branches: [master]
release:
types:
- published
env:
CIBW_TEST_EXTRAS: test
CIBW_TEST_COMMAND: pytest {package}/tests -v
jobs:
build_sdist:
name: Build Source Distribution
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
submodules: true
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.x"
- name: Install dependencies
run: pip install --upgrade setuptools twine
- name: Build sdist
run: python setup.py sdist
- name: Check metadata
run: twine check dist/*.tar.gz
- uses: actions/upload-artifact@v4
with:
path: dist/*.tar.gz
name: sdist
build_wheels:
name: ${{ matrix.type }} ${{ matrix.arch }} on ${{ matrix.os }}
runs-on: ${{ matrix.os }}
defaults:
run:
shell: bash
strategy:
fail-fast: false
matrix:
# macos-13 runners are still x86_64, macos-14 (latest) are arm64; we want to build
# the x86_64 wheel on/for x86_64 macs
os: [macos-13, windows-latest]
arch: [auto64]
build: ["*"]
include:
# the manylinux1 docker images only contain python3.8 and 3.9
- os: ubuntu-latest
type: manylinux1
arch: auto
build: "cp{38,39}-*"
CIBW_MANYLINUX_X86_64_IMAGE: manylinux1
CIBW_MANYLINUX_I686_IMAGE: manylinux1
# the manylinux2010 image also contains python 3.10 and pypy3.8
- os: ubuntu-latest
arch: auto
type: manylinux2010
build: "pp{38}-* cp310-*"
CIBW_MANYLINUX_X86_64_IMAGE: manylinux2010
CIBW_MANYLINUX_I686_IMAGE: manylinux2010
# the manylinux2014 image also contains python 3.11, 3.12, 3.13 and pypy3.9 and 3.10
- os: ubuntu-latest
arch: auto
type: manylinux2014
build: "pp39-* pp310-* cp311-* cp312-* cp313-*"
CIBW_MANYLINUX_X86_64_IMAGE: manylinux2014
CIBW_MANYLINUX_I686_IMAGE: manylinux2014
- os: macos-latest
arch: universal2
build: "*"
- os: windows-latest
arch: auto32
build: "*"
steps:
- uses: actions/checkout@v4
with:
submodules: recursive
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.x"
- name: Install dependencies
run: pip install cibuildwheel
- name: Build Wheels
run: python -m cibuildwheel --output-dir wheelhouse .
env:
CIBW_BUILD: ${{ matrix.build }}
CIBW_MANYLINUX_I686_IMAGE: ${{ matrix.CIBW_MANYLINUX_I686_IMAGE }}
CIBW_MANYLINUX_X86_64_IMAGE: ${{ matrix.CIBW_MANYLINUX_X86_64_IMAGE }}
CIBW_ARCHS: ${{ matrix.arch }}
- uses: actions/upload-artifact@v4
with:
path: wheelhouse/*.whl
name: wheels-${{ matrix.os }}-${{ matrix.arch }}-${{ matrix.type }}
build_arch_wheels:
name: py${{ matrix.python }} on ${{ matrix.arch }}
runs-on: ubuntu-latest
strategy:
matrix:
# aarch64 uses qemu so it's slow, build each py version in parallel jobs
python: [38, 39, 310, 311, 312, 313]
arch: [aarch64]
steps:
- uses: actions/checkout@v4
with:
submodules: true
- uses: docker/[email protected]
with:
platforms: all
- name: Install dependencies
run: pip install cibuildwheel
- name: Build Wheels
run: python -m cibuildwheel --output-dir wheelhouse .
env:
CIBW_BUILD: cp${{ matrix.python }}-*
CIBW_ARCHS: ${{ matrix.arch }}
- uses: actions/upload-artifact@v4
with:
path: wheelhouse/*.whl
name: wheels-${{ matrix.arch }}-${{ matrix.python }}
deploy:
name: Upload if release
needs: [build_wheels, build_arch_wheels, build_sdist]
runs-on: ubuntu-latest
if: github.event_name == 'release' && github.event.action == 'published'
steps:
- uses: actions/download-artifact@v4
with:
path: dist
merge-multiple: true
- uses: pypa/[email protected]
with:
user: __token__
password: ${{ secrets.PYPI_PASSWORD }}