Cantera / cantera

Chemical kinetics, thermodynamics, and transport tool suite
https://cantera.org
Other
581 stars 342 forks source link

Incompatibility with sundial 6.6.2 #1645

Closed elac-safran closed 7 months ago

elac-safran commented 7 months ago

Problem description

It seems the version of a few sundials libs are hard-coded in cantera 3.0.0:

File "/config/mambaforge/envs/cosapp_turbo_doc/lib/python3.10/site-packages/cantera/__init__.py", line 4, in <module>
    from ._cantera import *
ImportError: libsundials_sunlinsollapackdense.so.4.6.1: cannot open shared object file: No such file or directory

After investigation, it appears my version of sundials (version 6.6.2, installed as a dependency of cantera) contains version 4.6.2 of linear algebra libs (libsundials_sunlinsollapackdense.so, libsundials_sunlinsolband.so, etc.).

Work around

Downgrading to sundials=6.6.1 miraculously installs said libs at version 4.6.1, and everything works.

It could be a sundials packaging error, but I am reporting the issue here, as it might impact other cantera users.

System information

bryanwweber commented 7 months ago

Hi! Thanks for reporting this. Can you provide the exact command you used to install Cantera? Thanks!

elac-safran commented 7 months ago

Thanks for your reply. I installed it in a conda environmnent, with mamba:

mamba install cantera
elac-safran commented 7 months ago

The environment was roughly created with

mamba create -n my_env python=3.10 numpy scipy <other irrelevant stuff>
bryanwweber commented 7 months ago

Thanks for your reply. I installed it in a conda environmnent, with mamba:

mamba install cantera

What channels do you have configured for mamba? Specifically, did you install from the conda-forge or cantera channel?

speth commented 7 months ago

To give us a bit more detail about the specific package versions installed and where they came from, can you provide the output of mamba list, with this environment activated?

dcmvdbekerom commented 7 months ago

I'm having the same issue, also on Ubuntu-20.04. We do not use the cantera channel, so our environment.yml file looks like:

channels:
- conda-forge
- astropy
- plotly
dependencies:
<...>
- cantera>=2.5.1   # for chemical equilibrium computations

Adding -cantera to the channels did not resolve the issue.

