Sped up Smoldyn suface and panel lookup with new c-safe Hashtable
#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 Wheels" | |
| on: | |
| workflow_dispatch: | |
| pull_request: | |
| push: | |
| branches: | |
| - master | |
| release: | |
| types: | |
| - published | |
| jobs: | |
| build_wheels: | |
| name: Build Python Wheels on ${{ matrix.os }} | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| matrix: | |
| os: [ubuntu-latest, ubuntu-24.04-arm, windows-latest, macos-13, macos-14] | |
| python_version: ["cp39-*", "cp310-*", "cp311-*", "cp312-*", "cp313-*"] | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| with: | |
| submodules: true | |
| - name: Install Ubuntu Dependencies | |
| if: matrix.os == 'ubuntu-latest' || matrix.os == 'ubuntu-24.04-arm' | |
| run: | | |
| sudo apt update | |
| sudo apt install -y gfortran cmake ninja-build libboost-all-dev libzip-dev libhdf5-dev libbz2-dev libssl-dev liblzma-dev | |
| - name: Install Intel MacOS Dependencies | |
| if: matrix.os == 'macos-13' | |
| shell: bash | |
| run: | | |
| brew install boost | |
| brew install hdf5 | |
| brew install libzip | |
| brew install ninja | |
| brew install libaec | |
| brew install llvm | |
| echo 'export PATH="/usr/local/opt/llvm/bin:$PATH"' >> /Users/runner/.bash_profile | |
| source /Users/runner/.bash_profile | |
| ln -s $(which gfortran-14) /usr/local/bin/gfortran | |
| - name: Install ARM MacOS dependencies | |
| if: matrix.os == 'macos-14' | |
| shell: bash | |
| run: | | |
| brew install boost | |
| brew install hdf5 | |
| brew install libzip | |
| brew install ninja | |
| brew install libaec | |
| brew install llvm | |
| echo 'export PATH="/opt/homebrew/opt/llvm/bin:$PATH"' >> /Users/runner/.bash_profile | |
| ln -s /opt/homebrew/bin/gfortran-14 /usr/local/bin/gfortran | |
| - name: Install Windows Dependencies | |
| if: matrix.os == 'windows-latest' | |
| run: | | |
| choco install cmake --installargs 'ADD_CMAKE_TO_PATH=System' | |
| choco install ninja | |
| choco install msys2 | |
| C:\tools\msys64\usr\bin\bash -lc "pacman -Sy --noconfirm \ | |
| mingw-w64-clang-x86_64-cmake \ | |
| mingw-w64-clang-x86_64-ninja \ | |
| mingw-w64-clang-x86_64-toolchain \ | |
| mingw-w64-clang-x86_64-boost \ | |
| mingw-w64-clang-x86_64-hdf5 \ | |
| mingw-w64-clang-x86_64-zlib \ | |
| mingw-w64-clang-x86_64-libaec" | |
| echo "C:\tools\msys64\mingw64\bin" | Out-File -Append -Encoding ascii $env:GITHUB_PATH | |
| echo "C:\tools\msys64\clang64\bin" | Out-File -Append -Encoding ascii $env:GITHUB_PATH | |
| echo "C:\tools\msys64\clang64\lib" | Out-File -Append -Encoding ascii $env:GITHUB_PATH | |
| echo "C:\tools\msys64\clang64\include" | Out-File -Append -Encoding ascii $env:GITHUB_PATH | |
| - name: Build Wheels (Windows) | |
| uses: pypa/cibuildwheel@v2.23.2 | |
| if: matrix.os == 'windows-latest' | |
| env: | |
| CIBW_BUILD: ${{ matrix.python_version }} | |
| CIBW_BEFORE_BUILD: "pip install cmake ninja" | |
| CIBW_ENVIRONMENT: > | |
| CC=clang | |
| CXX=clang++ | |
| CMAKE_GENERATOR=Ninja | |
| # with: | |
| # package-dir: . | |
| # output-dir: wheelhouse | |
| # config-file: "{package}/pyproject.toml" | |
| - name: Build Wheels (MacOS<x86_64>) | |
| uses: pypa/cibuildwheel@v2.23.2 | |
| if: matrix.os == 'macos-13' | |
| env: | |
| CIBW_BUILD: ${{ matrix.python_version }} | |
| CIBW_ENVIRONMENT: > | |
| FC=/usr/local/bin/gfortran | |
| # with: | |
| # package-dir: . | |
| # output-dir: wheelhouse | |
| # config-file: "{package}/pyproject.toml" | |
| - name: Build Wheels (MacOS<ARM>) | |
| uses: pypa/cibuildwheel@v2.23.2 | |
| if: matrix.os == 'macos-14' | |
| env: | |
| MACOSX_DEPLOYMENT_TARGET: 14.0 | |
| CIBW_BUILD: ${{ matrix.python_version }} | |
| CIBW_ENVIRONMENT: > | |
| FC=/opt/homebrew/bin/gfortran-14 | |
| # with: | |
| # package-dir: . | |
| # output-dir: wheelhouse | |
| # config-file: "{package}/pyproject.toml" | |
| - name: Build Wheels (Linux<ARM>) | |
| uses: pypa/cibuildwheel@v2.23.2 | |
| if: matrix.os == 'ubuntu-24.04-arm' | |
| env: | |
| LIBZIP_INCLUDE_DIR: '/usr/include' | |
| LIBZIP_LIBRARY: '/usr/lib/aarch64-linux-gnu/libzip.so' | |
| CIBW_BUILD_COMMAND: "cmake -B build -S . -DENABLE_MY_FEATURE=ON -DLIBZIP_INCLUDE_DIR=/usr/include -DLIBZIP_LIBRARY=/usr/lib/aarch64-linux-gnu/libzip.so && cmake --build build --config Release" | |
| CIBW_BUILD: ${{ matrix.python_version }} | |
| CIBW_BEFORE_BUILD: "pip install h5py numpy cmake ninja" | |
| # with: | |
| # package-dir: . | |
| # output-dir: wheelhouse | |
| # config-file: "{package}/pyproject.toml" | |
| - name: Build Wheels (Linux<x86_64>) | |
| uses: pypa/cibuildwheel@v2.23.2 | |
| if: matrix.os == 'ubuntu-latest' | |
| env: | |
| LIBZIP_INCLUDE_DIR: '/usr/include' | |
| LIBZIP_LIBRARY: '/usr/lib/x86_64-linux-gnu/libzip.so' | |
| CIBW_BUILD_COMMAND: "cmake -B build -S . -DENABLE_MY_FEATURE=ON -DLIBZIP_INCLUDE_DIR=/usr/include -DLIBZIP_LIBRARY=/usr/lib/x86_64-linux-gnu/libzip.so && cmake --build build --config Release" | |
| CIBW_BUILD: ${{ matrix.python_version }} | |
| CIBW_BEFORE_BUILD: "pip install h5py numpy cmake ninja" | |
| # with: | |
| # package-dir: . | |
| # output-dir: wheelhouse | |
| # config-file: "{package}/pyproject.toml" | |
| - uses: actions/upload-artifact@v4 | |
| with: | |
| name: pyvcell-fv-${{ matrix.os }}-${{ matrix.python_version }}-cibw-wheels | |
| path: ./wheelhouse/*.whl | |
| - name: Setup tmate session for PyPI upload failure | |
| uses: mxschmitt/action-tmate@v3 | |
| if: ${{ failure() }} | |
| with: | |
| limit-access-to-actor: true |