fix(dssp): pin to last dssp build predating a broken libmcfp dependency - #100
Open
chronicgiardia wants to merge 1 commit into
Open
chronicgiardia wants to merge 1 commit into
chronicgiardia wants to merge 1 commit into
Conversation
conda-forge's dssp=4.6.1 (and the dssp=4.6.0 "_1" rebuild) declare a runtime dependency on libmcfp>=2.0.1,<3.0a0, but the mkdssp binary in those builds actually calls mcfp::config::get_last_option_ref(), a symbol that does not exist in any published libmcfp release (1.4.2 through at least 2.1.1 only ever expose get_last_option(), no "_ref" variant). This makes dssp=4.6.1 permanently broken on conda-forge: mkdssp fails at runtime with "undefined symbol _ZN4mcfp6config19get_last_option_refB5cxx11Ev" regardless of which libmcfp version is installed alongside it. The previous libmcfp=1.4.2 pin (added to work around an earlier ABI break) no longer even solves, since dssp=4.6.1 declares libmcfp>=2.0.1,<3.0a0 as a hard floor. Pin to dssp=4.6.0 build "_0" (np2py312h4f94bcb_0), which predates the libmcfp dependency entirely -- it was only introduced in the "_1" rebuild of the same version -- sidestepping the broken symbol. Verified with a live Modal deploy of proto-tools-dssp: conda install, mkdssp --version, and the DSSPService warmup smoke test all pass. 437 pre-existing failures in tests/style_consistency_tests/test_field_docs.py reproduce identically on main without this change (Python 3.14 docstring-parser incompatibility, unrelated to this fix). Co-Authored-By: Warp <agent@warp.dev>
There was a problem hiding this comment.
🟡 Changes recommended
A test must be updated, and the platform-specific build pin needs handling for unsupported platforms.
Get a fresh assessment by requesting another Copilot review.
Pull request overview
Pins DSSP to a known-good conda-forge build to avoid the broken libmcfp dependency.
Changes:
- Pins
dssp=4.6.0=np2py312h4f94bcb_0. - Adds
--force-reinstalland documents the dependency issue.
File summaries
| File | Summary | Findings |
|---|---|---|
proto_tools/tools/structure_scoring/dssp/standalone/setup.sh |
Updates DSSP installation and verification. | Critical (3 votes): update the existing test assertions. Moderate (1 vote): guard or provide platform-specific handling for the Linux-only build pin. |
Review details
Suppressed comments (1)
proto_tools/tools/structure_scoring/dssp/standalone/setup.sh:23
- The exact
np2py312h4f94bcb_0selector is a platform-specific conda build, but this setup has no platform guard or per-platform override. On a non-linux-64 host (for example linux-aarch64 or macOS), micromamba cannot resolve that build and setup fails; use platform-specific known-good build pins or explicitly reject unsupported platforms before this install.
"$MAMBA_BIN" install -y -p "$VENV_PATH" -c conda-forge --force-reinstall "dssp=4.6.0=np2py312h4f94bcb_0"
- Files reviewed: 1/1 changed files
- Comments generated: 1
- Review effort level: Lite
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
| # dssp=4.6.0 build "_0" (np2py312h4f94bcb_0) predates the libmcfp dependency | ||
| # entirely -- it was only added in the "_1" rebuild of the same version -- so | ||
| # pin the exact build string to sidestep the broken symbol altogether. | ||
| "$MAMBA_BIN" install -y -p "$VENV_PATH" -c conda-forge --force-reinstall "dssp=4.6.0=np2py312h4f94bcb_0" |
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.
Summary
conda-forge's
dssp=4.6.1(and thedssp=4.6.0"_1" rebuild) declare a runtime dependency onlibmcfp>=2.0.1,<3.0a0, but themkdsspbinary in those builds actually callsmcfp::config::get_last_option_ref(), a symbol that does not exist in any published libmcfp release. I checked libmcfp's full public API docs across 1.4.2 through 2.1.1 (the latest) — onlyget_last_option()(no "_ref" variant) has ever been exposed. This makesdssp=4.6.1permanently broken on conda-forge, independent of whichlibmcfpversion is installed alongside it:The existing
libmcfp=1.4.2pin insetup.sh(added to work around an earlier, different ABI break) no longer even solves —dssp=4.6.1declareslibmcfp>=2.0.1,<3.0a0as a hard floor, somamba install dssp=4.6.1 libmcfp=1.4.2fails with an unsatisfiable environment before it even gets to the runtime symbol issue.Root cause
dssp=4.6.1(both build_0and_1, all Python versions on linux-64) depends onlibmcfp>=2.0.1,<3.0a0.dssp=4.6.0build_1also added this same broken dependency.dssp=4.6.0build_0(np2py312h4f94bcb_0) predates thelibmcfpdependency entirely — it has nolibmcfprequirement at all.Fix
Pin to the exact build string
dssp=4.6.0=np2py312h4f94bcb_0, sidestepping the broken symbol by using the last build before the bad dependency was introduced. Also added--force-reinstalldefensively, since this env is a persistent volume across deploys.Verification
Ran a live Modal deploy of
proto-tools-dsspend-to-end:mamba installresolves and completes cleanlymkdssp --version→mkdssp version 4.6.0DSSPServicewarmup smoke test (run_dssp_secondary_structure) passesAlso ran
tests/style_consistency_tests/: 437 pre-existing failures intest_field_docs.pyreproduce identically on unmodifiedmain(verified viagit stash) — a Python 3.14 docstring-parser incompatibility unrelated to this change. No new failures introduced.Co-Authored-By: Warp agent@warp.dev