Fix Windows wheel version by moving swig into cibuildwheel #143
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 and upload to PyPI | |
| on: | |
| push: | |
| release: | |
| types: | |
| - published | |
| jobs: | |
| build_wheels: | |
| name: Build wheels for cp${{ matrix.python }}-${{ matrix.platform_id }} | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| # Windows | |
| - {os: windows-2022, python: 310, platform_id: win_amd64} | |
| - {os: windows-2022, python: 311, platform_id: win_amd64} | |
| - {os: windows-2022, python: 312, platform_id: win_amd64} | |
| - {os: windows-2022, python: 313, platform_id: win_amd64} | |
| - {os: windows-2022, python: 314, platform_id: win_amd64} | |
| # Linux | |
| - {os: ubuntu-latest, python: 310, platform_id: manylinux_x86_64, manylinux_image: manylinux_2_28} | |
| - {os: ubuntu-latest, python: 311, platform_id: manylinux_x86_64, manylinux_image: manylinux_2_28} | |
| - {os: ubuntu-latest, python: 312, platform_id: manylinux_x86_64, manylinux_image: manylinux_2_28} | |
| - {os: ubuntu-latest, python: 313, platform_id: manylinux_x86_64, manylinux_image: manylinux_2_28} | |
| - {os: ubuntu-latest, python: 314, platform_id: manylinux_x86_64, manylinux_image: manylinux_2_28} | |
| # macOS x86_64 | |
| - {os: macos-latest, python: 310, platform_id: macosx_x86_64} | |
| - {os: macos-latest, python: 311, platform_id: macosx_x86_64} | |
| - {os: macos-latest, python: 312, platform_id: macosx_x86_64} | |
| - {os: macos-latest, python: 313, platform_id: macosx_x86_64} | |
| - {os: macos-latest, python: 314, platform_id: macosx_x86_64} | |
| # macOS arm64 | |
| - {os: macos-latest, python: 310, platform_id: macosx_arm64} | |
| - {os: macos-latest, python: 311, platform_id: macosx_arm64} | |
| - {os: macos-latest, python: 312, platform_id: macosx_arm64} | |
| - {os: macos-latest, python: 313, platform_id: macosx_arm64} | |
| - {os: macos-latest, python: 314, platform_id: macosx_arm64} | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Get history and tags for SCM versioning to work | |
| run: | | |
| git fetch --prune --unshallow | |
| git fetch --depth=1 origin +refs/tags/*:refs/tags/* | |
| - uses: actions/setup-python@v6 | |
| name: Install Python | |
| with: | |
| python-version: '3.12' | |
| - name: Install cibuildwheel | |
| run: pip install cibuildwheel==3.4.0 | |
| - name: Prepare for Windows | |
| if: runner.os == 'Windows' | |
| run: | | |
| Invoke-WebRequest -OutFile kytea-win-x64.zip https://github.com/chezou/kytea/releases/download/0.4.7-3/kytea-win-x64.zip && | |
| 7z x kytea-win-x64.zip -okytea && | |
| cp -r kytea\include include && | |
| cp kytea\lib\libkytea.lib lib\kytea\ && | |
| Invoke-WebRequest -OutFile model.bin.gz https://github.com/neubig/kytea/raw/master/data/model.bin.gz && | |
| 7z x model.bin.gz && | |
| ren jp-0.4.7-5.mod model.bin | |
| - name: Build wheels | |
| if: runner.os != 'macOS' | |
| env: | |
| CIBW_BUILD: cp${{ matrix.python }}-${{ matrix.platform_id }} | |
| CIBW_ARCHS: all | |
| CIBW_MANYLINUX_X86_64_IMAGE: ${{ matrix.manylinux_image }} | |
| CIBW_BUILD_VERBOSITY: 3 | |
| CIBW_BEFORE_ALL_LINUX: bash {project}/.github/workflows/linux-before-all.sh | |
| CIBW_BEFORE_BUILD_WINDOWS: swig -Wall -c++ -python -shadow -Iinclude lib\kytea\mykytea.i | |
| CIBW_TEST_COMMAND: python {project}/.github/workflows/test-wheel.py | |
| CIBW_TEST_COMMAND_WINDOWS: python {project}/.github/workflows/test-wheel.py --model {project}/model.bin | |
| run: python -m cibuildwheel --output-dir wheelhouse | |
| - name: Build wheels if macOS | |
| if: runner.os == 'macOS' | |
| env: | |
| CIBW_BUILD: cp${{ matrix.python }}-${{ matrix.platform_id }} | |
| CIBW_REPAIR_WHEEL_COMMAND_MACOS: > | |
| delocate-listdeps {wheel} && | |
| delocate-wheel --require-archs {delocate_archs} -w {dest_dir} -v {wheel} | |
| CIBW_PLATFORM: macos | |
| CIBW_BUILD_VERBOSITY: 3 | |
| CIBW_TEST_COMMAND: python {project}/.github/workflows/test-wheel.py | |
| run: .github/workflows/macos-build.sh | |
| - uses: actions/upload-artifact@v7 | |
| with: | |
| name: artifact-${{ matrix.python }}-${{ matrix.platform_id }} | |
| path: ./wheelhouse/*.whl | |
| build_sdist: | |
| name: Build source distribution | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Get history and tags for SCM versioning to work | |
| run: | | |
| git fetch --prune --unshallow | |
| git fetch --depth=1 origin +refs/tags/*:refs/tags/* | |
| - uses: actions/setup-python@v6 | |
| name: Install Python | |
| with: | |
| python-version: '3.12' | |
| - name: Build sdist | |
| run: pip install setuptools_scm && python setup.py sdist | |
| - uses: actions/upload-artifact@v7 | |
| with: | |
| name: artifact-source | |
| path: dist/*.tar.gz | |
| upload_pypi: | |
| needs: [build_wheels, build_sdist] | |
| runs-on: ubuntu-latest | |
| environment: release | |
| permissions: | |
| id-token: write | |
| if: github.event_name == 'release' && github.event.action == 'published' | |
| steps: | |
| - uses: actions/download-artifact@v8 | |
| with: | |
| pattern: artifact-* | |
| merge-multiple: true | |
| path: dist | |
| - uses: pypa/gh-action-pypi-publish@release/v1 | |
| with: | |
| skip-existing: true |