Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
43 commits
Select commit Hold shift + click to select a range
3fd8e80
Added linked list functionality
CodeByDrescher Feb 26, 2025
a9a5057
Visibility fixes
CodeByDrescher Feb 26, 2025
e1eb237
Implemented Vectors, Linked List, and Hashtables
CodeByDrescher Mar 11, 2025
566b7e3
Added hashing to surfaces and panels, replacing expensive `stringfind…
CodeByDrescher Mar 13, 2025
efb4767
Adding gtests (and tweaks to make better)
CodeByDrescher Mar 14, 2025
331a826
Upgraded testing to have better separation and to use a configuration…
CodeByDrescher Mar 19, 2025
12b3258
Edited test to be platform independent using pattern matching
CodeByDrescher Mar 20, 2025
046ecb7
Added necessary option to build tests in CI/CD
CodeByDrescher Mar 20, 2025
96aa389
Undoing Changes to libzippp
CodeByDrescher Mar 20, 2025
a5f7c42
Adding cmake standard to main cmake file
CodeByDrescher Mar 20, 2025
5d8be86
adding missing include
CodeByDrescher Mar 20, 2025
1806e3a
installing python dependencies
CodeByDrescher Mar 20, 2025
d35d9d3
fix syntax error
CodeByDrescher Mar 20, 2025
2464007
Attempt to work around macos-14 python limitations
CodeByDrescher Mar 20, 2025
675acb1
Fixing windows python install
CodeByDrescher Mar 20, 2025
4934e61
fixing macos-14 python install
CodeByDrescher Mar 20, 2025
c2e44fd
Enabled Smoldyn building for all OS
CodeByDrescher Mar 21, 2025
519c874
Updating .gitignore
CodeByDrescher Mar 21, 2025
475b086
Updating Pybinding version
CodeByDrescher Mar 21, 2025
34074af
Revert "Updating Pybinding version"
CodeByDrescher Mar 21, 2025
ee90701
Enabling test of docker container
CodeByDrescher Mar 24, 2025
a5904fb
Fixing dependencies
CodeByDrescher Mar 24, 2025
e34f093
Fixing incorrect licenses
CodeByDrescher Mar 24, 2025
cecfc07
License Clarification, and correctly separating code
CodeByDrescher Mar 24, 2025
932c1e3
Memory change and debug symbols added for valgrind
CodeByDrescher Mar 26, 2025
36076b8
Fixed lack of initalization
CodeByDrescher Mar 26, 2025
64ab22e
Fixing bad-allocated memory in main of FV solver
CodeByDrescher Mar 27, 2025
ec90c56
Rewriting log-deletion code
CodeByDrescher Mar 28, 2025
1843ce2
More Memory cleanup
CodeByDrescher Mar 28, 2025
dcf59bd
Added Smoldyn Smoke test, and corresponding discovered NPE Fault
CodeByDrescher Mar 28, 2025
a972477
Allowed for implicit vcg discovery
CodeByDrescher Mar 28, 2025
60c9d62
Updated git ignore
CodeByDrescher Mar 28, 2025
ba63421
Correcting tmate options
CodeByDrescher Mar 28, 2025
6ddada9
Removing Debug Symbols
CodeByDrescher Mar 28, 2025
d6ca746
Limit pushing to tagged, published versions
CodeByDrescher Mar 28, 2025
d66163a
Attempting to limit auditwheel to version when it allowed non x86_64-…
CodeByDrescher Apr 1, 2025
08a4ce1
Allowing upgrade of minimum cmake version (deprecation update)
CodeByDrescher Apr 1, 2025
dbc7c41
Using proper flag to disable isa check
CodeByDrescher Apr 1, 2025
b97e3ff
Attempt to build windows wheels
CodeByDrescher Apr 8, 2025
7d06531
Explicitly building windows pythons from archives
CodeByDrescher Apr 8, 2025
5718ca5
bump version to 0.1.1 for PyPI, try windows wheels for py 3.12
jcschaff Apr 11, 2025
d7a1bd2
update version test for 0.1.1
jcschaff Apr 11, 2025
2606693
disable windows wheels for now.
jcschaff Apr 11, 2025
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
53 changes: 43 additions & 10 deletions .github/workflows/cd.yml
Original file line number Diff line number Diff line change
Expand Up @@ -41,14 +41,24 @@ jobs:
with:
images: "${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}"

- name: Build and push Docker image
- name: Build and Push Docker image
uses: docker/build-push-action@v5
if: github.event_name == 'release' && github.event.action == 'published'
with:
context: .
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}

- name: Only Build Docker image
uses: docker/build-push-action@v5
if: github.event_name != 'release' || github.event.action != 'published'
with:
context: .
push: false
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}

native-build:
name:
native-build-${{ matrix.platform }}
Expand Down Expand Up @@ -80,16 +90,19 @@ jobs:
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

python3 -m pip install h5py numpy

gcc --version
gfortran --version
cmake --version
brew info boost
brew info hdf5

- name: Install ARM MacOS dependencies
- name: Install ARM MacOS dependencies Part 1
if: matrix.platform == 'macos-14'
shell: bash

run: |
brew install boost
brew install hdf5
Expand All @@ -107,6 +120,11 @@ jobs:
brew info boost
brew info hdf5

- name: Install ARM MacOS dependencies Part 2
if: matrix.platform == 'macos-14'
run: |
/opt/homebrew/bin/python3 -m pip install h5py --break-system-packages

- name: Build Macos ARM
if: matrix.platform == 'macos-14'
run: |
Expand All @@ -117,17 +135,19 @@ jobs:
cd build

export PATH="/opt/homebrew/opt/llvm/bin:$PATH"


# General Build
cmake \
-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 \
-DOPTION_TARGET_SMOLDYN_SOLVER=ON \
-DOPTION_TARGET_FV_SOLVER=ON \
-DOPTION_TARGET_DOCS=ON \
-DOPTION_TARGET_TESTS=ON \
-B . -S ..

ninja
Expand All @@ -150,9 +170,10 @@ jobs:
-DOPTION_TARGET_PYTHON_BINDING=OFF \
-DOPTION_MINGW=ON \
-DOPTION_TARGET_MESSAGING=OFF \
-DOPTION_TARGET_SMOLDYN_SOLVER=OFF \
-DOPTION_TARGET_SMOLDYN_SOLVER=ON \
-DOPTION_TARGET_FV_SOLVER=ON \
-DOPTION_TARGET_DOCS=ON \
-DOPTION_TARGET_TESTS=ON \
-B . -S ..

ninja
Expand Down Expand Up @@ -185,15 +206,18 @@ jobs:
# limit-access-to-actor: false


- name: Install Windows Dependencies
- name: Install Windows Dependencies #Part 1
if: matrix.platform == 'windows-latest'
uses: msys2/setup-msys2@v2
with:
msystem: CLANG64
update: true
install: >
python3
python-pip
zip
git
mingw-w64-clang-x86_64-python-h5py
mingw-w64-clang-x86_64-curl
mingw-w64-clang-x86_64-toolchain
mingw-w64-clang-x86_64-flang
Expand All @@ -204,6 +228,12 @@ jobs:
mingw-w64-clang-x86_64-zlib
mingw-w64-clang-x86_64-libaec

# - name: Install Windows Dependencies Part 2
# if: matrix.platform == 'windows-latest'
# shell: msys2 {0}
# run: |
# pip install h5py --break-system-packages

# - name: Setup tmate session
# uses: mxschmitt/action-tmate@v3
# with:
Expand All @@ -227,9 +257,10 @@ jobs:
-DCMAKE_CXX_COMPILER="clang++.exe" \
-DOPTION_TARGET_PYTHON_BINDING=OFF \
-DOPTION_TARGET_MESSAGING=OFF \
-DOPTION_TARGET_SMOLDYN_SOLVER=OFF \
-DOPTION_TARGET_SMOLDYN_SOLVER=ON \
-DOPTION_TARGET_FV_SOLVER=ON \
-DOPTION_TARGET_DOCS=OFF \
-DOPTION_TARGET_TESTS=ON \
-B . -S ..

ninja -j 1
Expand All @@ -256,7 +287,8 @@ jobs:
if: matrix.platform == 'ubuntu-latest'
run: |
sudo apt-get update
sudo apt-get install -y libboost-all-dev libhdf5-dev libzip-dev libbz2-dev ninja-build
sudo apt-get install -y python3-pip libboost-all-dev libhdf5-dev libzip-dev libbz2-dev ninja-build
python3 -m pip install h5py numpy

gcc --version
gfortran --version
Expand All @@ -277,9 +309,10 @@ jobs:
-G Ninja \
-DOPTION_TARGET_PYTHON_BINDING=OFF \
-DOPTION_TARGET_MESSAGING=OFF \
-DOPTION_TARGET_SMOLDYN_SOLVER=OFF \
-DOPTION_TARGET_SMOLDYN_SOLVER=ON \
-DOPTION_TARGET_FV_SOLVER=ON \
-DOPTION_TARGET_DOCS=ON \
-DOPTION_TARGET_TESTS=ON \
-B . -S ..

ninja
Expand Down Expand Up @@ -372,5 +405,5 @@ jobs:
if: ${{ failure() }}
uses: mxschmitt/action-tmate@v3
with:
limit-access-to-actor: false
limit-access-to-actor: true

121 changes: 90 additions & 31 deletions .github/workflows/pip.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,14 +17,18 @@ jobs:
strategy:
fail-fast: false
matrix:
#platform: [ windows-latest, macos-13, macos-14, ubuntu-latest ]
platform: [ macos-13, macos-14, ubuntu-latest ]
platform: [ windows-latest, macos-13, macos-14, ubuntu-latest ]
#platform: [ macos-13, macos-14, ubuntu-latest ]
python-version: ["3.9","3.10","3.11","3.12"]
# exclude:
# - platform: windows-latest
# python-version: "3.9"
# - platform: windows-latest
# python-version: "3.12"
exclude:
- platform: windows-latest
python-version: "3.9"
- platform: windows-latest
python-version: "3.10"
- platform: windows-latest
python-version: "3.11"
- platform: windows-latest
python-version: "3.12"

steps:
- uses: actions/checkout@v4
Expand Down Expand Up @@ -94,7 +98,59 @@ jobs:
mingw-w64-clang-x86_64-libaec
mingw-w64-clang-x86_64-python-pip-tools

- name: Fix windows python version for python3.10
if: matrix.platform == 'windows-latest' && matrix.python-version == '3.10'
shell: msys2 {0}
run: |
echo "Preparing files for installation"
pacman -Sy --noconfirm mingw-w64-clang-x86_64-python-pip
echo "Downloading old archives"
curl -LO https://repo.msys2.org/mingw/clang64/mingw-w64-clang-x86_64-python3.10-3.10.5-1-any.pkg.tar.zst
curl -LO https://repo.msys2.org/mingw/clang64/mingw-w64-clang-x86_64-python-pip-23.1.2-1-any.pkg.tar.zst
echo "Installing Python 3.10"
pacman -U --noconfirm mingw-w64-clang-x86_64-python3.10-3.10.5-1-any.pkg.tar.zst && pacman -Ql mingw-w64-clang-x86_64-python3.10 | grep bin/python
echo "Installing Corresponding Pip"
pacman -U --noconfirm mingw-w64-clang-x86_64-python-pip-23.1.2-1-any.pkg.tar.zst && pacman -Ql mingw-w64-clang-x86_64-python-pip | grep bin/pip
echo "Attempting to create python symlink"
ln -sf /clang64/bin/python3.10.exe /clang64/bin/python3
/clang64/bin/python3 --version

- name: Fix windows python version for python3.11
if: matrix.platform == 'windows-latest' && matrix.python-version == '3.11'
shell: msys2 {0}
run: |
echo "Preparing files for installation"
pacman -Sy --noconfirm mingw-w64-x86_64-python-pip
echo "Downloading old archives"
curl -LO https://repo.msys2.org/mingw/clang64/mingw-w64-clang-x86_64-python3.11-3.11.4-1-any.pkg.tar.zst
curl -LO https://repo.msys2.org/mingw/clang64/mingw-w64-clang-x86_64-python-pip-23.3.2-1-any.pkg.tar.zst
echo "Installing Python 3.11"
pacman -U --noconfirm mingw-w64-clang-x86_64-python3.11-3.11.4-1-any.pkg.tar.zst && pacman -Ql mingw-w64-clang-x86_64-python3.11 | grep bin/python
echo "Installing Corresponding Pip"
pacman -U --noconfirm mingw-w64-clang-x86_64-python-pip-23.3.2-1-any.pkg.tar.zst && pacman -Ql mingw-w64-clang-x86_64-python-pip | grep bin/pip
echo "Attempting to create python symlink..."
ln -sf /clang64/bin/python3.11.exe /clang64/bin/python3
/clang64/bin/python3 --version

- name: Fix windows python version for python3.12
if: matrix.platform == 'windows-latest' && matrix.python-version == '3.12'
shell: msys2 {0}
run: |
echo "Preparing files for installation"
pacman -Sy --noconfirm mingw-w64-x86_64-python-pip
echo "Downloading old archives"
curl -LO https://repo.msys2.org/mingw/clang64/mingw-w64-clang-x86_64-python3.12-3.12.7-1-any.pkg.tar.zst
curl -LO https://repo.msys2.org/mingw/clang64/mingw-w64-clang-x86_64-python-pip-25.0.1-1-any.pkg.tar.zst
echo "Installing Python 3.12"
pacman -U --noconfirm mingw-w64-clang-x86_64-python3.12-3.12.7-1-any.pkg.tar.zst && pacman -Ql mingw-w64-clang-x86_64-python3.12 | grep bin/python
echo "Installing Corresponding Pip"
pacman -U --noconfirm mingw-w64-clang-x86_64-python-pip-25.0.1-1-any.pkg.tar.zst && pacman -Ql mingw-w64-clang-x86_64-python-pip | grep bin/pip
echo "Attempting to create python symlink"
ln -sf /clang64/bin/python3.12.exe /clang64/bin/python3
/clang64/bin/python3 --version

- uses: actions/setup-python@v5
if: matrix.platform != 'windows-latest'
with:
python-version: "${{ matrix.python-version }}"

Expand Down Expand Up @@ -124,24 +180,26 @@ jobs:
- name: Build and install windows-latest
shell: msys2 {0}
run: |
pip wheel --verbose -Ccmake.define.CMAKE_C_COMPILER="clang.exe" -Ccmake.define.CMAKE_CXX_COMPILER="clang++.exe" . -w dist
pip install delvewheel
which python3
python3 --version
python3 -m pip wheel --verbose -Ccmake.define.CMAKE_C_COMPILER="clang.exe" -Ccmake.define.CMAKE_CXX_COMPILER="clang++.exe" . -w dist
python3 -m pip install delvewheel
for wheel_file in dist/*.whl; do
echo "not inspecting $wheel_file"
echo "delvewheel needed -v $wheel_file"
echo "not repairing $wheel_file"
echo "delvewheel repair -v $wheel_file"
done
pip install dist/*.whl
python3 -m pip install dist/*.whl
if: matrix.platform == 'windows-latest'

- name: Build and install manylinux for python 3.9
run: |
docker run --rm -v $(pwd):/io quay.io/pypa/manylinux_2_34_x86_64 \
/bin/bash -c \
"yum install -y boost-devel hdf5-devel libzip-devel bzip2-devel ninja-build openssl-devel xz-devel && \
/opt/python/cp39-cp39/bin/pip wheel /io/ -w /io/dist && \
auditwheel repair /io/dist/*.whl -w /io/dist/"
/bin/bash -c \
"yum install -y boost-devel hdf5-devel libzip-devel bzip2-devel ninja-build openssl-devel xz-devel && \
/opt/python/cp39-cp39/bin/pip wheel /io/ -w /io/dist && \
auditwheel repair --disable-isa-ext-check /io/dist/*.whl -w /io/dist/"
echo "keeping only the manylinux wheels, remove those with -linux_x86_64.whl in the name"
sudo rm -rf dist/*-linux_x86_64.whl
pip install dist/*.whl
Expand All @@ -150,10 +208,10 @@ jobs:
- name: Build and install manylinux for python 3.10
run: |
docker run --rm -v $(pwd):/io quay.io/pypa/manylinux_2_34_x86_64 \
/bin/bash -c \
"yum install -y boost-devel hdf5-devel libzip-devel bzip2-devel ninja-build openssl-devel xz-devel && \
/opt/python/cp310-cp310/bin/pip wheel /io/ -w /io/dist && \
auditwheel repair /io/dist/*.whl -w /io/dist/"
/bin/bash -c \
"yum install -y boost-devel hdf5-devel libzip-devel bzip2-devel ninja-build openssl-devel xz-devel && \
/opt/python/cp310-cp310/bin/pip wheel /io/ -w /io/dist && \
auditwheel repair --disable-isa-ext-check /io/dist/*.whl -w /io/dist/"
echo "keeping only the manylinux wheels, remove those with -linux_x86_64.whl in the name"
sudo rm -rf dist/*-linux_x86_64.whl
pip install dist/*.whl
Expand All @@ -162,10 +220,10 @@ jobs:
- name: Build and install manylinux for python 3.11
run: |
docker run --rm -v $(pwd):/io quay.io/pypa/manylinux_2_34_x86_64 \
/bin/bash -c \
"yum install -y boost-devel hdf5-devel libzip-devel bzip2-devel ninja-build openssl-devel xz-devel && \
/opt/python/cp311-cp311/bin/pip wheel /io/ -w /io/dist && \
auditwheel repair /io/dist/*.whl -w /io/dist/"
/bin/bash -c \
"yum install -y boost-devel hdf5-devel libzip-devel bzip2-devel ninja-build openssl-devel xz-devel && \
/opt/python/cp311-cp311/bin/pip wheel /io/ -w /io/dist && \
auditwheel repair --disable-isa-ext-check /io/dist/*.whl -w /io/dist/"
echo "keeping only the manylinux wheels, remove those with -linux_x86_64.whl in the name"
sudo rm -rf dist/*-linux_x86_64.whl
pip install dist/*.whl
Expand All @@ -174,10 +232,10 @@ jobs:
- name: Build and install manylinux for python 3.12
run: |
docker run --rm -v $(pwd):/io quay.io/pypa/manylinux_2_34_x86_64 \
/bin/bash -c \
"yum install -y boost-devel hdf5-devel libzip-devel bzip2-devel ninja-build openssl-devel xz-devel && \
/opt/python/cp312-cp312/bin/pip wheel /io/ -w /io/dist && \
auditwheel repair /io/dist/*.whl -w /io/dist/"
/bin/bash -c \
"yum install -y boost-devel hdf5-devel libzip-devel bzip2-devel ninja-build openssl-devel xz-devel && \
/opt/python/cp312-cp312/bin/pip wheel /io/ -w /io/dist && \
auditwheel repair --disable-isa-ext-check /io/dist/*.whl -w /io/dist/"
echo "keeping only the manylinux wheels, remove those with -linux_x86_64.whl in the name"
sudo rm -rf dist/*-linux_x86_64.whl
pip install dist/*.whl
Expand All @@ -192,8 +250,10 @@ jobs:
- name: Test on windows
shell: msys2 {0}
run: |
pip install pytest
pytest
which python3
python3 --version
python3 -m pip install pytest
python3 -m pytest
if: matrix.platform == 'windows-latest'

- name: set wheel_file and artifact_name environment vars (non-windows)
Expand Down Expand Up @@ -225,7 +285,7 @@ jobs:
uses: mxschmitt/action-tmate@v3
if: ${{ failure() }}
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
limit-access-to-actor: true

publish-to-pypi:
name: Publish to PyPI
Expand Down Expand Up @@ -266,6 +326,5 @@ jobs:
uses: mxschmitt/action-tmate@v3
if: ${{ failure() }}
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
limit-access-to-actor: false
limit-access-to-actor: true

11 changes: 11 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -28,3 +28,14 @@ tests/__pycache__/
*.whl

VCell/tests/testFiles/output/

VCell/tests/smoke/*.fvinput
VCell/tests/smoke/*.hdf5
VCell/tests/smoke/*.log
VCell/tests/smoke/*.meshmetrics
VCell/tests/smoke/*.zip

VCell/tests/testFiles/input/Smoldyn/*.zip
VCell/tests/testFiles/input/Smoldyn/*.log
VCell/tests/testFiles/input/Smoldyn/*.hdf5
VCell/tests/testFiles/input/Smoldyn/*.smoldynOutput
7 changes: 4 additions & 3 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,8 @@
cmake_minimum_required(VERSION 3.22)

set (CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

option(OPTION_TARGET_PYTHON_BINDING "build Python bindings" ON)
option(OPTION_TARGET_MESSAGING "Messaging (requires libcurl)" off)
option(OPTION_TARGET_DOCS "Generate Doxygen documentation" off)
Expand Down Expand Up @@ -37,9 +41,6 @@ else()
set(OPTION_VCELL ON)
endif ()

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

set(CMAKE_POSITION_INDEPENDENT_CODE ON)

set(OPTION_USE_OPENGL OFF CACHE BOOL "")
Expand Down
Loading
Loading