Fix conda packaging: Python 3.14 ABI and version solver preference#76
Open
Fix conda packaging: Python 3.14 ABI and version solver preference#76
Conversation
Pin python_abi in host requirements to the standard CPython variant, working around conda-build bug conda/conda-build#5843.
Pin python_abi in host requirements to the standard CPython variant, working around conda-build bug conda/conda-build#5843. Add CI test to verify simcoon + matplotlib coinstallation.
28448b0 to
f4dab5c
Compare
The auto-generated run_exports from libblas/liblapack in host (e.g. >=3.11.0,<4.0a0) forced the solver to use newer MKL from conda-forge, making simcoon 1.10.x harder to install than 1.9.6 when Python was installed from the defaults channel. By ignoring these run_exports, the explicit run dependencies (libblas * *mkl, etc.) still correctly pin the BLAS backend without unnecessarily constraining the version.
chemiskyy
reviewed
Feb 14, 2026
Member
chemiskyy
left a comment
There was a problem hiding this comment.
The python_abi pin is considered to be permanent or a temporary fix? If not, we should add a comment about it for a future removal
Member
Author
If the linked conda-build issue is resolved in a future version, we could remove it. I added a comment next to this line to mention it, thanks! |
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.
Problem
Closes #75
Two issues with the conda packages on Linux:
1. Python 3.14 free-threaded ABI (cp314t)
The simcoon conda package for linux-64 + Python 3.14 is built against the free-threaded Python variant (
cp314t) instead of the standard variant (cp314). This makes it impossible to install simcoon alongside packages like matplotlib on Linux.This is caused by a known conda-build bug where
conda buildon Linux incorrectly resolvespython=3.14to the free-threaded variant.python_abi 3.14.* *_cp314tpython_abi 3.14.* *_cp314python_abi 3.14.* *_cp3142. Solver prefers simcoon 1.9.6 over 1.10.1
When Python 3.13 is installed from the
defaultschannel and the user runsconda install -c conda-forge -c set3mah simcoon, the solver picks 1.9.6 instead of 1.10.1.Root cause: conda-build's automatic
run_exportsfromlibblas/liblapackin the host environment bake a tight version constraint (libblas >=3.11.0,<4.0a0) into the package metadata. This forces the solver to pull inmkl-2025.3.0from conda-forge (instead of the oldermkl-2022.1.0from defaults), which also requires superseding_openmp_mutex. The solver withflexiblepriority avoids this disruption by falling back to 1.9.6.Then 1.9.6's
boost >=1.84dependency pulls in libboost/ICU, which conflicts with matplotlib's ICU requirements.Fix
python_abi pin (commit 0b559f1)
Forces the standard CPython ABI for each Python version, avoiding the free-threaded variant.
ignore_run_exports (commit c228a7e)
Prevents the auto-generated version constraints from being added to the package metadata. The explicit run dependencies (
libblas * *mkl, etc.) already correctly pin the BLAS backend — the BLAS/LAPACK C/Fortran ABI is stable across versions, so version pinning is unnecessary.Test plan
index.jsondependencies are correctconda createwith Python 3.13 from defaults, install fixed simcoon -> solver picks 1.10.1 (not 1.9.6)conda install matplotlibsucceeds after installing fixed simcoon