Skip to content

Individual os changes #13

Individual os changes

Individual os changes #13

Workflow file for this run

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 nala
sudo nala 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

Check failure on line 63 in .github/workflows/build_wheels.yml

View workflow run for this annotation

GitHub Actions / .github/workflows/build_wheels.yml

Invalid workflow file

You have an error in your yaml syntax on line 63
- 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)
uses: pypa/cibuildwheel@v2.23.2
if: matrix.os == 'ubuntu-latest' || matrix.os == 'ubuntu-24.04-arm'
env:
LIBZIP_INCLUDE_DIR: '/usr/include/zip.h'
CIBW_BUILD: ${{ matrix.python_version }}
# 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