Below the output from mamba list (full output can be found here https://app.travis-ci.com/github/radis/radis/jobs/613129256):

Complete list of packages ``` List of packages in environment: "/home/travis/micromamba/envs/radis-env" Name Version Build Channel ──────────────────────────────────────────────────────────────────────────────── _libgcc_mutex 0.1 conda_forge conda-forge _openmp_mutex 4.5 2_gnu conda-forge alsa-lib 1.2.10 hd590300_0 conda-forge annotated-types 0.6.0 pyhd8ed1ab_0 conda-forge aplus 0.11.0 py_1 conda-forge asdf 2.15.0 pyhd8ed1ab_0 conda-forge asdf-astropy 0.4.0 pyhd8ed1ab_1 conda-forge asdf-coordinates-schemas 0.2.0 pyhd8ed1ab_1 conda-forge asdf-standard 1.0.3 pyhd8ed1ab_0 conda-forge asdf-transform-schemas 0.4.0 pyhd8ed1ab_0 conda-forge asdf-unit-schemas 0.1.0 pyhd8ed1ab_0 conda-forge asdf-wcs-schemas 0.1.1 pyhd8ed1ab_0 conda-forge asteval 0.9.31 pyhd8ed1ab_0 conda-forge astropy 5.2.2 py38h07e1bb6_0 conda-forge astroquery 0.4.6 pyhd8ed1ab_0 conda-forge attr 2.5.1 h166bdaf_1 conda-forge attrs 23.1.0 pyh71513ae_1 conda-forge aws-c-auth 0.7.6 h37ad1db_0 conda-forge aws-c-cal 0.6.9 h3b91eb8_1 conda-forge aws-c-common 0.9.8 hd590300_0 conda-forge aws-c-compression 0.2.17 hfd9eb17_6 conda-forge aws-c-event-stream 0.3.2 hae413d4_6 conda-forge aws-c-http 0.7.14 h162056d_1 conda-forge aws-c-io 0.13.35 hc23c90e_8 conda-forge aws-c-mqtt 0.9.9 h1387108_0 conda-forge aws-c-s3 0.3.23 h7630044_1 conda-forge aws-c-sdkutils 0.1.12 hfd9eb17_5 conda-forge aws-checksums 0.1.17 hfd9eb17_5 conda-forge aws-crt-cpp 0.24.5 h270613d_5 conda-forge aws-sdk-cpp 1.11.182 h8df25a1_5 conda-forge beautifulsoup4 4.12.2 pyha770c72_0 conda-forge blake3 0.3.3 py38h0cc4f7c_2 conda-forge blosc 1.21.5 h0f2a231_0 conda-forge bokeh 3.1.1 pyhd8ed1ab_0 conda-forge brotli 1.1.0 hd590300_1 conda-forge brotli-bin 1.1.0 hd590300_1 conda-forge brotli-python 1.1.0 py38h17151c0_1 conda-forge bzip2 1.0.8 hd590300_5 conda-forge c-ares 1.21.0 hd590300_0 conda-forge c-blosc2 2.11.2 hb4ffafa_0 conda-forge ca-certificates 2023.7.22 hbcca054_0 conda-forge cached-property 1.5.2 hd8ed1ab_1 conda-forge cached_property 1.5.2 pyha770c72_1 conda-forge cairo 1.18.0 h3faef2a_0 conda-forge cantera 3.0.0 py38hfefddf8_2 conda-forge certifi 2023.7.22 pyhd8ed1ab_0 conda-forge cffi 1.16.0 py38h6d47a40_0 conda-forge charset-normalizer 3.3.2 pyhd8ed1ab_0 conda-forge click 8.1.7 unix_pyh707e725_0 conda-forge cloudpickle 3.0.0 pyhd8ed1ab_0 conda-forge colorama 0.4.6 pyhd8ed1ab_0 conda-forge configparser 5.3.0 pyhd8ed1ab_0 conda-forge contourpy 1.1.1 py38h7f3f72f_1 conda-forge cryptography 41.0.5 py38hcdda232_0 conda-forge cycler 0.12.1 pyhd8ed1ab_0 conda-forge cython 3.0.5 py38h17151c0_0 conda-forge cytoolz 0.12.2 py38h01eb140_1 conda-forge dask 2023.5.0 pyhd8ed1ab_0 conda-forge dask-core 2023.5.0 pyhd8ed1ab_0 conda-forge dbus 1.13.6 h5008d03_3 conda-forge distributed 2023.5.0 pyhd8ed1ab_0 conda-forge expat 2.5.0 hcb278e6_1 conda-forge filelock 3.13.1 pyhd8ed1ab_0 conda-forge fmt 10.1.1 h00ab1b0_0 conda-forge font-ttf-dejavu-sans-mono 2.37 hab24e00_0 conda-forge font-ttf-inconsolata 3.000 h77eed37_0 conda-forge font-ttf-source-code-pro 2.038 h77eed37_0 conda-forge font-ttf-ubuntu 0.83 hab24e00_0 conda-forge fontconfig 2.14.2 h14ed4e7_0 conda-forge fonts-conda-ecosystem 1 0 conda-forge fonts-conda-forge 1 0 conda-forge fonttools 4.44.0 py38h01eb140_0 conda-forge freetype 2.12.1 h267a509_2 conda-forge frozendict 2.3.8 py38h01eb140_1 conda-forge fsspec 2023.10.0 pyhca7485f_0 conda-forge future 0.18.3 pyhd8ed1ab_0 conda-forge gettext 0.21.1 h27087fc_0 conda-forge gflags 2.2.2 he1b5a44_1004 conda-forge glib 2.78.1 hfc55251_0 conda-forge glib-tools 2.78.1 hfc55251_0 conda-forge glog 0.6.0 h6f12383_0 conda-forge gmp 6.3.0 h59595ed_0 conda-forge graphite2 1.3.13 h58526e2_1001 conda-forge gst-plugins-base 1.22.6 h8e1006c_2 conda-forge gstreamer 1.22.6 h98fc4e7_2 conda-forge gwcs 0.18.3 pyhd8ed1ab_0 conda-forge h5py 3.10.0 nompi_py38hb71287c_100 conda-forge habanero 1.2.3 pyh1a96a4e_0 conda-forge harfbuzz 8.2.1 h3d44ed6_0 conda-forge hdf5 1.14.2 nompi_h4f84152_100 conda-forge html5lib 1.1 pyh9f0ad1d_0 conda-forge icu 73.2 h59595ed_0 conda-forge idna 3.4 pyhd8ed1ab_0 conda-forge importlib-metadata 6.8.0 pyha770c72_0 conda-forge importlib-resources 6.1.1 pyhd8ed1ab_0 conda-forge importlib_metadata 6.8.0 hd8ed1ab_0 conda-forge importlib_resources 6.1.1 pyhd8ed1ab_0 conda-forge jaraco.classes 3.3.0 pyhd8ed1ab_0 conda-forge jeepney 0.8.0 pyhd8ed1ab_0 conda-forge jinja2 3.1.2 pyhd8ed1ab_1 conda-forge jmespath 1.0.1 pyhd8ed1ab_0 conda-forge joblib 1.3.2 pyhd8ed1ab_0 conda-forge jsonschema 4.17.3 pyhd8ed1ab_0 conda-forge keyring 24.2.0 py38h578d9bd_1 conda-forge keyutils 1.6.1 h166bdaf_0 conda-forge kiwisolver 1.4.5 py38h7f3f72f_1 conda-forge krb5 1.21.2 h659d440_0 conda-forge lame 3.100 h166bdaf_1003 conda-forge lcms2 2.15 hb7c19ff_3 conda-forge ld_impl_linux-64 2.40 h41732ed_0 conda-forge lerc 4.0.0 h27087fc_0 conda-forge libabseil 20230802.1 cxx17_h59595ed_0 conda-forge libaec 1.1.2 h59595ed_1 conda-forge libarrow 14.0.1 h0406937_1_cpu conda-forge libarrow-acero 14.0.1 h59595ed_1_cpu conda-forge libarrow-dataset 14.0.1 h59595ed_1_cpu conda-forge libarrow-flight 14.0.1 h120cb0d_1_cpu conda-forge libarrow-flight-sql 14.0.1 h61ff412_1_cpu conda-forge libarrow-gandiva 14.0.1 hacb8726_1_cpu conda-forge libarrow-substrait 14.0.1 h61ff412_1_cpu conda-forge libblas 3.9.0 19_linux64_openblas conda-forge libbrotlicommon 1.1.0 hd590300_1 conda-forge libbrotlidec 1.1.0 hd590300_1 conda-forge libbrotlienc 1.1.0 hd590300_1 conda-forge libcantera 3.0.0 h2f7dcaf_2 conda-forge libcap 2.69 h0f662aa_0 conda-forge libcblas 3.9.0 19_linux64_openblas conda-forge libclang 15.0.7 default_h7634d5b_3 conda-forge libclang13 15.0.7 default_h9986a30_3 conda-forge libcrc32c 1.1.2 h9c3ff4c_0 conda-forge libcups 2.3.3 h4637d8d_4 conda-forge libcurl 8.4.0 hca28451_0 conda-forge libdeflate 1.19 hd590300_0 conda-forge libedit 3.1.20191231 he28a2e2_2 conda-forge libev 4.33 h516909a_1 conda-forge libevent 2.1.12 hf998b51_1 conda-forge libexpat 2.5.0 hcb278e6_1 conda-forge libffi 3.4.2 h7f98852_5 conda-forge libflac 1.4.3 h59595ed_0 conda-forge libgcc-ng 13.2.0 h807b86a_3 conda-forge libgcrypt 1.10.2 hd590300_0 conda-forge libgfortran-ng 13.2.0 h69a702a_3 conda-forge libgfortran5 13.2.0 ha4646dd_3 conda-forge libglib 2.78.1 hebfc3b9_0 conda-forge libgomp 13.2.0 h807b86a_3 conda-forge libgoogle-cloud 2.12.0 h5206363_4 conda-forge libgpg-error 1.47 h71f35ed_0 conda-forge libgrpc 1.59.2 hd6c4280_0 conda-forge libhwloc 2.9.3 default_h554bfaf_1009 conda-forge libiconv 1.17 h166bdaf_0 conda-forge libjpeg-turbo 3.0.0 hd590300_1 conda-forge liblapack 3.9.0 19_linux64_openblas conda-forge libllvm14 14.0.6 hcd5def8_4 conda-forge libllvm15 15.0.7 h5cf9203_3 conda-forge libnghttp2 1.58.0 h47da74e_0 conda-forge libnsl 2.0.1 hd590300_0 conda-forge libnuma 2.0.16 h0b41bf4_1 conda-forge libogg 1.3.4 h7f98852_1 conda-forge libopenblas 0.3.24 pthreads_h413a1c8_0 conda-forge libopus 1.3.1 h7f98852_1 conda-forge libparquet 14.0.1 h352af49_1_cpu conda-forge libpng 1.6.39 h753d276_0 conda-forge libpq 16.1 hfc447b1_0 conda-forge libprotobuf 4.24.4 hf27288f_0 conda-forge libre2-11 2023.06.02 h7a70373_0 conda-forge libsndfile 1.2.2 hc60ed4a_1 conda-forge libsqlite 3.44.0 h2797004_0 conda-forge libssh2 1.11.0 h0841786_0 conda-forge libstdcxx-ng 13.2.0 h7e041cc_3 conda-forge libsystemd0 254 h3516f8a_0 conda-forge libthrift 0.19.0 hb90f79a_1 conda-forge libtiff 4.6.0 ha9c0a0a_2 conda-forge libutf8proc 2.8.0 h166bdaf_0 conda-forge libuuid 2.38.1 h0b41bf4_0 conda-forge libvorbis 1.3.7 h9c3ff4c_0 conda-forge libwebp-base 1.3.2 hd590300_0 conda-forge libxcb 1.15 h0b41bf4_0 conda-forge libxkbcommon 1.6.0 h5d7e998_0 conda-forge libxml2 2.11.5 h232c23b_1 conda-forge libzlib 1.2.13 hd590300_5 conda-forge llvmlite 0.41.1 py38h94a1851_0 conda-forge lmfit 1.2.2 pyhd8ed1ab_1 conda-forge locket 1.0.0 pyhd8ed1ab_0 conda-forge lz4 4.3.2 py38hdcd8cb4_1 conda-forge lz4-c 1.9.4 hcb278e6_0 conda-forge lzo 2.10 h516909a_1000 conda-forge markdown-it-py 3.0.0 pyhd8ed1ab_0 conda-forge markupsafe 2.1.3 py38h01eb140_1 conda-forge matplotlib 3.7.3 py38h578d9bd_0 conda-forge matplotlib-base 3.7.3 py38h58ed7fa_0 conda-forge mdurl 0.1.0 pyhd8ed1ab_0 conda-forge metis 5.1.0 h59595ed_1007 conda-forge more-itertools 10.1.0 pyhd8ed1ab_0 conda-forge mpfr 4.2.1 h9458935_0 conda-forge mpg123 1.32.3 h59595ed_0 conda-forge mpl_animators 1.1.0 pyhd8ed1ab_0 conda-forge msgpack-python 1.0.6 py38h7f3f72f_0 conda-forge munkres 1.1.4 pyh9f0ad1d_0 conda-forge mysql-common 8.0.33 hf1915f5_6 conda-forge mysql-libs 8.0.33 hca2cd23_6 conda-forge ncurses 6.4 h59595ed_2 conda-forge ndcube 2.1.3 pyhd8ed1ab_0 conda-forge nest-asyncio 1.5.8 pyhd8ed1ab_0 conda-forge nomkl 1.0 h5ca1d4c_0 conda-forge nspr 4.35 h27087fc_0 conda-forge nss 3.94 h1d7d5a4_0 conda-forge numba 0.58.1 py38h4144172_0 conda-forge numexpr 2.8.4 py38hb2af0cf_101 conda-forge numpy 1.24.4 py38h59b608b_0 conda-forge openjpeg 2.5.0 h488ebb8_3 conda-forge openssl 3.1.4 hd590300_0 conda-forge orc 1.9.0 h4b38347_4 conda-forge packaging 23.2 pyhd8ed1ab_0 conda-forge pandas 1.5.3 py38hdc8b05c_1 conda-forge partd 1.4.1 pyhd8ed1ab_0 conda-forge patsy 0.5.3 pyhd8ed1ab_0 conda-forge pcre 8.45 h9c3ff4c_0 conda-forge pcre2 10.40 hc3806b6_0 conda-forge pillow 10.1.0 py38ha43c96d_0 conda-forge pip 23.3.1 pyhd8ed1ab_0 conda-forge pixman 0.42.2 h59595ed_0 conda-forge pkgutil-resolve-name 1.3.10 pyhd8ed1ab_1 conda-forge platformdirs 4.0.0 pyhd8ed1ab_0 conda-forge plotly 5.18.0 pyhd8ed1ab_0 conda-forge ply 3.11 py_1 conda-forge pooch 1.8.0 pyhd8ed1ab_0 conda-forge progressbar2 4.2.0 pyhd8ed1ab_0 conda-forge psutil 5.9.5 py38h01eb140_1 conda-forge pthread-stubs 0.4 h36c2ea0_1001 conda-forge pulseaudio-client 16.1 hb77b528_5 conda-forge py-cpuinfo 9.0.0 pyhd8ed1ab_0 conda-forge pyarrow 14.0.1 py38h96a5bb7_1_cpu conda-forge pycparser 2.21 pyhd8ed1ab_0 conda-forge pydantic 2.4.2 pyhd8ed1ab_1 conda-forge pydantic-core 2.10.1 py38h0cc4f7c_0 conda-forge pyerfa 2.0.0.3 py38h7f0c24c_1 conda-forge pygments 2.16.1 pyhd8ed1ab_0 conda-forge pyparsing 3.1.1 pyhd8ed1ab_0 conda-forge pyqt 5.15.9 py38hffdaa6c_5 conda-forge pyqt5-sip 12.12.2 py38h17151c0_5 conda-forge pyrsistent 0.20.0 py38h01eb140_0 conda-forge pysocks 1.7.1 pyha2e5f31_6 conda-forge pytables 3.8.0 py38h606e206_4 conda-forge python 3.8.18 hd12c33a_0_cpython conda-forge python-dateutil 2.8.2 pyhd8ed1ab_0 conda-forge python-utils 3.8.1 pyhd8ed1ab_0 conda-forge python_abi 3.8 4_cp38 conda-forge pytz 2023.3.post1 pyhd8ed1ab_0 conda-forge pyvo 1.4.2 pyhd8ed1ab_0 conda-forge pyyaml 6.0.1 py38h01eb140_1 conda-forge qt-main 5.15.8 h82b777d_17 conda-forge rdma-core 28.9 h59595ed_1 conda-forge re2 2023.06.02 h2873b5e_0 conda-forge readline 8.2 h8228510_1 conda-forge requests 2.31.0 pyhd8ed1ab_0 conda-forge rich 13.6.0 pyhd8ed1ab_0 conda-forge ruamel_yaml 0.15.80 py38h01eb140_1009 conda-forge s2n 1.3.56 h06160fa_0 conda-forge scipy 1.10.1 py38h59b608b_3 conda-forge seaborn 0.13.0 hd8ed1ab_0 conda-forge seaborn-base 0.13.0 pyhd8ed1ab_0 conda-forge secretstorage 3.3.3 py38h578d9bd_2 conda-forge semantic_version 2.10.0 pyhd8ed1ab_0 conda-forge setuptools 68.2.2 pyhd8ed1ab_0 conda-forge setuptools-scm 8.0.4 pyhd8ed1ab_0 conda-forge sip 6.7.12 py38h17151c0_0 conda-forge six 1.16.0 pyh6c4a22f_0 conda-forge snappy 1.1.10 h9fff704_0 conda-forge sortedcontainers 2.4.0 pyhd8ed1ab_0 conda-forge soupsieve 2.5 pyhd8ed1ab_1 conda-forge specutils 1.11.0 pyhd8ed1ab_0 conda-forge statsmodels 0.14.0 py38h7f0c24c_2 conda-forge suitesparse 5.10.1 h9e50725_1 conda-forge sundials 6.6.2 h777d08e_0 conda-forge tabulate 0.9.0 pyhd8ed1ab_1 conda-forge tbb 2021.10.0 h00ab1b0_2 conda-forge tblib 2.0.0 pyhd8ed1ab_0 conda-forge tenacity 8.2.3 pyhd8ed1ab_0 conda-forge termcolor 2.3.0 pyhd8ed1ab_0 conda-forge tk 8.6.13 noxft_h4845f30_101 conda-forge toml 0.10.2 pyhd8ed1ab_0 conda-forge tomli 2.0.1 pyhd8ed1ab_0 conda-forge toolz 0.12.0 pyhd8ed1ab_0 conda-forge tornado 6.3.3 py38h01eb140_1 conda-forge tqdm 4.66.1 pyhd8ed1ab_0 conda-forge typing-extensions 4.8.0 hd8ed1ab_0 conda-forge typing_extensions 4.8.0 pyha770c72_0 conda-forge ucx 1.15.0 h64cca9d_0 conda-forge uncertainties 3.1.7 pyhd8ed1ab_0 conda-forge unicodedata2 15.1.0 py38h01eb140_0 conda-forge urllib3 2.0.7 pyhd8ed1ab_0 conda-forge vaex-core 4.17.1 py38h8be23ca_0 conda-forge vaex-hdf5 0.14.1 pyhd8ed1ab_0 conda-forge vaex-viz 0.5.4 pyhd8ed1ab_0 conda-forge webencodings 0.5.1 pyhd8ed1ab_2 conda-forge wheel 0.41.3 pyhd8ed1ab_0 conda-forge xcb-util 0.4.0 hd590300_1 conda-forge xcb-util-image 0.4.0 h8ee46fc_1 conda-forge xcb-util-keysyms 0.4.0 h8ee46fc_1 conda-forge xcb-util-renderutil 0.3.9 hd590300_1 conda-forge xcb-util-wm 0.4.1 h8ee46fc_1 conda-forge xkeyboard-config 2.40 hd590300_0 conda-forge xorg-kbproto 1.0.7 h7f98852_1002 conda-forge xorg-libice 1.1.1 hd590300_0 conda-forge xorg-libsm 1.2.4 h7391055_0 conda-forge xorg-libx11 1.8.7 h8ee46fc_0 conda-forge xorg-libxau 1.0.11 hd590300_0 conda-forge xorg-libxdmcp 1.1.3 h7f98852_0 conda-forge xorg-libxext 1.3.4 h0b41bf4_2 conda-forge xorg-libxrender 0.9.11 hd590300_0 conda-forge xorg-renderproto 0.11.1 h7f98852_1002 conda-forge xorg-xextproto 7.3.0 h0b41bf4_1003 conda-forge xorg-xf86vidmodeproto 2.3.1 h7f98852_1002 conda-forge xorg-xproto 7.0.31 h7f98852_1007 conda-forge xyzservices 2023.10.1 pyhd8ed1ab_0 conda-forge xz 5.2.6 h166bdaf_0 conda-forge yaml 0.2.5 h7f98852_2 conda-forge yaml-cpp 0.8.0 h59595ed_0 conda-forge zict 3.0.0 pyhd8ed1ab_0 conda-forge zipp 3.17.0 pyhd8ed1ab_0 conda-forge zlib 1.2.13 hd590300_5 conda-forge zlib-ng 2.0.7 h0b41bf4_0 conda-forge zstd 1.5.5 hfc55251_0 conda-forge ```
elac-safran commented 7 months ago

Thanks for your reply. I installed it in a conda environmnent, with mamba:

mamba install cantera

What channels do you have configured for mamba? Specifically, did you install from the conda-forge or cantera channel?

Hello @bryanwweber. All packages were pulled from conda-forge

elac-safran commented 7 months ago

I managed to reproduce the bug in a minimal environment:

mamba create -n cantera python=3.10 cantera -c conda-forge

In a python console:

>>> import cantera
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/config/mambaforge/envs/cantera/lib/python3.10/site-packages/cantera/__init__.py", line 4, in <module>
    from ._cantera import *
ImportError: libsundials_sunlinsollapackdense.so.4.6.1: cannot open shared object file: No such file or directory

Detail of the environment:

conda list

# Name                    Version                   Build  Channel
_libgcc_mutex             0.1                 conda_forge    conda-forge
_openmp_mutex             4.5                       2_gnu    conda-forge
bzip2                     1.0.8                hd590300_5    conda-forge
c-ares                    1.21.0               hd590300_0    conda-forge
ca-certificates           2023.7.22            hbcca054_0    conda-forge
cantera                   3.0.0           py310h4c3f389_2    conda-forge
fmt                       10.1.1               h00ab1b0_0    conda-forge
gmp                       6.3.0                h59595ed_0    conda-forge
hdf5                      1.14.2          nompi_h4f84152_100    conda-forge
icu                       73.2                 h59595ed_0    conda-forge
keyutils                  1.6.1                h166bdaf_0    conda-forge
krb5                      1.21.2               h659d440_0    conda-forge
ld_impl_linux-64          2.40                 h41732ed_0    conda-forge
libaec                    1.1.2                h59595ed_1    conda-forge
libblas                   3.9.0           19_linux64_openblas    conda-forge
libcantera                3.0.0                h2f7dcaf_2    conda-forge
libcblas                  3.9.0           19_linux64_openblas    conda-forge
libcurl                   8.4.0                hca28451_0    conda-forge
libedit                   3.1.20191231         he28a2e2_2    conda-forge
libev                     4.33                 h516909a_1    conda-forge
libffi                    3.4.2                h7f98852_5    conda-forge
libgcc-ng                 13.2.0               h807b86a_3    conda-forge
libgfortran-ng            13.2.0               h69a702a_3    conda-forge
libgfortran5              13.2.0               ha4646dd_3    conda-forge
libgomp                   13.2.0               h807b86a_3    conda-forge
libhwloc                  2.9.3           default_h554bfaf_1009    conda-forge
libiconv                  1.17                 h166bdaf_0    conda-forge
liblapack                 3.9.0           19_linux64_openblas    conda-forge
libnghttp2                1.58.0               h47da74e_0    conda-forge
libnsl                    2.0.1                hd590300_0    conda-forge
libopenblas               0.3.24          pthreads_h413a1c8_0    conda-forge
libsqlite                 3.44.0               h2797004_0    conda-forge
libssh2                   1.11.0               h0841786_0    conda-forge
libstdcxx-ng              13.2.0               h7e041cc_3    conda-forge
libuuid                   2.38.1               h0b41bf4_0    conda-forge
libxml2                   2.11.5               h232c23b_1    conda-forge
libzlib                   1.2.13               hd590300_5    conda-forge
metis                     5.1.0             h59595ed_1007    conda-forge
mpfr                      4.2.1                h9458935_0    conda-forge
ncurses                   6.4                  h59595ed_2    conda-forge
numpy                     1.26.0          py310hb13e2d6_0    conda-forge
openssl                   3.1.4                hd590300_0    conda-forge
pip                       23.3.1             pyhd8ed1ab_0    conda-forge
python                    3.10.13         hd12c33a_0_cpython    conda-forge
python_abi                3.10                    4_cp310    conda-forge
readline                  8.2                  h8228510_1    conda-forge
ruamel_yaml               0.15.80         py310h2372a71_1009    conda-forge
setuptools                68.2.2             pyhd8ed1ab_0    conda-forge
suitesparse               5.10.1               h9e50725_1    conda-forge
sundials                  6.6.2                h777d08e_0    conda-forge
tbb                       2021.10.0            h00ab1b0_2    conda-forge
tk                        8.6.13          noxft_h4845f30_101    conda-forge
tzdata                    2023c                h71feb2d_0    conda-forge
wheel                     0.41.3             pyhd8ed1ab_0    conda-forge
xz                        5.2.6                h166bdaf_0    conda-forge
yaml                      0.2.5                h7f98852_2    conda-forge
yaml-cpp                  0.8.0                h59595ed_0    conda-forge
zstd                      1.5.5                hfc55251_0    conda-forge
ischoegl commented 7 months ago

I can reproduce on macOS.

bryanwweber commented 7 months ago

On my Mac (I assume similar on Linux), I have these files:

-rwxrwxr-x  2 bweber  staff    93K Nov  7 07:26 libsundials_sunlinsollapackdense.4.6.2.dylib
lrwxr-xr-x  1 bweber  staff    44B Nov 13 09:21 libsundials_sunlinsollapackdense.dylib -> libsundials_sunlinsollapackdense.4.6.2.dylib

So it does appear to be a linking error and/or that a different version of SUNDIALS is installed compared to what we linked against. I think the fix is to pin the Cantera package to 6.6.x instead of just 6.6 if these kinds of changes are going to happen for patch releases. Although honestly I'm surprised that this wasn't accounted for in the dependency pinning of Cantera at build time, in other words, I'm surprised that 6.6.2 was a valid solution for the environment...

~I'm going to transfer this over to the conda-forge feedstock repo, thanks for reporting!~ Looks like I can't move it over automatically. No worries, it can stay here!

elac-safran commented 7 months ago

Same on Linux, indeed:

lrwxrwxrwx 1 abc abc    41 Nov 13 09:24 libsundials_sunlinsollapackdense.so -> libsundials_sunlinsollapackdense.so.4.6.2
-rwxrwxr-x 2 abc abc 98032 Nov  7 13:20 libsundials_sunlinsollapackdense.so.4.6.2
speth commented 7 months ago

I think this is a problem with either the SUNDIALS conda-forge recipe (https://github.com/conda-forge/sundials-feedstock) or SUNDIALS itself. All we specify directly in the Cantera recipe (https://github.com/conda-forge/cantera-feedstock/blob/main/recipe/meta.yaml) is a build requirement of SUNDIALS 6.6, and then link to libsundials_sunlinsollapackdense, with the exact file linked to determined by the SONAME embedded in the library. The runtime dependency is specified in the SUNDIALS meta.yaml:

build:
  number: 1
  run_exports:
    - {{ pin_subpackage('sundials', max_pin='x.x') }}

Which corresponds to an expectation that any version of 6.6.* is binary compatible. However, it appears that SUNDIALS specifies a SONAME down to the patch level (4.6.2) for this library and has incremented it between SUNDIALS 6.6.0 and 6.6.2.

I think typically, one would aim for binary compatibility for at least the the minor version (6.6.x) if not the major version (6.x.y). If SUNDIALS 6.6.2 is not binary compatible with 6.6.0, then this is correct, and the conda-forge package pinning is too loose. Otherwise, it would be helpful for the SUNDIALS to specify the SONAME to be as broadly compatible as possible.

One thing I did notice is that the SONAME for the CVODES library does just specify the major version. I'm not sure why the linear algebra sublibrary has such strict compatibility specified by contrast.

speth commented 7 months ago

I think this may be addressed by https://github.com/LLNL/sundials/pull/343, which will hopefully be included in Sundials 6.6.3 (assuming that happens and they don't go to 6.7.0). After that, we can specify 6.6.3 as the minimum build requirement, rebuild and get packages that work for 6.6.x where x >= 3.

I'm not sure if there's something else we should do in the meantime. I guess we could rebuild and specify sundials=6.6.2 as both a build and runtime dependency?

bryanwweber commented 7 months ago

Thanks for looking into this @speth. I agree that the resolution is to pin to 6.6.2 and rebuild, then pin again for the next version.

speth commented 7 months ago

I confirmed that the resulting packages work both on my M1 Mac and an amd64 Linux server. One thing to note is that if you already have the older build of the cantera package installed, you need to explicitly upgrade it, since it still declares compatibility with Sundials 6.6.*.