Skip to content

Commit

Permalink
Merge pull request #2 from virtualcell/python-module
Browse files Browse the repository at this point in the history
pyvcell_fvsolver Python module
  • Loading branch information
jcschaff authored Jun 3, 2024
2 parents e148342 + 2a3160a commit e4584b9
Show file tree
Hide file tree
Showing 39 changed files with 1,007 additions and 506 deletions.
4 changes: 4 additions & 0 deletions .github/workflows/cd.yml
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,7 @@ jobs:
-G Ninja \
-DCMAKE_C_COMPILER=/opt/homebrew/opt/llvm/bin/clang \
-DCMAKE_CXX_COMPILER=/opt/homebrew/opt/llvm/bin/clang++ \
-DOPTION_TARGET_PYTHON_BINDING=OFF \
-DOPTION_MINGW=ON \
-DOPTION_TARGET_MESSAGING=OFF \
-DOPTION_TARGET_SMOLDYN_SOLVER=OFF \
Expand All @@ -128,6 +129,7 @@ jobs:
-G Ninja \
-DCMAKE_C_COMPILER=/usr/local/opt/llvm/bin/clang \
-DCMAKE_CXX_COMPILER=/usr/local/opt/llvm/bin/clang++ \
-DOPTION_TARGET_PYTHON_BINDING=OFF \
-DOPTION_MINGW=ON \
-DOPTION_TARGET_MESSAGING=OFF \
-DOPTION_TARGET_SMOLDYN_SOLVER=OFF \
Expand Down Expand Up @@ -205,6 +207,7 @@ jobs:
-G Ninja \
-DCMAKE_C_COMPILER="clang.exe" \
-DCMAKE_CXX_COMPILER="clang++.exe" \
-DOPTION_TARGET_PYTHON_BINDING=OFF \
-DOPTION_TARGET_MESSAGING=OFF \
-DOPTION_TARGET_SMOLDYN_SOLVER=OFF \
-DOPTION_TARGET_FV_SOLVER=ON \
Expand Down Expand Up @@ -253,6 +256,7 @@ jobs:
cmake \
-G Ninja \
-DOPTION_TARGET_PYTHON_BINDING=OFF \
-DOPTION_TARGET_MESSAGING=OFF \
-DOPTION_TARGET_SMOLDYN_SOLVER=OFF \
-DOPTION_TARGET_FV_SOLVER=ON \
Expand Down
50 changes: 50 additions & 0 deletions .github/workflows/conda.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
name: Conda

on:
workflow_dispatch:
# push:
# branches:
# - master
# pull_request:

jobs:
build:
strategy:
fail-fast: false
matrix:
platform: [ubuntu-latest, macos-13, macos-14, windows-latest]
python-version: ["3.8", "3.11"]

runs-on: ${{ matrix.platform }}

# The setup-miniconda action needs this to activate miniconda
defaults:
run:
shell: "bash -l {0}"

steps:
- uses: actions/checkout@v4

- name: Get conda
uses: conda-incubator/[email protected]
with:
python-version: ${{ matrix.python-version }}
channels: conda-forge

- name: Prepare
run: conda install conda-build conda-verify pytest

- name: Build
run: conda build conda.recipe

- name: Install
run: conda install -c ${CONDA_PREFIX}/conda-bld/ .

- name: Test
run: pytest tests

- name: Setup tmate session
uses: mxschmitt/action-tmate@v3
if: ${{ failure() }}
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
60 changes: 60 additions & 0 deletions .github/workflows/enscripten.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
name: WASM

on:
workflow_dispatch:
# pull_request:
# branches:
# - master

concurrency:
group: "${{ github.workflow }}-${{ github.ref }}"
cancel-in-progress: true

jobs:
build-wasm-emscripten:
name: Pyodide
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
with:
submodules: true
fetch-depth: 0

- uses: actions/setup-python@v5
with:
python-version: "3.11"

- name: Install pyodide-build
run: pip install pyodide-build==0.23.4

- name: Compute emsdk version
id: compute-emsdk-version
run: |
pyodide xbuildenv install --download
EMSCRIPTEN_VERSION=$(pyodide config get emscripten_version)
echo "emsdk-version=$EMSCRIPTEN_VERSION" >> $GITHUB_OUTPUT
- uses: mymindstorm/setup-emsdk@v14
with:
version: ${{ steps.compute-emsdk-version.outputs.emsdk-version }}
actions-cache-folder: emsdk-cache

# A future version of pyodide may switch to -fwasm-exceptions
- name: Build
run: CFLAGS=-fexceptions LDFLAGS=-fexceptions pyodide build

- uses: actions/upload-artifact@v4
with:
path: dist/*.whl

- uses: actions/setup-node@v4
with:
node-version: 18

- name: Set up Pyodide virtual environment
run: |
pyodide venv .venv-pyodide
.venv-pyodide/bin/pip install $(echo -n dist/*.whl)[test]
- name: Test
run: .venv-pyodide/bin/pytest
143 changes: 143 additions & 0 deletions .github/workflows/pip.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,143 @@
name: "Pip"

on:
workflow_dispatch:
pull_request:
push:
branches:
- master

jobs:
build:
name: Build with Pip
runs-on: ${{ matrix.platform }}
strategy:
fail-fast: false
matrix:
platform: [windows-latest, macos-13, macos-14, ubuntu-latest]
# python-version: ["3.7", "3.12", "pypy-3.9"]
python-version: ["3.12"]

steps:
- uses: actions/checkout@v4

- name: Install Intel MacOS dependencies
if: matrix.platform == 'macos-13'
shell: bash
run: |
brew install boost
brew install hdf5
brew install ninja
brew install llvm
echo 'export PATH="/usr/local/opt/llvm/bin:$PATH"' >> /Users/runner/.bash_profile
source /Users/runner/.bash_profile
gcc --version
gfortran --version
cmake --version
brew info boost
brew info hdf5
- name: Install ARM MacOS dependencies
if: matrix.platform == 'macos-14'
shell: bash
run: |
brew install boost
brew install hdf5
brew install ninja
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
gcc --version
gfortran --version
cmake --version
brew info boost
brew info hdf5
- name: Install Windows Dependencies
if: matrix.platform == 'windows-latest'
uses: msys2/setup-msys2@v2
with:
msystem: CLANG64
update: true
install: >
zip
git
mingw-w64-clang-x86_64-curl
mingw-w64-clang-x86_64-toolchain
mingw-w64-clang-x86_64-flang
mingw-w64-clang-x86_64-cmake
mingw-w64-clang-x86_64-boost
mingw-w64-clang-x86_64-hdf5
mingw-w64-clang-x86_64-libzip
mingw-w64-clang-x86_64-zlib
mingw-w64-clang-x86_64-libaec
mingw-w64-clang-x86_64-python-pip-tools
- name: Install Linux Dependencies
if: matrix.platform == 'ubuntu-latest'
run: |
sudo apt-get update
sudo apt-get install -y libboost-all-dev
sudo apt-get install -y libhdf5-dev
sudo apt-get install -y ninja-build
gcc --version
gfortran --version
cmake --version
dpkg -s libboost-all-dev
dpkg -s libhdf5-dev
- uses: actions/setup-python@v5
with:
python-version: "${{ matrix.python-version }}"

- name: Build and install macos-13
run: |
PATH="/usr/local/opt/llvm/bin:$PATH"
pip install --verbose .
if: matrix.platform == 'macos-13'

- name: Build and install macos-14
run: |
PATH="/opt/homebrew/opt/llvm/bin:$PATH"
pip install --verbose .
if: matrix.platform == 'macos-14'

- name: Build and install windows-latest
shell: msys2 {0}
run: |
pip install --verbose -Ccmake.define.CMAKE_C_COMPILER="clang.exe" -Ccmake.define.CMAKE_CXX_COMPILER="clang++.exe" .
if: matrix.platform == 'windows-latest'

- name: Build and install ubuntu-latest
run: |
platform=linux
pip install --verbose .
if: matrix.platform == 'ubuntu-latest'

- name: Test not windows
run: |
pip install pytest
pytest
if: matrix.platform != 'windows-latest'

- name: Test on windows
shell: msys2 {0}
run: |
pip install pytest
pytest
if: matrix.platform == 'windows-latest'

- name: Setup tmate session
uses: mxschmitt/action-tmate@v3
if: ${{ failure() }}
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
Loading

0 comments on commit e4584b9

Please sign in to comment.