Build and test wheels #19
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 test wheels | |
| on: | |
| workflow_dispatch: | |
| push: | |
| tags: | |
| - v* | |
| jobs: | |
| tests: | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| python-version: | |
| - 3.9 | |
| # - "3.10" | |
| - 3.11 | |
| # - 3.12 | |
| - 3.13 | |
| # - pypy-3.9 | |
| # - pypy-3.10 | |
| # - pypy-3.11 | |
| os: | |
| - ubuntu-latest | |
| - macos-latest | |
| - windows-latest | |
| exclude: | |
| - os: macos-latest | |
| python-version: 'pypy-3.9' | |
| - os: macos-latest | |
| python-version: 'pypy-3.10' | |
| - os: macos-latest | |
| python-version: 'pypy-3.11' | |
| runs-on: ${{ matrix.os }} | |
| name: ${{ matrix.os }} @ ${{ matrix.python-version }} | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Set up Python | |
| uses: actions/setup-python@v4 | |
| with: | |
| python-version: ${{ matrix.python-version }} | |
| # architecture: x64 | |
| - name: Linux install LZO | |
| if: runner.os == 'Linux' | |
| run: sudo apt install liblzo2-dev | |
| - name: macos install LZO | |
| if: runner.os == 'macOS' | |
| run: | | |
| echo "$RUNNER_OS uses included lzo source" | |
| echo PWD: `pwd` | |
| echo LS lzo | |
| ls -l lzo-2.10/ | |
| echo LS lzo include | |
| ls -l lzo-2.10/include/ | |
| cd lzo-2.10 | |
| ./configure --enable-shared --disable-dependency-tracking --prefix=`pwd` | |
| make | |
| make test &> test_results | |
| make install | |
| cd .. | |
| ls -l lzo-2.10/ | |
| find ./lzo-2.10/ -name "*lzo2*" | |
| - name: Add msbuild to PATH | |
| if: runner.os == 'Windows' | |
| uses: microsoft/[email protected] | |
| with: | |
| msbuild-architecture: x64 | |
| - name: Setup LZO Windows | |
| if: runner.os == 'Windows' | |
| run: | | |
| pwd | |
| cd lzo-2.10 | |
| mkdir build | |
| cd build | |
| cmake .. | |
| pwd | |
| - name: build LZO Windows | |
| if: runner.os == 'Windows' | |
| working-directory: .\lzo-2.10\build | |
| run: msbuild lzo_static_lib.vcxproj -p:Configuration=Release -p:Platform=x64 -p:OutDir=..\ | |
| - run: pip install -e ./ | |
| - run: pip install pytest build | |
| - run: pytest --doctest-modules tests/ | |
| - run: ls -l | |
| if: runner.os != 'Windows' | |
| - run: python -m build | |
| wheels: | |
| needs: [tests,] | |
| name: Build wheels on ${{ matrix.os }} for ${{ matrix.arch }} | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: [ubuntu-20.04, windows-2019, macos-12] | |
| arch: ["x86_64", "arm64"] | |
| include: | |
| - os: windows-2019 | |
| arch: win_amd64 | |
| - os: windows-2019 | |
| arch: win32 | |
| - os: ubuntu-20.04 | |
| arch: i686 | |
| - os: ubuntu-20.04 | |
| arch: aarch64 | |
| - os: ubuntu-20.04 | |
| arch: ppc64le | |
| - os: ubuntu-20.04 | |
| arch: s390x | |
| exclude: | |
| - os: windows-2019 | |
| arch: "x86_64" | |
| - os: windows-2019 | |
| arch: "arm64" | |
| steps: | |
| - name: Checkout repo | |
| uses: actions/checkout@v4 | |
| - name: Set up QEMU | |
| if: runner.os == 'Linux' | |
| uses: docker/setup-qemu-action@v2 | |
| with: | |
| platforms: all | |
| - name: Set up Python | |
| uses: actions/setup-python@v4 | |
| with: | |
| python-version: "3.11" | |
| # - name: Build and test wheels | |
| # uses: pypa/[email protected] | |
| # env: | |
| # CIBW_BUILD: "*${{ matrix.arch }}" | |
| - name: Install cibuildwheel | |
| run: python -m pip install cibuildwheel==3.0.0 | |
| - name: Build wheels | |
| run: python -m cibuildwheel --output-dir wheelhouse | |
| # to supply options, put them in 'env', like: | |
| env: | |
| CIBW_SOME_OPTION: "*${{ matrix.arch }}" | |
| - name: Upload wheels | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: ${{ runner.os }}-${{ matrix.arch }} | |
| path: wheelhouse/*.whl | |
| if-no-files-found: error | |
| sdist: | |
| needs: [tests,] | |
| name: Build sdist | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout repo | |
| uses: actions/checkout@v4 | |
| - name: Setup Python | |
| uses: actions/setup-python@v4 | |
| with: | |
| python-version: '3.11' | |
| - name: Build sdist | |
| run: | | |
| sudo apt install liblzo2-dev | |
| python -m pip install -U pip | |
| python -m pip install -U build | |
| python -m build -s | |
| - name: Test sdist | |
| run : python -m pip install dist/*.gz | |
| - name: Upload sdist | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: sdist | |
| path: dist/* | |
| if-no-files-found: error | |
| publish: | |
| name: Publish builds on PyPI | |
| runs-on: ubuntu-latest | |
| needs: [sdist, wheels] | |
| if: ${{ always() && (needs.sdist.result == 'success' || needs.wheels.result == 'success') }} | |
| environment: | |
| name: release | |
| url: https://test.pypi.org/p/python-lzo | |
| permissions: | |
| id-token: write | |
| steps: | |
| - name: Download builds | |
| uses: actions/[email protected] | |
| with: | |
| path: dist | |
| - name: Organise | |
| working-directory: dist | |
| run: | | |
| mv **/*.whl . | |
| mv **/*.gz . | |
| find . -type d -delete | |
| - name: Display structure of downloaded files | |
| run: ls -R | |
| - name: Publish package distributions to TestPyPI | |
| uses: pypa/gh-action-pypi-publish@release/v1 | |
| with: | |
| print-hash: true | |
| repository-url: https://test.pypi.org/legacy/ |