Release v1.1.0: Windows MSVC compatibility and Python CLI #2
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 Wheels | |
| on: | |
| push: | |
| tags: | |
| - 'v*' | |
| pull_request: | |
| paths: | |
| - 'pycchem/**' | |
| - '.github/workflows/wheels.yml' | |
| workflow_dispatch: | |
| jobs: | |
| build_wheels: | |
| name: Build wheels on ${{ matrix.os }} | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: [ubuntu-latest, macos-latest, macos-14, windows-latest] | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Set up Python | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: '3.11' | |
| - name: Install cibuildwheel | |
| run: python -m pip install cibuildwheel==2.16.5 | |
| - name: Install dependencies (Linux) | |
| if: runner.os == 'Linux' | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y libcairo2-dev libjpeg-dev zlib1g-dev libzstd-dev | |
| - name: Install dependencies (macOS) | |
| if: runner.os == 'macOS' | |
| run: | | |
| brew install cairo jpeg zstd pkg-config | |
| - name: Install dependencies (Windows) | |
| if: runner.os == 'Windows' | |
| run: | | |
| vcpkg install cairo libjpeg-turbo zstd zlib pthreads --triplet x64-windows | |
| - name: Build cchem library (Unix) | |
| if: runner.os != 'Windows' | |
| run: | | |
| mkdir -p build | |
| cd build | |
| cmake .. -DCMAKE_BUILD_TYPE=Release -DENABLE_NATIVE_ARCH=OFF | |
| make -j$(nproc 2>/dev/null || sysctl -n hw.ncpu) | |
| - name: Build cchem library (Windows) | |
| if: runner.os == 'Windows' | |
| run: | | |
| mkdir build | |
| cd build | |
| cmake .. -DCMAKE_BUILD_TYPE=Release -DENABLE_NATIVE_ARCH=OFF -DCMAKE_TOOLCHAIN_FILE="$env:VCPKG_INSTALLATION_ROOT/scripts/buildsystems/vcpkg.cmake" | |
| cmake --build . --config Release -j $env:NUMBER_OF_PROCESSORS | |
| - name: Build wheels | |
| run: python -m cibuildwheel --output-dir wheelhouse pycchem | |
| env: | |
| CIBW_BUILD: "cp39-* cp310-* cp311-* cp312-*" | |
| CIBW_SKIP: "*-musllinux_* *-win32 *_i686" | |
| CIBW_ARCHS_MACOS: "x86_64 arm64" | |
| CIBW_ARCHS_LINUX: "x86_64" | |
| CIBW_ARCHS_WINDOWS: "AMD64" | |
| CIBW_BEFORE_BUILD: "pip install cffi" | |
| CIBW_TEST_REQUIRES: "pytest" | |
| CIBW_TEST_COMMAND: "python -c \"import pycchem; print(pycchem.version())\"" | |
| - uses: actions/upload-artifact@v4 | |
| with: | |
| name: wheels-${{ matrix.os }} | |
| path: ./wheelhouse/*.whl | |
| build_sdist: | |
| name: Build source distribution | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Set up Python | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: '3.11' | |
| - name: Install dependencies | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y libcairo2-dev libjpeg-dev zlib1g-dev libzstd-dev | |
| - name: Build cchem library | |
| run: | | |
| mkdir -p build | |
| cd build | |
| cmake .. -DCMAKE_BUILD_TYPE=Release -DENABLE_NATIVE_ARCH=OFF | |
| make -j$(nproc) | |
| - name: Build sdist | |
| run: | | |
| cd pycchem | |
| pip install build | |
| python -m build --sdist | |
| - uses: actions/upload-artifact@v4 | |
| with: | |
| name: sdist | |
| path: pycchem/dist/*.tar.gz | |
| publish: | |
| name: Publish to PyPI | |
| needs: [build_wheels, build_sdist] | |
| runs-on: ubuntu-latest | |
| if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v') | |
| permissions: | |
| id-token: write | |
| steps: | |
| - uses: actions/download-artifact@v4 | |
| with: | |
| pattern: wheels-* | |
| path: dist | |
| merge-multiple: true | |
| - uses: actions/download-artifact@v4 | |
| with: | |
| name: sdist | |
| path: dist | |
| - name: Publish to PyPI | |
| uses: pypa/gh-action-pypi-publish@release/v1 | |
| with: | |
| packages-dir: dist/ |