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 #456 (and
also lets us delete lots of code!!!).
  • Loading branch information
bwoodsend committed Nov 28, 2021
1 parent 6833495 commit 3ac5b9d
Show file tree
Hide file tree
Showing 5 changed files with 101 additions and 221 deletions.
89 changes: 0 additions & 89 deletions .github/workflows/deploy-wheels-linux.yml

This file was deleted.

@@ -1,12 +1,12 @@
name: Deploy Windows/macOS wheels
name: Deploy Windows/macOS/native Linux wheels

on:
push:
branches:
- main
pull_request:
paths:
- ".github/workflows/deploy-wheels-windows-macos.yml"
- ".github/workflows/deploy-wheels-native.yml"
release:
types:
- published
Expand All @@ -17,34 +17,29 @@ jobs:
strategy:
fail-fast: false
matrix:
os: [windows-latest, macos-latest]
python-version: ["3.6", "3.7", "3.8", "3.9", "3.10"]
architecture: [x64, x86]
exclude:
- {os: macos-latest, architecture: x86}
os: [windows-latest, macOS-latest, ubuntu-latest]

steps:
- uses: actions/checkout@v2
- run: |
git fetch --prune --unshallow
- 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 }}
architecture: ${{ matrix.architecture }}

- 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
81 changes: 81 additions & 0 deletions .github/workflows/deploy-wheels-qemu.yml
@@ -0,0 +1,81 @@
name: Deploy QEMU emulated Linux wheels

on:
push:
branches:
- main
pull_request:
paths:
- ".github/workflows/deploy-wheels-linux.yml"
- ".github/workflows/deploy-wheels-qemu.yml"
release:
types:
- published

jobs:
build:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
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: Install cibuildwheel
run: python -m pip install cibuildwheel==2.3.0

# https://github.com/docker/setup-qemu-action
- name: Set up QEMU
uses: docker/setup-qemu-action@v1

# https://github.com/docker/setup-buildx-action
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1

- 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
with:
name: wheels
path: dist/*.whl

- name: Publish package to PyPI
if: github.event.action == 'published'
env:
TWINE_USERNAME: __token__
TWINE_PASSWORD: ${{ secrets.pypi_password }}
run: twine upload --skip-existing dist/*.whl

- name: Publish package to TestPyPI
if: |
github.repository == 'ultrajson/ultrajson' &&
github.ref == 'refs/heads/main'
env:
TWINE_USERNAME: __token__
TWINE_PASSWORD: ${{ secrets.test_pypi_password }}
run: |
twine upload --repository-url https://test.pypi.org/legacy/ --skip-existing dist/*.whl
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 3ac5b9d

Please sign in to comment.