From f671cb4dbb84e5e575757bdf9c053ee797863eae Mon Sep 17 00:00:00 2001 From: Elvis Pranskevichus Date: Sat, 7 Aug 2021 10:46:53 -0700 Subject: Use cibuildwheel to build wheels (#70) The cibuildwheel infra seems to be mature enough, so use it for the wheel-building step instead of the homegrown setup. This gives us 32-bit and ARM wheels for free. Fixes: #44 Fixes: #63 --- .github/workflows/release.yml | 83 +++++++++++++++++-------------------------- 1 file changed, 32 insertions(+), 51 deletions(-) (limited to '.github/workflows/release.yml') diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 7e2c51b..fb948c2 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -35,7 +35,7 @@ jobs: mkdir -p dist/ echo "${VERSION}" > dist/VERSION - - uses: actions/upload-artifact@v1 + - uses: actions/upload-artifact@v2 with: name: dist path: dist/ @@ -50,34 +50,30 @@ jobs: fetch-depth: 50 submodules: true - - name: Set up Python 3.7 - uses: actions/setup-python@v2 - with: - python-version: 3.7 + - uses: actions/setup-python@v2 - name: Build source distribution run: | - pip install -U setuptools wheel pip + python -m pip install -U setuptools wheel pip python setup.py sdist - - uses: actions/upload-artifact@v1 + - uses: actions/upload-artifact@v2 with: name: dist - path: dist/ + path: dist/*.tar.* build-wheels: needs: validate-release-request runs-on: ${{ matrix.os }} strategy: matrix: - python-version: [3.5, 3.6, 3.7, 3.8, 3.9] - os: [ubuntu-16.04, macos-latest, windows-latest] - exclude: - # Python 3.5 is unable to properly - # find the recent VS tooling - # https://bugs.python.org/issue30389 - - os: windows-latest - python-version: 3.5 + os: [ubuntu-latest, macos-latest, windows-latest] + cibw_arch: [auto] + include: + - os: ubuntu-latest + cibw_arch: aarch64 + - os: macos-latest + cibw_arch: universal2 steps: - uses: actions/checkout@v2 @@ -85,45 +81,30 @@ jobs: fetch-depth: 50 submodules: true - - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v2 + - name: Set up QEMU + if: matrix.os == 'ubuntu-latest' && matrix.cibw_arch == 'aarch64' + uses: docker/setup-qemu-action@v1 with: - python-version: ${{ matrix.python-version }} - - - name: Install Python Deps - run: | - python -m pip install --upgrade setuptools pip wheel + platforms: arm64 - - name: Test - run: | - make debug && make test - - - name: Build Wheels (linux) - if: startsWith(matrix.os, 'ubuntu') - uses: docker://quay.io/pypa/manylinux1_x86_64 + - uses: pypa/cibuildwheel@v2.0.1 env: - PYTHON_VERSION: ${{ matrix.python-version }} - with: - entrypoint: /github/workspace/.github/workflows/build-manylinux-wheels.sh - - - name: Build Wheels (non-linux) - if: "!startsWith(matrix.os, 'ubuntu')" - run: | - make clean - python setup.py bdist_wheel - - - name: Test Wheels - shell: bash - if: | - !contains(github.event.pull_request.labels.*.name, 'skip wheel tests') - run: | - pip install --pre immutables -f "file:///${GITHUB_WORKSPACE}/dist" - make -C "${GITHUB_WORKSPACE}" testinstalled - - - uses: actions/upload-artifact@v1 + CIBW_BUILD_VERBOSITY: 1 + CIBW_BUILD: "cp36-* cp37-* cp38-* cp39-*" + CIBW_ARCHS: ${{ matrix.cibw_arch }} + CIBW_MANYLINUX_X86_64_IMAGE: quay.io/pypa/manylinux1_x86_64 + CIBW_MANYLINUX_I686_IMAGE: quay.io/pypa/manylinux1_i686 + CIBW_SKIP: "pp*" + CIBW_TEST_EXTRAS: "test" + CIBW_TEST_COMMAND: "cd .. && python {project}/tests/__init__.py" + CIBW_TEST_COMMAND_WINDOWS: "cd .. && python {project}\\tests\\__init__.py" + CIBW_TEST_SKIP: "*universal2:arm64" + CIBW_ENVIRONMENT: "IMMU_SKIP_MYPY_TESTS=1" + + - uses: actions/upload-artifact@v2 with: name: dist - path: dist/ + path: wheelhouse/*.whl publish: needs: [build-sdist, build-wheels] @@ -135,7 +116,7 @@ jobs: fetch-depth: 5 submodules: false - - uses: actions/download-artifact@v1 + - uses: actions/download-artifact@v2 with: name: dist path: dist/ -- cgit v1.2.3