Move to pyproject.toml; CI python 3.12. #137
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: build | |
on: [push, pull_request] | |
jobs: | |
build: | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu-20.04, macos-11, windows-2019] | |
python-version: ["3.8", "3.9", "3.10", "3.11"] | |
runs-on: ${{ matrix.os }} | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: actions/setup-python@v4 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Build & install | |
shell: bash | |
run: | | |
set -x && | |
export DISTUTILS_DEBUG=1 && | |
python -mpip install --upgrade pip && | |
case "$(python -c 'import sys; print(sys.platform)')" in | |
linux) | |
python -mpip install --upgrade setuptools_scm && | |
sudo PY_VERS='${{ matrix.python-version }}' tools/build-manylinux-wheel.sh && | |
sudo apt update && | |
sudo apt install ghostscript inkscape cm-super dvipng \ | |
texlive-latex-{base,recommended,extra} texlive-fonts-recommended | |
;; | |
darwin) | |
# Don't install inkscape: building it from source is a bit silly. | |
export HOMEBREW_NO_INSTALL_CLEANUP=1 && | |
brew install cairo pkg-config && | |
MACOSX_DEPLOYMENT_TARGET=10.13 PKG_CONFIG_PATH=/usr/local/opt/libffi/lib/pkgconfig \ | |
tools/build-macos-wheel.sh && | |
brew install ghostscript | |
;; | |
win32) | |
# Don't install inkscape (see note in run-mpl-test-suite.py). | |
# Skip known-bad version of numpy. | |
python tools/build-windows-wheel.py && | |
choco install --no-progress ghostscript && | |
pip install 'numpy!=1.19.4' | |
;; | |
*) | |
exit 1 | |
;; | |
esac && | |
python -mpip install dist/*.whl && | |
python tools/ensure-mpl-test-data.py && | |
# pytest-{instafail,timeout} useful for hanging tests. | |
python -mpip install pytest pytest-instafail pytest-timeout | |
- name: Test | |
shell: bash | |
run: | | |
set -x && | |
python -mpip list && | |
python -c 'import mplcairo as m, pprint as p; p.pprint(m.get_versions())' && | |
# Skip tests triggering to-be-investigated fatal error on Windows :( | |
( | |
if [[ "$(python -c 'import sys; print(sys.platform)')" != win32 ]]; then | |
./run-mpl-test-suite.py --tolerance=50 --instafail --timeout=300 --capture=no --verbose | |
fi | |
) && | |
PYTHONFAULTHANDLER=1 PYTHONIOENCODING=utf-8 ./run-examples.py | |
- uses: actions/upload-artifact@v3 | |
with: | |
name: wheels | |
path: dist/ | |
if: ${{ always() }} | |
- uses: actions/upload-artifact@v3 | |
with: | |
name: result_images-${{ matrix.os }}-py${{ matrix.python-version }} | |
path: result_images/ | |
if: ${{ failure() }} |