Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
89 commits
Select commit Hold shift + click to select a range
e45e0ea
Added linked list functionality
CodeByDrescher Feb 26, 2025
6259923
Visibility fixes
CodeByDrescher Feb 26, 2025
a39fd8d
Implemented Vectors, Linked List, and Hashtables
CodeByDrescher Mar 11, 2025
be9c887
Added hashing to surfaces and panels, replacing expensive `stringfind…
CodeByDrescher Mar 13, 2025
d44d7d6
Adding gtests (and tweaks to make better)
CodeByDrescher Mar 14, 2025
05d6ab0
Upgraded testing to have better separation and to use a configuration…
CodeByDrescher Mar 19, 2025
f04c8e5
Edited test to be platform independent using pattern matching
CodeByDrescher Mar 20, 2025
a869e78
Added necessary option to build tests in CI/CD
CodeByDrescher Mar 20, 2025
9b74d4f
Undoing Changes to libzippp
CodeByDrescher Mar 20, 2025
4997f7e
Adding cmake standard to main cmake file
CodeByDrescher Mar 20, 2025
25f9e9d
adding missing include
CodeByDrescher Mar 20, 2025
7df7120
installing python dependencies
CodeByDrescher Mar 20, 2025
944b6a3
fix syntax error
CodeByDrescher Mar 20, 2025
33a1e99
Attempt to work around macos-14 python limitations
CodeByDrescher Mar 20, 2025
b1d4f99
Fixing windows python install
CodeByDrescher Mar 20, 2025
02e7dd5
fixing macos-14 python install
CodeByDrescher Mar 20, 2025
8e3f571
Enabled Smoldyn building for all OS
CodeByDrescher Mar 21, 2025
3417cee
Updating .gitignore
CodeByDrescher Mar 21, 2025
3472fde
Updating Pybinding version
CodeByDrescher Mar 21, 2025
284d9f9
Revert "Updating Pybinding version"
CodeByDrescher Mar 21, 2025
99e588f
Enabling test of docker container
CodeByDrescher Mar 24, 2025
9c3e57c
Fixing dependencies
CodeByDrescher Mar 24, 2025
78bb740
Fixing incorrect licenses
CodeByDrescher Mar 24, 2025
77369bb
License Clarification, and correctly separating code
CodeByDrescher Mar 24, 2025
289adeb
Memory change and debug symbols added for valgrind
CodeByDrescher Mar 26, 2025
ffaedbe
Fixed lack of initalization
CodeByDrescher Mar 26, 2025
68fe2e0
Fixing bad-allocated memory in main of FV solver
CodeByDrescher Mar 27, 2025
2c21910
Rewriting log-deletion code
CodeByDrescher Mar 28, 2025
d4bd1f7
More Memory cleanup
CodeByDrescher Mar 28, 2025
57a78ea
Added Smoldyn Smoke test, and corresponding discovered NPE Fault
CodeByDrescher Mar 28, 2025
27a7894
Allowed for implicit vcg discovery
CodeByDrescher Mar 28, 2025
9076d40
Updated git ignore
CodeByDrescher Mar 28, 2025
03b0a02
Correcting tmate options
CodeByDrescher Mar 28, 2025
c6157d0
Removing Debug Symbols
CodeByDrescher Mar 28, 2025
8907c88
Limit pushing to tagged, published versions
CodeByDrescher Mar 28, 2025
3b2b8db
Attempting to limit auditwheel to version when it allowed non x86_64-…
CodeByDrescher Apr 1, 2025
59e3a05
Allowing upgrade of minimum cmake version (deprecation update)
CodeByDrescher Apr 1, 2025
9cade4e
Using proper flag to disable isa check
CodeByDrescher Apr 1, 2025
5197755
Attempt to build windows wheels
CodeByDrescher Apr 8, 2025
32bd009
Explicitly building windows pythons from archives
CodeByDrescher Apr 8, 2025
e6da4b2
Create build_wheels.yml
CodeByDrescher Apr 9, 2025
9d4dd84
Updating for new build yaml
CodeByDrescher Apr 9, 2025
25d63f0
fixing syntax
CodeByDrescher Apr 9, 2025
b4c7649
Editing windows to use Msys2 build
CodeByDrescher Apr 9, 2025
7b04e93
Ubuntu dependencies updated
CodeByDrescher Apr 9, 2025
4b095df
Mac env var set (and name fix)
CodeByDrescher Apr 9, 2025
b24d9b0
Deploy tmate session
CodeByDrescher Apr 9, 2025
dbd68a4
amending path
CodeByDrescher Apr 9, 2025
7cf0650
syntax fix
CodeByDrescher Apr 9, 2025
8a8679d
Add submodules
CodeByDrescher Apr 9, 2025
f1400ad
Individual os changes
CodeByDrescher Apr 9, 2025
55476c9
yaml syntax fix
CodeByDrescher Apr 9, 2025
3aae41a
fixing linux includes
CodeByDrescher Apr 9, 2025
18960b8
renaming tmate step
CodeByDrescher Apr 9, 2025
8880857
Still trying to get libzip found (+ name fix)
CodeByDrescher Apr 9, 2025
8079608
Changing windows python install
CodeByDrescher Apr 11, 2025
8025584
Super destructive attempt to use correct linking
CodeByDrescher Apr 11, 2025
deba87f
Attempting to build native windows with conan
CodeByDrescher Apr 14, 2025
33b79e7
Attempting manual install of `flang`
CodeByDrescher Apr 14, 2025
5dba784
Attempting to install flang based off of LLVM action
CodeByDrescher Apr 15, 2025
a0a70cb
attempting to correct paths
CodeByDrescher Apr 15, 2025
1325cd5
more debuging
CodeByDrescher Apr 15, 2025
269c8b1
Reduce path-lengths in windows shell for conan
CodeByDrescher Apr 16, 2025
618bfbf
Attempting to remove boost
CodeByDrescher Apr 16, 2025
95ca6a6
letting cmake find the fortran compiler on path.
CodeByDrescher Apr 16, 2025
768b627
amending instructions to cibuildwheel
CodeByDrescher Apr 16, 2025
3fbf9dc
tailoring Conan to generate compatible files
CodeByDrescher Apr 17, 2025
5e1b9d9
LLVM now packages flang on windows; removing manual build
CodeByDrescher Mar 4, 2026
dd7b5ef
Attempt using zlibng instead of zlib
CodeByDrescher Mar 4, 2026
20ebf77
Test new CI/CD
CodeByDrescher Mar 17, 2026
fec0605
Allowed flang to be fortran compiler
CodeByDrescher Mar 18, 2026
5ebd6fe
Fixed static variable bleed when testing with ctest
CodeByDrescher Mar 19, 2026
c642b8e
fixing Mac CI/CD
CodeByDrescher Mar 19, 2026
718699b
fixing macos Pip-Build
CodeByDrescher Mar 19, 2026
df10f09
build-wheels for MacOS fixes
CodeByDrescher Mar 19, 2026
233fd6a
Fix Ubuntu CI/CD
CodeByDrescher Mar 20, 2026
39f1439
Start Conan-based CI/CD
CodeByDrescher Mar 23, 2026
605383e
Attempting to use LLVM 21 for conan
CodeByDrescher Mar 23, 2026
0bd90bd
Update Linux Conan Build
CodeByDrescher Mar 23, 2026
f614670
Update Windows Conan Build
CodeByDrescher Mar 23, 2026
215b8f8
Update Wheel building
CodeByDrescher Mar 26, 2026
368bd8e
Attempting non-cibuildwheel building for windows to avoid env issues
CodeByDrescher Apr 8, 2026
a1ddf71
Merge pull request #15 from virtualcell/no-cibuildwheel-windows
CodeByDrescher Apr 8, 2026
a64dc82
Fixing Linux Wheel building
CodeByDrescher Apr 8, 2026
f1ec7c3
Bugfixes and cleanup
CodeByDrescher Apr 14, 2026
7ec1eea
updated pyproject file in preparation for release
CodeByDrescher Apr 14, 2026
7767985
removing unreasonable test
CodeByDrescher Apr 14, 2026
319a693
Updating deprecating action types
CodeByDrescher Apr 14, 2026
8f6e74a
Updating Dockerfile
CodeByDrescher Apr 15, 2026
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
244 changes: 244 additions & 0 deletions .github/workflows/build_wheels.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,244 @@
name: "Build Wheels"

on:
workflow_dispatch:
# pull_request:
# push:
# branches:
# - master
# release:
# types:
# - published

jobs:
build_wheels:
name: Build Python Wheels on ${{ matrix.os }} (for ${{ matrix.python_version }})
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, ubuntu-24.04-arm, windows-latest, macos-15-intel, macos-15]
python_version: ["cp310-*", "cp311-*", "cp312-*", "cp313-*"]
exclude:
- os: windows-latest
python_version: "cp313-*"

steps:
- name: Checkout repository (for non-windows)
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 wget gfortran cmake ninja-build libboost-all-dev libzip-dev libhdf5-dev libbz2-dev libssl-dev liblzma-dev
#
# # for some reason, there aren't headers included in libzip-dev???? so we're building from source!
# mkdir ../libzip-source
# wget https://libzip.org/download/libzip-1.11.3.tar.gz
# tar -xzvf libzip-1.11.3.tar.gz -C ../libzip-source
# cmake -S ../libzip-source/libzip-1.11.3 -B ../libzip-source/libzip-1.11.3/build -G Ninja
# cmake --build ../libzip-source/libzip-1.11.3/build
# sudo cmake --install ../libzip-source/libzip-1.11.3/build
# echo "Confirming header presence..."

- name: Install MacOS Dependencies
if: matrix.os == 'macos-15' || matrix.os == 'macos-15-intel'
shell: bash
run: |
brew install boost
brew install hdf5
brew install libzip
brew install ninja
brew install libaec
brew uninstall llvm@18
brew install flang

clang --version
flang --version
cmake --version
brew info boost
brew info hdf5

- name: Install Python for Windows (Python 3.10)
if: matrix.os == 'windows-latest' && matrix.python_version == 'cp310-*'
uses: actions/setup-python@v5
with:
python-version: '3.10'

- name: Install Python for Windows (Python 3.11)
if: matrix.os == 'windows-latest' && matrix.python_version == 'cp311-*'
uses: actions/setup-python@v5
with:
python-version: '3.11'

- name: Install Python for Windows (Python 3.12)
if: matrix.os == 'windows-latest' && matrix.python_version == 'cp312-*'
uses: actions/setup-python@v5
with:
python-version: '3.12'

- name: Install Python for Windows (Python 3.13)
if: matrix.os == 'windows-latest' && matrix.python_version == 'cp313-*'
uses: actions/setup-python@v5
with:
python-version: '3.13'

- name: Install Windows Dependencies (Part 1 - Configure Conan ...and all other dependencies)
if: matrix.os == 'windows-latest'
shell: powershell
run: |
choco install graphviz wget llvm zip gtk-runtime -y
choco install conan -y
$conanDir = "C:\Program Files\Conan\conan"
$env:PATH = "$conanDir;$env:PATH"
$conanDir | Set-Content -Path $env:GITHUB_PATH
$env:CONAN_HOME = "C:\.conan"
"CONAN_HOME=C:\.conan" | Out-File -FilePath $env:GITHUB_ENV -Append
conan --version
conan profile detect --force

- name: Install Windows Dependencies (Part 2 - Setup Sphinx for Python)
if: matrix.os == 'windows-latest'
run: pip install sphinx cmake ninja

- name: Install Windows Dependencies (Part 2 - Reconfigure Conan)
if: matrix.os == 'windows-latest'
shell: bash
run: |
cp conan-profiles/CI-CD/Windows-AMD64_profile.txt $CONAN_HOME/profiles/default

- name: Install Windows Dependencies (Part 3b - Get Remaining Dependencies through Conan)
if: matrix.os == 'windows-latest'
run:
conan install . --output-folder=build --build=missing

- name: Build Wheels (Windows)
uses: pypa/cibuildwheel@v2.23.2
if: matrix.os == 'windows-latest'
env:
CC: "clang"
CXX: "clang++"
FC: "flang"
CIBW_BUILD: ${{ matrix.python_version }}
CIBW_ARCHS_WINDOWS: "native"
CIBW_BEFORE_BUILD: "./conanbuild.ps1"
CIBW_PYTHON_BIN: ${{ env.CUSTOM_PYTHON_BIN }}
CIBW_ENVIRONMENT: >
CC=clang
CXX=clang++
FC=flang
CMAKE_GENERATOR=Ninja
CMAKE_TOOLCHAIN_FILE=D:\\a\\vcell-fvsolver\\vcell-fvsolver\\build\\conan_toolchain.cmake
OPTION_EXTRA_CONFIG_INFO=ON

# 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-15-intel'
env:
MACOSX_DEPLOYMENT_TARGET: 15.0
CIBW_BUILD: ${{ matrix.python_version }}
CIBW_ARCHES: "native"
# 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-15'
env:
MACOSX_DEPLOYMENT_TARGET: 15.0
CIBW_BUILD: ${{ matrix.python_version }}
CIBW_ARCHES: "native"
# 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:
CIBW_BUILD: ${{ matrix.python_version }}
CIBW_SKIP: "*musllinux*"
CIBW_ARCHS_LINUX: "native"
CIBW_MANYLINUX_AARCH64_IMAGE: 'quay.io/pypa/manylinux_2_34_aarch64'
CIBW_REPAIR_WHEEL_COMMAND: 'auditwheel repair --disable-isa-ext-check {wheel} -w {dest_dir}'
CIBW_BEFORE_BUILD: "yum install -y wget boost-devel hdf5-devel zlib-devel libzip-devel bzip2-devel ninja-build openssl-devel xz-devel \
&& mkdir /xz_source \
&& wget https://github.com/tukaani-project/xz/releases/download/v5.8.1/xz-5.8.1.tar.gz \
&& tar -xzvf xz-5.8.1.tar.gz -C /xz_source \
&& cmake -S /xz_source/xz-5.8.1 -B /xz_source/xz-5.8.1/build \
&& cmake --build /xz_source/xz-5.8.1/build \
&& cmake --install /xz_source/xz-5.8.1/build \
&& pip install h5py"
# 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:
CIBW_BUILD: ${{ matrix.python_version }}
CIBW_SKIP: "*musllinux*"
CIBW_ARCHS_LINUX: "native"
CIBW_MANYLINUX_X86_64_IMAGE: 'quay.io/pypa/manylinux_2_34_x86_64'
CIBW_REPAIR_WHEEL_COMMAND: 'auditwheel repair --disable-isa-ext-check {wheel} -w {dest_dir}'
CIBW_BEFORE_BUILD: "yum install -y curl boost-devel hdf5-devel libzip-devel bzip2-devel ninja-build openssl-devel xz-devel \
&& pip install h5py \
"
# with:
# package-dir: .
# output-dir: wheelhouse
# config-file: "{package}/pyproject.toml"
# && mkdir /libzip_source \
# && curl -O https://libzip.org/download/libzip-1.11.3.tar.gz \
# && tar -xzvf libzip-1.11.3.tar.gz -C /libzip_source \
# && cmake -S ../libzip-source/libzip-1.11.3 -B ../libzip-source/libzip-1.11.3/build -G Ninja \
# && cmake --build ../libzip-source/libzip-1.11.3/build \
# && cmake --install ../libzip-source/libzip-1.11.3/build \
# && export LIBZIP_INCLUDE_DIR=/usr/local/include \
# && export LIBZIP_LIBRARY=/usr/local/lib/libzip.so

- name: Upload Artifact (Python 3.10)
uses: actions/upload-artifact@v4
if: matrix.python_version == 'cp310-*'
with:
name: pyvcell-fv-${{ matrix.os }}-cp310-cibw-wheels
path: ./wheelhouse/*.whl

- name: Upload Artifact (Python 3.11)
uses: actions/upload-artifact@v4
if: matrix.python_version == 'cp311-*'
with:
name: pyvcell-fv-${{ matrix.os }}-cp311-cibw-wheels
path: ./wheelhouse/*.whl

- name: Upload Artifact (Python 3.12)
uses: actions/upload-artifact@v4
if: matrix.python_version == 'cp312-*'
with:
name: pyvcell-fv-${{ matrix.os }}-cp312-cibw-wheels
path: ./wheelhouse/*.whl

- name: Upload Artifact (Python 3.13)
uses: actions/upload-artifact@v4
if: matrix.python_version == 'cp313-*'
with:
name: pyvcell-fv-${{ matrix.os }}-cp313-cibw-wheels
path: ./wheelhouse/*.whl

- name: Setup tmate session on failure
uses: mxschmitt/action-tmate@v3
if: ${{ failure() }}
with:
limit-access-to-actor: true
Loading
Loading