Skip to content

Build wheels

Build wheels #587

Workflow file for this run

name: Build wheels
on:
workflow_dispatch:
inputs:
flavours:
description: 'If set, we build separate PyMuPDF and PyMuPDFb wheels.'
type: boolean
default: true
sdist:
type: boolean
default: true
wheels_linux_aarch64:
type: boolean
default: true
wheels_linux_auto:
type: boolean
default: true
wheels_linux_pyodide:
type: boolean
default: false
wheels_windows_auto:
type: boolean
default: true
wheels_macos_auto:
type: boolean
default: true
wheels_cps:
description: 'wheels_cps: sets $CIBW_BUILD, E.g. "cp310* cp311*".'
type: string
PYMUPDF_SETUP_MUPDF_BUILD:
description: 'Value for PYMUPDF_SETUP_MUPDF_BUILD, e.g.: git:--branch master https://github.com/ArtifexSoftware/mupdf.git'
type: string
default: '-'
#PYMUPDF_SETUP_MUPDF_BUILD_TYPE:
# description: 'Value for PYMUPDF_SETUP_MUPDF_BUILD, e.g. debug.'
# type: string
# default: '-'
# We can't currently have more than 10 inputs
PYMUPDF_SETUP_PY_LIMITED_API:
description: 'If not "0", we build a single wheel for each platform.'
type: string
default: ''
jobs:
build_sdist:
if: ${{ inputs.sdist }}
name: Build sdist
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Build sdist
env:
inputs_wheels_default: 0
inputs_sdist: 1
inputs_flavours: ${{inputs.flavours}}
inputs_PYMUPDF_SETUP_MUPDF_BUILD: ${{inputs.PYMUPDF_SETUP_MUPDF_BUILD}}
run:
python scripts/gh_release.py
- uses: actions/upload-artifact@v3
with:
path: dist/*.tar.gz
build_wheels:
#if: ${{ inputs.wheels }}
name: Build wheels on ${{ matrix.os }}
runs-on: ${{ matrix.os }}
strategy:
matrix:
# 2024-05-08: Need to specify macos-13/14 to get x86_64/arm64.
os: [ubuntu-latest, windows-2019, macos-13, macos-14]
# Avoid cancelling of all cibuildwheel runs after a single failure.
fail-fast: false
steps:
- uses: actions/checkout@v4
# Get Python 3.12 x32 and x64 on Windows. (As of 2023-10-12 these are not
# always available by default.)
#
- name: Install Python 3.12 x32 on Windows.
if: runner.os == 'Windows'
uses: actions/setup-python@v5
with:
python-version: '3.12'
architecture: x86
- name: Install Python 3.12 x64 on Windows.
if: runner.os == 'Windows'
uses: actions/setup-python@v5
with:
python-version: '3.12'
# Get Python for running cibuildwheel. This also ensures that 'python'
# works on MacOS, where it seems only 'python3' is available by default.
#
# Note that it seem to be important on MacOS not to specify a
# Python version here with `python-version: '3.12'` - this makes
# `python-config3` return settings for Python-3.12, instead of for
# whatever Python is being used by cibuildwheel.
#
- uses: actions/setup-python@v5
# On Linux, get qemu so we can build for aarch64.
#
- name: Set up QEMU
if: runner.os == 'Linux'
uses: docker/setup-qemu-action@v1
with:
platforms: all
- name: gh_release
# Doesn't seem to be a way to passing inputs.* on command
# line, so we set environment instead. E.g. see:
# https://github.com/orgs/community/discussions/27088
#
env:
inputs_flavours: ${{inputs.flavours}}
inputs_sdist: ${{inputs.sdist}}
inputs_wheels_linux_aarch64: ${{inputs.wheels_linux_aarch64}}
inputs_wheels_linux_auto: ${{inputs.wheels_linux_auto}}
inputs_wheels_linux_pyodide: ${{inputs.wheels_linux_pyodide}}
#inputs_wheels_macos_arm64: ${{inputs.wheels_macos_arm64}}
inputs_wheels_macos_auto: ${{inputs.wheels_macos_auto}}
inputs_wheels_windows_auto: ${{inputs.wheels_windows_auto}}
inputs_PYMUPDF_SETUP_MUPDF_BUILD: ${{inputs.PYMUPDF_SETUP_MUPDF_BUILD}}
#inputs_PYMUPDF_SETUP_MUPDF_BUILD_TYPE: ${{inputs.PYMUPDF_SETUP_MUPDF_BUILD_TYPE}}
inputs_wheels_cps: ${{inputs.wheels_cps}}
PYMUPDF_SETUP_PY_LIMITED_API: ${{inputs.PYMUPDF_SETUP_PY_LIMITED_API}}
run:
python scripts/gh_release.py
# Upload generated wheels, to be accessible from github Actions page.
#
- uses: actions/upload-artifact@v3
with:
path: ./wheelhouse/*.whl