Release 1.2.0 #5
Workflow file for this run
This file contains hidden or 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: Build | |
on: | |
push: | |
pull_request: | |
release: | |
types: | |
- published | |
jobs: | |
build_sdist: | |
name: Build source distribution | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: 'true' | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: "3.12" | |
- name: Install dependencies | |
run: | | |
python -m pip install --upgrade pip | |
pip install Cython==3.0.12 | |
# The cythonized files allow installation from the sdist without cython | |
- name: Generate cython | |
run: | | |
chmod +x ./src/cydifflib/generate.sh | |
./src/cydifflib/generate.sh | |
- name: Build sdist | |
run: | | |
git apply ./tools/sdist.patch | |
pip3 install build | |
python3 -m build --sdist | |
# test whether tarball contains all files required for compiling | |
pip3 install dist/cydifflib-*.tar.gz | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: artifact-sdist | |
path: dist/*.tar.gz | |
build_wheels_windows: | |
name: Build wheel on ${{ matrix.os }}/auto/${{matrix.python_tag}} | |
needs: [build_sdist] | |
runs-on: windows-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
arch: [auto32, auto64, ARM64] | |
env: | |
CIBW_ARCHS: ${{matrix.arch}} | |
CIBW_TEST_SKIP: "*-win32" | |
CIBW_TEST_REQUIRES: pytest | |
CIBW_TEST_COMMAND: pytest {package}/tests | |
CIBW_BUILD_VERBOSITY: 3 | |
CIBW_PROJECT_REQUIRES_PYTHON: ">=3.9" | |
steps: | |
- uses: actions/download-artifact@v4 | |
with: | |
name: artifact-sdist | |
path: dist | |
- name: Copy wheel | |
run: copy dist/*.tar.gz cydifflib.tar.gz | |
- uses: actions/setup-python@v5 | |
- name: Build wheels | |
uses: pypa/cibuildwheel@v2.23.2 | |
with: | |
package-dir: cydifflib.tar.gz | |
output-dir: wheelhouse | |
- name: Upload wheels | |
uses: actions/upload-artifact@v4 | |
with: | |
name: artifact-${{ github.job }}-${{ strategy.job-index }} | |
path: ./wheelhouse/*.whl | |
build_wheels_macos: | |
name: Build wheel on ${{ matrix.os }}/auto/${{matrix.python_tag}} | |
needs: [build_sdist] | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [macos-13, macos-14] | |
env: | |
CIBW_ARCHS: native | |
CIBW_TEST_SKIP: "pp*-macosx_*" | |
CIBW_TEST_REQUIRES: pytest | |
CIBW_TEST_COMMAND: pytest {package}/tests | |
CIBW_BUILD_VERBOSITY: 3 | |
CIBW_PROJECT_REQUIRES_PYTHON: ">=3.9" | |
steps: | |
- uses: actions/download-artifact@v4 | |
with: | |
name: artifact-sdist | |
path: dist | |
- uses: actions/setup-python@v5 | |
- name: Copy wheel | |
run: cp dist/*.tar.gz cydifflib.tar.gz | |
- name: Build wheels | |
uses: pypa/cibuildwheel@v2.23.2 | |
with: | |
package-dir: cydifflib.tar.gz | |
output-dir: wheelhouse | |
- name: Upload wheels | |
uses: actions/upload-artifact@v4 | |
with: | |
name: artifact-${{ github.job }}-${{ strategy.job-index }} | |
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: ["cp39-*", "cp310-*", "cp311-*", "cp312-*", "cp313-*", "pp39-*", "pp310-*", "pp311-*"] | |
exclude: | |
# PyPy builds not available for these platforms | |
- arch: ppc64le | |
python_tag: "pp39-*" | |
- arch: ppc64le | |
python_tag: "pp310-*" | |
- arch: ppc64le | |
python_tag: "pp311-*" | |
- arch: s390x | |
python_tag: "pp39-*" | |
- arch: s390x | |
python_tag: "pp310-*" | |
- arch: s390x | |
python_tag: "pp311-*" | |
env: | |
CIBW_ARCHS_LINUX: ${{matrix.arch}} | |
CIBW_BUILD: ${{matrix.python_tag}} | |
CIBW_TEST_SKIP: "{*_{aarch64,ppc64le,s390x},*musllinux_*}" | |
CIBW_TEST_REQUIRES: pytest | |
CIBW_TEST_COMMAND: pytest {package}/tests | |
CIBW_BUILD_VERBOSITY: 3 | |
steps: | |
- uses: actions/download-artifact@v4 | |
with: | |
name: artifact-sdist | |
path: dist | |
- uses: actions/setup-python@v5 | |
- name: Copy wheel | |
run: cp dist/*.tar.gz cydifflib.tar.gz | |
- uses: docker/setup-qemu-action@v3 | |
name: Set up QEMU | |
- name: Build wheel | |
uses: pypa/cibuildwheel@v2.23.2 | |
with: | |
package-dir: cydifflib.tar.gz | |
output-dir: wheelhouse | |
- name: Upload wheels | |
uses: actions/upload-artifact@v4 | |
with: | |
name: artifact-${{ github.job }}-${{ strategy.job-index }} | |
path: ./wheelhouse/*.whl | |
build_wheels_pyodide: | |
name: Build wheels on ubuntu-latest/pyodide | |
needs: [build_sdist] | |
runs-on: ubuntu-latest | |
env: | |
CIBW_TEST_REQUIRES: pytest hypothesis | |
CIBW_TEST_COMMAND: pytest {package}/tests | |
CIBW_PLATFORM: pyodide | |
CIBW_BUILD_VERBOSITY: 3 | |
steps: | |
- uses: actions/download-artifact@v4 | |
with: | |
name: artifact-sdist | |
path: dist | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: "3.12" | |
- name: Copy wheel | |
run: cp dist/*.tar.gz cydifflib.tar.gz | |
- name: Build wheel | |
uses: pypa/cibuildwheel@v2.23.2 | |
with: | |
package-dir: cydifflib.tar.gz | |
output-dir: wheelhouse | |
- name: Upload wheels | |
uses: actions/upload-artifact@v4 | |
with: | |
name: pyodide-wheel | |
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 | |
environment: pypi-release | |
permissions: | |
id-token: write | |
steps: | |
- uses: actions/download-artifact@v4 | |
with: | |
path: dist | |
pattern: artifact-* | |
merge-multiple: true | |
- uses: pypa/gh-action-pypi-publish@v1.12.4 |