Repository navigation
VCell solver release: NFsim_x64 archives, image + SIF, v0.2.0 - #1
Merged
Merged
Conversation
…saging NFsim_x64 is NFsim with VCell's main (VCell/src/VCellNFSim.cpp, previously unbuilt here): [[[progress]]] markers on stdout and, with -DOPTION_VCELL_MESSAGING=ON, status messages to VCell's broker for a trailing -tid <n>, as the legacy vcell-solvers build did. Vendors the VCellMessaging library (from vcell-fvsolver) and the vcommons helpers it needs (from vcell-solvers). The plain NFsim target and the Python binding are unchanged; NFsim_x64 is skipped under scikit-build. Also: honour a caller-set CMAKE_OSX_ARCHITECTURES (universal builds) and pass -m64 only on x86_64 (aarch64 gcc rejects it). Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…d equivalence tests - packaging/build-linux.sh: NFsim_x64 on manylinux_2_28, messaging ON, minimal HTTP-only libcurl linked statically; fails if anything beyond glibc/libstdc++/libgcc_s is linked. - docker/Dockerfile: build stage = the archive's contents, an "archive" stage exporting linux64.tgz / linux64arm.tgz, and a debian:bookworm-slim runtime with them on PATH. - docker/entrypoint.sh: /usr/local/bin/vcell-solver-entrypoint (help -> 0, NFsim_x64 -> exec, else -> 2); writes nothing, any uid, read-only SIF. - tests/container/smoke.sh + fake_broker.py: the reference model through an image as SlurmProxy runs it (/simdata, -tid 0), byte-exact against tests/smoke/*.expected, and the status messages must reach the (fake) broker. - tests/equivalence/compare_legacy.sh: five seeds through the legacy vcell-solvers v0.0.44-dev4 NFsim_x64 and the new one, byte-for-byte. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…th wheels; v0.2.0 release.yml builds linux64/linux64arm (Docker, manylinux_2_28), mac64 (universal, ad-hoc signed) and win64 (MSVC, static runtime) archives, smoke-tests the image (Docker as a non-root uid, and the SIF under apptainer --containall, both with -tid), compares with the legacy binary, publishes ghcr.io/virtualcell/vcell-nfsim (multi-arch) and vcell-nfsim_singularity (amd64 SIF) on main and tags, and on a vX.Y.Z tag creates the release with the archives, the wheels + sdist (publish-python-package.yml, now also workflow_call) and SHA256SUMS. SOLVER-RELEASE.md documents the contract; version 0.2.0. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…tool's per-arch headers) Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…2.28 check (NFsim -help exits 255) Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…p ships Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
It was left uninitialized in the SimulationMessaging(broker, ...) constructor, so a garbage non-zero value made nfsimExit skip waitUntilFinished(): the process could exit before the messaging thread posted JOB_COMPLETED (seen in CI: JOB_STARTING reached the broker, the completion never did). Also return from lockMessaging() on POSIX. The same code is in vcell-fvsolver's and vcell-solvers' VCellMessaging. The smoke test takes BROKER_HOST (default 127.0.0.1) for runs where the solver sees the host under another name (host.docker.internal on Docker Desktop). Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…SIGPIPE under pipefail) Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Implements PR A4 of VCell's solver-repo plan (
docs/plan-solver-repos.mdon VCell master): this repo now meets the solver-release contract (§1) next to its existing Python wheels. Details in the newSOLVER-RELEASE.md.What changes
NFsim_x64target — NFsim with VCell'smain(VCell/src/VCellNFSim.cpp, already in the repo but not built):[[[progress]]]markers on stdout, and with-DOPTION_VCELL_MESSAGING=ONstatus messages to VCell's broker for a trailing-tid <n>(broker read from the input's<jms>element), as the legacyvcell-solversbuild did. VendorsVCellMessaging(from vcell-fvsolver) andvcommons(from vcell-solvers). The plainNFsimtarget and the Python binding are unchanged..github/workflows/release.yml), on PRs /main/v*tags:linux64.tgz,linux64arm.tgz: built on manylinux_2_28 in Docker, messaging ON, with a minimal HTTP-only libcurl linked statically. The build fails if anything beyond glibc/libstdc++/libgcc_s gets linked.mac64.tgz: universal arm64+x86_64, ad-hoc signed, only/usr/libdependencies.win64.zip: MinGW-w64 gcc, fully static, with only Windows system DLLs (the legacy build was MinGW too; MSVC leftNFsimMainunresolved at link time).NFsim_x64[.exe],LICENSE,LICENSE-GPL-3.0.txtandVERSION.ghcr.io/virtualcell/vcell-nfsim(amd64+arm64,debian:bookworm-slimruntime) and SIFvcell-nfsim_singularity(amd64), tagged:X.Y.Zon tags and:latest+:sha-*onmain.publish-python-package.ymlis now alsoworkflow_call; its manual dispatch still works) andSHA256SUMS./usr/local/bin/vcell-solver-entrypoint: help → exit 0,NFsim_x64 …→exec, anything else → exit 2. It writes nothing and runs as any uid.SimulationMessaging's messaging constructor leftbStopRequesteduninitialized. A garbagetruemade the solver exit without waiting for the messaging thread, so JOB_COMPLETED was sometimes never sent. CI caught it, and the fix is inVCell/messaging. The same code is in vcell-fvsolver's and vcell-solvers'VCellMessaging.Checks
tests/container/smoke.sh: the committed reference model through Docker (uid 12345, bind mount) and through the SIF underapptainer run --containall(non-root). Argv matches SlurmProxy's (/simdata,-tid 0), and the input's broker is pointed at a local fake broker. Outputs must be byte-identical totests/smoke/*.expected, and JOB_STARTING + JOB_COMPLETED must reach the broker.tests/equivalence/compare_legacy.sh: 5 seeds through the legacyvcell-solversv0.0.44-dev4NFsim_x64and the new one, compared byte for byte. In CI it is byte-identical on linux64, on both mac64 slices (arm64 native, x86_64 under Rosetta), and on win64 against the legacy v0.0.40NFsim_x64.exethat VCell's Windows desktop ships.Decisions
-tidit behaves like the desktop binary). mac and Windows stay messaging OFF, like the legacy desktop binaries.http://host:port.LICENSE-GPL-3.0.txtnext to the repo's MITLICENSE.VERSIONcomes from the tag /pyproject.toml. The repo's top-levelVERSIONfile belongs to BioNetGen, so it is left alone.🤖 Generated with Claude Code