Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

pyvcell_fvsolver Python module #2

Merged
merged 29 commits into from
Jun 3, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
f27063d
add submodule for pybind11
jcschaff May 28, 2024
7862673
rename CMake project to fvsolver
jcschaff May 28, 2024
3c1431c
start pyvcell-fvsolver with trivial pybind11 example, adds two numbers
jcschaff May 28, 2024
0dbfb49
const char* and nullptr for C++ FV solver
jcschaff Jun 2, 2024
66f5bd6
create pyvcell_fvsolver Python module using pybind11 and vcell library
jcschaff Jun 2, 2024
ce3ed83
static libzip build, FiniteVolume_x64 and Python don't need libzip.dylib
jcschaff Jun 2, 2024
5d191f6
separate scikit-build-core build using 'pip install ./pyvcell_fvsolver'
jcschaff Jun 2, 2024
56d97b5
fix prior nullptr upgrade for messaging
jcschaff Jun 2, 2024
41b9feb
update Dockerfile for HPC builds
jcschaff Jun 2, 2024
9463a31
try to fix windows build problem, include windows.h earlier
jcschaff Jun 2, 2024
aa023e1
define ZIP_STATIC for windows
jcschaff Jun 2, 2024
b2feff6
WIP: python build CI/CD actions
jcschaff Jun 2, 2024
bde32e3
reconcile whitespace and dead code in CMakeLists.txt before merge
jcschaff Jun 2, 2024
73a7fc0
one /CMakeLists.txt with with OPTION_TARGET_PYTHON_BINDING [true]
jcschaff Jun 2, 2024
640e6ba
don't test on Docker, install platform deps for wheels
jcschaff Jun 2, 2024
a4b2972
install platform dependencies for pip action
jcschaff Jun 2, 2024
85ffaee
fix path to pybind11
jcschaff Jun 2, 2024
c92a29f
debug CI/CD matrix
jcschaff Jun 2, 2024
de5e537
install pytest for pip action
jcschaff Jun 2, 2024
6f54c3b
fix pytest
jcschaff Jun 2, 2024
f593bb4
enforce mingw LLVM toolchain for pip build on windows
jcschaff Jun 2, 2024
8a66055
update platform LLVM paths for pip and wheel actions
jcschaff Jun 3, 2024
a7dd35d
WIP: pip and wheels config
jcschaff Jun 3, 2024
bb2acd5
debug with tmate
jcschaff Jun 3, 2024
8a9bd46
try dynamic binding for hdf5 for python/linux
jcschaff Jun 3, 2024
0191ae1
fix windows type conflicts in SolverMain
jcschaff Jun 3, 2024
08fc3de
fix windows pip test with correct shell
jcschaff Jun 3, 2024
ffe7fd0
don't trigger conda/wheel actions automatically and add tmate debug
jcschaff Jun 3, 2024
2a3160a
updated README.md
jcschaff Jun 3, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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/setup-miniconda@v3.0.4
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