Skip to content

Commit

Permalink
Use cibuildwheel to build wheels.
Browse files Browse the repository at this point in the history
This will enable the building of macOS ARM64 compatible wheels, fixing ultrajson#456 (and
also lets us delete lots of code!!!).
  • Loading branch information
bwoodsend committed Nov 28, 2021
1 parent 1dda667 commit d2d4adc
Show file tree
Hide file tree
Showing 4 changed files with 47 additions and 157 deletions.
58 changes: 27 additions & 31 deletions .github/workflows/deploy-wheels-linux.yml
Expand Up @@ -7,45 +7,32 @@ on:
release:
types:
- published
pull_request:
paths:
- ".github/workflows/deploy-wheels-linux.yml"

jobs:
build:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
wheel: [
"manylinux2014_aarch64",
"manylinux2014_i686",
"manylinux2014_x86_64",
"musllinux_1_1_x86_64",
]
python-version: ["pypy3", "3.6", "3.7", "3.8", "3.9", "3.10-dev"]
include:
# Add version-tag variable to existing jobs
- { python-version: "pypy3", version-tag: "pp37-pypy37_pp73" }
- { python-version: "3.6", version-tag: "cp36-cp36m" }
- { python-version: "3.7", version-tag: "cp37-cp37m" }
- { python-version: "3.8", version-tag: "cp38-cp38" }
- { python-version: "3.9", version-tag: "cp39-cp39" }
- { python-version: "3.10-dev", version-tag: "cp310-cp310" }
exclude:
# No PyPy3 on musllinux
- { python-version: "pypy3", wheel: "musllinux_1_1_x86_64" }
architecture: ["aarch64"]
python-version:
- pp37
- pp38
- cp36
- cp37
- cp38
- cp39
- cp310

steps:
- uses: actions/checkout@v2
- run: |
git fetch --prune --unshallow
- uses: actions/setup-python@v2

- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v2
with:
python-version: ${{ matrix.python-version }}

- name: Install dependencies
run: |
python -m pip install --upgrade -q pip pytest wheel setuptools twine
- name: Install cibuildwheel
run: python -m pip install cibuildwheel==2.3.0

# https://github.com/docker/setup-qemu-action
- name: Set up QEMU
Expand All @@ -55,9 +42,18 @@ jobs:
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1

- name: Build ${{ matrix.wheel }} wheels
run: |
docker run -v `pwd`:/io quay.io/pypa/${{ matrix.wheel }} /io/scripts/build-manylinux-wheels.sh ${{ matrix.version-tag }}
- name: Build wheels
run: python -m cibuildwheel --output-dir dist
# Options are supplied via environment variables:
env:
# Build only the currently selected Linux architecture (so we can
# parallelise for speed).
CIBW_ARCHS_LINUX: "${{ matrix.architecture }}"
# Likewise, select only one Python version per job to speed this up.
CIBW_BUILD: "${{ matrix.python-version }}-*"
# Run the test suite after each build.
CIBW_TEST_REQUIRES: "pytest"
CIBW_TEST_COMMAND: pytest {package}/tests

- name: Upload as build artifacts
uses: actions/upload-artifact@v2
Expand Down
39 changes: 20 additions & 19 deletions .github/workflows/deploy-wheels-windows-macos.yml
Expand Up @@ -7,37 +7,38 @@ on:
release:
types:
- published
pull_request:
paths:
- ".github/workflows/deploy-wheels-windows-macos.yml"

jobs:
build:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [windows-latest, macOS-latest]
python-version: ["3.6", "3.7", "3.8", "3.9", "3.10-dev"]
os: [windows-latest, macOS-latest, ubuntu-latest]

steps:
- uses: actions/checkout@v2
- run: |
git fetch --prune --unshallow
- uses: actions/setup-python@v2

- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v2
with:
python-version: ${{ matrix.python-version }}

- name: Install dependencies
run: |
python -m pip install --upgrade -q pip pytest wheel setuptools twine
- name: Install cibuildwheel
run: python -m pip install cibuildwheel==2.3.0

- name: Test with pytest
run: |
python -m pip install .
pytest
- name: Build wheel
run: python setup.py -q bdist_wheel
- name: Build wheels
run: python -m cibuildwheel --output-dir dist
# Options are supplied via environment variables:
env:
# Build separate wheels for macOS's different architectures.
CIBW_ARCHS_MACOS: "x86_64 arm64"
# Build only on Linux architectures that don't need qemu emulation.
CIBW_ARCHS_LINUX: "x86_64 i686"
# Don't build with prerelease Python versions.
CIBW_PROJECT_REQUIRES_PYTHON: ">=3.6,<3.11"
# Run the test suite after each build.
CIBW_TEST_REQUIRES: "pytest"
CIBW_TEST_COMMAND: pytest {package}/tests

- name: Upload as build artifacts
uses: actions/upload-artifact@v2
Expand Down
55 changes: 0 additions & 55 deletions scripts/build-manylinux-wheels.sh

This file was deleted.

52 changes: 0 additions & 52 deletions scripts/build-manylinux.py

This file was deleted.

0 comments on commit d2d4adc

Please sign in to comment.