Full Build #494
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: Full Build | |
on: | |
release: | |
types: | |
- published | |
workflow_dispatch: | |
jobs: | |
build_sdist: | |
name: Build source distribution | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
submodules: 'true' | |
- uses: actions/setup-python@v4 | |
with: | |
python-version: "3.11" | |
- name: Install dependencies | |
run: | | |
python -m pip install --upgrade pip | |
pip install pytest hypothesis pandas mypy rapidfuzz_capi Cython==3.0.2 | |
# The cythonized files allow installation from the sdist without cython | |
- name: Generate cython | |
run: | | |
chmod +x ./src/rapidfuzz/generate.sh | |
./src/rapidfuzz/generate.sh | |
- name: Build sdist | |
run: | | |
git apply ./tools/sdist.patch | |
pip install build | |
python -m build --sdist | |
# test whether tarball contains all files required for compiling | |
pip install dist/rapidfuzz-*.tar.gz -v | |
#- name: Test type stubs | |
# # prevent import from rapidfuzz | |
# working-directory: .github | |
# run: | | |
# python -m mypy.stubtest rapidfuzz --ignore-missing-stub | |
- name: Test with pytest and backtrace in case of SegFault | |
run: | | |
tools/seg_wrapper.sh pytest tests | |
- uses: actions/upload-artifact@v3 | |
with: | |
path: dist/*.tar.gz | |
build_wheels_windows: | |
name: Build wheel on windows-latest/${{matrix.arch}}/${{matrix.python_tag}} | |
needs: [build_sdist] | |
runs-on: windows-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
arch: [auto32, auto64, ARM64] | |
python_tag: ["cp37-*", "cp38-*", "cp39-*", "cp310-*", "cp311-*", "cp312-*", "pp37-*", "pp38-*", "pp39-*"] | |
exclude: | |
# PyPy only supports x86_64 on Windows | |
- arch: auto32 | |
python_tag: "pp37-*" | |
- arch: auto32 | |
python_tag: "pp38-*" | |
- arch: auto32 | |
python_tag: "pp39-*" | |
# ARM64 only supported only supported on cpython >= 3.9 | |
- arch: ARM64 | |
python_tag: "pp37-*" | |
- arch: ARM64 | |
python_tag: "pp38-*" | |
- arch: ARM64 | |
python_tag: "pp39-*" | |
- arch: ARM64 | |
python_tag: "cp37-*" | |
- arch: ARM64 | |
python_tag: "cp38-*" | |
env: | |
CIBW_BUILD: ${{matrix.python_tag}} | |
CIBW_ARCHS: ${{matrix.arch}} | |
CIBW_TEST_SKIP: "{*-win32,pp37-*}" | |
#CIBW_TEST_REQUIRES: pytest hypothesis pandas | |
CIBW_TEST_REQUIRES: pytest hypothesis | |
CIBW_TEST_COMMAND: pytest {package}/tests | |
CIBW_BUILD_VERBOSITY: 3 | |
steps: | |
- uses: actions/download-artifact@v3 | |
with: | |
name: artifact | |
path: dist | |
- name: Copy wheel | |
run: copy dist/*.tar.gz rapidfuzz.tar.gz | |
- uses: actions/setup-python@v4 | |
- name: Build wheels | |
uses: pypa/[email protected] | |
with: | |
package-dir: rapidfuzz.tar.gz | |
output-dir: wheelhouse | |
- name: Upload wheels | |
uses: actions/upload-artifact@v3 | |
with: | |
path: ./wheelhouse/*.whl | |
build_wheels_macos: | |
name: Build wheel on macos-latest/${{matrix.arch}}/${{matrix.python_tag}} | |
needs: [build_sdist] | |
runs-on: macos-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
arch: [x86_64, arm64, universal2] | |
python_tag: ["cp37-*", "cp38-*", "cp39-*", "cp310-*", "cp311-*", "cp312-*", "pp37-*", "pp38-*", "pp39-*"] | |
exclude: | |
# MacOS Arm only supported since Python 3.8 | |
- arch: arm64 | |
python_tag: "cp37-*" | |
- arch: universal2 | |
python_tag: "cp37-*" | |
# PyPy not supported on MacOS Arm | |
- arch: arm64 | |
python_tag: "pp37-*" | |
- arch: arm64 | |
python_tag: "pp38-*" | |
- arch: arm64 | |
python_tag: "pp39-*" | |
- arch: universal2 | |
python_tag: "pp37-*" | |
- arch: universal2 | |
python_tag: "pp38-*" | |
- arch: universal2 | |
python_tag: "pp39-*" | |
env: | |
CIBW_BUILD: ${{matrix.python_tag}} | |
CIBW_ARCHS: ${{matrix.arch}} | |
CIBW_TEST_SKIP: "{*-macosx_{arm64,universal2},pp*-macosx_*}" | |
#CIBW_TEST_REQUIRES: pytest hypothesis pandas | |
CIBW_TEST_REQUIRES: pytest hypothesis | |
CIBW_TEST_COMMAND: pytest {package}/tests | |
CIBW_BUILD_VERBOSITY: 3 | |
steps: | |
- uses: actions/download-artifact@v3 | |
with: | |
name: artifact | |
path: dist | |
- uses: actions/setup-python@v4 | |
- name: Copy wheel | |
run: cp dist/*.tar.gz rapidfuzz.tar.gz | |
- name: Build wheels | |
uses: pypa/[email protected] | |
with: | |
package-dir: rapidfuzz.tar.gz | |
output-dir: wheelhouse | |
- name: Upload wheels | |
uses: actions/upload-artifact@v3 | |
with: | |
path: ./wheelhouse/*.whl | |
build_wheels_linux: | |
name: Build wheels on ubuntu-latest/${{matrix.arch}}/${{matrix.python_tag}} | |
needs: [build_sdist] | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
arch: [auto, aarch64, ppc64le, s390x] | |
python_tag: ["cp37-*", "cp38-*", "cp39-*", "cp310-*", "cp311-*", "cp312-*", "pp37-*", "pp38-*", "pp39-*"] | |
exclude: | |
# PyPy builds not available for these platforms | |
- arch: ppc64le | |
python_tag: "pp37-*" | |
- arch: ppc64le | |
python_tag: "pp38-*" | |
- arch: ppc64le | |
python_tag: "pp39-*" | |
- arch: s390x | |
python_tag: "pp37-*" | |
- arch: s390x | |
python_tag: "pp38-*" | |
- arch: s390x | |
python_tag: "pp39-*" | |
env: | |
CIBW_ARCHS_LINUX: ${{matrix.arch}} | |
CIBW_BUILD: ${{matrix.python_tag}} | |
CIBW_TEST_SKIP: "{*_{aarch64,ppc64le,s390x,i686},*musllinux_*,pp38-*}" | |
#CIBW_TEST_REQUIRES: pytest hypothesis pandas | |
CIBW_TEST_REQUIRES: pytest hypothesis | |
CIBW_TEST_COMMAND: pytest {package}/tests | |
# CIBW_TEST_COMMAND: "{package}/tools/seg_wrapper.sh pytest {package}/tests" | |
CIBW_BUILD_VERBOSITY: 3 | |
steps: | |
- uses: actions/download-artifact@v3 | |
with: | |
name: artifact | |
path: dist | |
- uses: actions/setup-python@v4 | |
- name: Copy wheel | |
run: cp dist/*.tar.gz rapidfuzz.tar.gz | |
- uses: docker/setup-qemu-action@v2 | |
name: Set up QEMU | |
- name: Build wheel | |
uses: pypa/[email protected] | |
with: | |
package-dir: rapidfuzz.tar.gz | |
output-dir: wheelhouse | |
- name: Upload wheels | |
uses: actions/upload-artifact@v3 | |
with: | |
path: ./wheelhouse/*.whl | |
deploy-wheels: | |
if: github.event_name == 'release' && github.event.action == 'published' | |
needs: [build_wheels_windows, build_wheels_macos, build_wheels_linux, build_sdist] | |
name: deploy wheels to pypi | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/download-artifact@v3 | |
with: | |
name: artifact | |
path: dist | |
- uses: pypa/[email protected] | |
with: | |
user: __token__ | |
password: ${{ secrets.pypi_password }} |