Skip to content

ci: build the OPTION_VCELL Python wheel for compose-api, and release it - #1

Merged
jcschaff merged 2 commits into
pyhybridfrom
ci/vcell-hybrid-wheel
Oct 27, 2026
Merged

jcschaff merged 2 commits into
pyhybridfrom
ci/vcell-hybrid-wheel

Conversation

@jcschaff

@jcschaff jcschaff commented Oct 27, 2026 •

Copy link
Copy Markdown
Member

A workflow, .github/workflows/vcell-hybrid-wheel.yml, that builds this branch's Python module with OPTION_VCELL (the hybrid ValueProvider hooks) as a wheel for compose-api's composed environments. In biosimulations/compose-api it is docs/plan-environment-composition.md, part 7c-3: viva-pde-particle composed with ODE solvers in one environment. compose-api's registry entry will install the wheel by URL and sha256 from the release this workflow makes.

What it does

  • A pull request to pyhybrid builds the wheel as a check. No release is made.
  • Run by hand (workflow_dispatch) with a commit and release: true, it builds at that commit and attaches the wheel and its .sha256 file to the release vcell-pyhybrid-<short commit>, created at that commit. Running it again replaces the assets.

How it builds: with viva-pde-particle's scripts/build_smoldyn.sh flags (OPTION_VCELL, NSV, no OpenGL or libtiff).

  • Python: conda-forge's Python 3.12, in the pixi image compose-api locks and builds with (pinned by digest). manylinux's Pythons have no libpython, which this CMake build requires.
  • The CMake fixes: conda's prefixed ar/ranlib are passed explicitly. SMOLDYN_VERSION is <base>.dev0+vcell.<short commit>, with the base read from CMakeLists.txt.
  • The wheel: the staged setup.py tags it py3-none-any, so it's retagged cp312-cp312-linux_x86_64. The workflow checks the extension is inside, then installs and imports it.
  • The trade-off: the module links libpython, as libroadrunner's does, so it is for conda-style environments; compose-api's images set LD_LIBRARY_PATH to the environment's lib.

Tested by running the workflow's build steps in that image under linux/amd64, at e86d552: version 2.76.dev0+vcell.e86d552, the wheel built and retagged, the extension check passed, and import smoldyn worked. An earlier local build of the same source, in the same environment, works together with FEniCSx, PETSc, tellurium and COPASI, and runs viva-pde-particle's PDE + Smoldyn example with results identical to its own image.

Nothing else changes. The fork's own CI ("Build and test") also runs on this branch's pushes, as it does on any; the wheel workflow adds nothing to it.

🤖 Generated with Claude Code

jcschaff and others added 2 commits October 27, 2026 02:32
A workflow that builds Smoldyn's Python module with OPTION_VCELL as a CPython
3.12 Linux x86-64 wheel, on conda-forge's Python in the pixi image compose-api
builds with (manylinux's Pythons have no libpython, which the CMake build
needs), and, run by hand with `release`, attaches it and its sha256 to the
release vcell-pyhybrid-<short commit>. A pull request to pyhybrid builds it as
a check. For biosimulations/compose-api's composed environments
(docs/plan-environment-composition.md, 7c-3).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@jcschaff
jcschaff merged commit 9152dc2 into pyhybrid Oct 27, 2026
12 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant