You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
[BUG] ImportError: libdbCore.so.7.0.10.99.0: cannot open shared object file: No such file or directory #197
Thank you for the report @konosubakonoakua . This issue is due to a recent release of epicscorelibs, and a discrepancy between softioc's build-time and run-time dependencies on epicscorelibs. This is happening for you as we don't have any aarch64 wheels in PyPi. It is happening for @OCopping because we don't have any wheels for Python >= 3.13. So both of you are building the wheels yourself locally and exposing this issue.
I'm still struggling to work out why epicscorelibs downgrades itself between build-time and run-time. Here's a verbose logfile that shows softioc wanting a version of epicscorelibs>=7.0.7.99.1.2a1, <7.0.7.99.2:
$ uv venv --clear --python 3.13 && uv pip install --verbose softioc
Using CPython 3.13.9
Creating virtual environment at: .venv
Activate with: source .venv/bin/activate
DEBUG uv 0.9.9
DEBUG Acquired shared lock for `/root/.cache/uv`
DEBUG Searching for default Python interpreter in virtual environments
DEBUG Found `cpython-3.13.9-linux-x86_64-gnu` at `/.venv/bin/python3` (virtual environment)
DEBUG Using Python 3.13.9 environment at: /.venv
DEBUG Acquired lock for `/.venv`
DEBUG At least one requirement is not satisfied: softioc
DEBUG Using request timeout of 30s
DEBUG Solving with installed Python version: 3.13.9
DEBUG Solving with target Python version: >=3.13.9
DEBUG Adding direct dependency: softioc*
DEBUG Found fresh response for: https://pypi.org/simple/softioc/
DEBUG Found fresh response for: https://files.pythonhosted.org/packages/8f/46/689554640712513ddffdedd452b5ba6627f4fcd78844dd4a489c32bdd22d/softioc-4.6.1-cp310-cp310-macosx_10_9_x86_64.whl.metadata
DEBUG Searching for a compatible version of softioc (*)
DEBUG Selecting: softioc==4.6.1 [compatible] (softioc-4.6.1.tar.gz)
DEBUG Adding transitive dependency for softioc==4.6.1: epicscorelibs>=7.0.7.99.1.2a1, <7.0.7.99.2
DEBUG Adding transitive dependency for softioc==4.6.1: pvxslibs>=1.3.2a2
DEBUG Adding transitive dependency for softioc==4.6.1: numpy*
DEBUG Adding transitive dependency for softioc==4.6.1: epicsdbbuilder>=1.4
DEBUG Adding transitive dependency for softioc==4.6.1: pyyaml>=6.0
DEBUG Found fresh response for: https://pypi.org/simple/epicscorelibs/
DEBUG Found fresh response for: https://pypi.org/simple/numpy/
DEBUG Searching for a compatible version of epicscorelibs (>=7.0.7.99.1.2a1, <7.0.7.99.2)
DEBUG Selecting: epicscorelibs==7.0.7.99.1.2 [compatible] (epicscorelibs-7.0.7.99.1.2-cp313-cp313-manylinux2014_x86_64.whl)
DEBUG Found fresh response for: https://pypi.org/simple/pvxslibs/
DEBUG Found fresh response for: https://pypi.org/simple/epicsdbbuilder/
DEBUG Found fresh response for: https://pypi.org/simple/pyyaml/
DEBUG Found fresh response for: https://files.pythonhosted.org/packages/99/98/9d4ad53b0e9ef901c2ef1d550d2136f5ac42d3fd2988390a6def32e23e48/numpy-2.4.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.metadata
DEBUG Found fresh response for: https://files.pythonhosted.org/packages/92/50/841821efaa33dbde9adf8c8b803eb7f48ea53f8f69928fefba4b8aadb040/pvxslibs-1.5.0-cp313-cp313-manylinux2014_x86_64.whl.metadata
DEBUG Found fresh response for: https://files.pythonhosted.org/packages/a2/af/6bb0e1de4fb7218fa4ba95fe91ba1fd4a5661dd28a461eff6a0f609c996c/epicscorelibs-7.0.7.99.1.2-cp313-cp313-manylinux2014_x86_64.whl.metadata
DEBUG Found fresh response for: https://files.pythonhosted.org/packages/10/f8/858c81f516cb9d1c1f73e8bf379be2cbec4388c93f48a4eb118c47f32d4d/epicsdbbuilder-1.5-py3-none-any.whl.metadata
DEBUG Found fresh response for: https://files.pythonhosted.org/packages/74/27/e5b8f34d02d9995b80abcef563ea1f8b56d20134d8f4e5e81733b1feceb2/pyyaml-6.0.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.metadata
DEBUG Adding transitive dependency for epicscorelibs==7.0.7.99.1.2: setuptools*
DEBUG Adding transitive dependency for epicscorelibs==7.0.7.99.1.2: setuptools-dso>=2.11a2
DEBUG Adding transitive dependency for epicscorelibs==7.0.7.99.1.2: numpy*
DEBUG Searching for a compatible version of pvxslibs (>=1.3.2a2)
DEBUG Selecting: pvxslibs==1.5.0 [compatible] (pvxslibs-1.5.0-cp313-cp313-manylinux2014_x86_64.whl)
DEBUG Adding transitive dependency for pvxslibs==1.5.0: setuptools-dso>=2.7a1
DEBUG Adding transitive dependency for pvxslibs==1.5.0: epicscorelibs>=7.0.10.99.0.0, <7.0.10.99.1
DEBUG Recording unit propagation conflict of pvxslibs from incompatibility of (pvxslibs, epicscorelibs)
DEBUG Searching for a compatible version of epicscorelibs (>=7.0.7.99.1.2a1, <7.0.7.99.2)
DEBUG Selecting: epicscorelibs==7.0.7.99.1.2 [compatible] (epicscorelibs-7.0.7.99.1.2-cp313-cp313-manylinux2014_x86_64.whl)
DEBUG Searching for a compatible version of pvxslibs (>=1.3.2a2, <1.5.0 | >1.5.0)
DEBUG Selecting: pvxslibs==1.4.1 [compatible] (pvxslibs-1.4.1-cp313-cp313-manylinux2014_x86_64.whl)
DEBUG Found fresh response for: https://pypi.org/simple/setuptools-dso/
DEBUG Found fresh response for: https://files.pythonhosted.org/packages/6a/d7/d69204cdc4f8cca9fbbee262d044dbfc4891dc3cd96a6df64871db970026/pvxslibs-1.4.1-cp313-cp313-manylinux2014_x86_64.whl.metadata
DEBUG Found fresh response for: https://files.pythonhosted.org/packages/b9/36/c101788fad13e8ea65c5b3d3dee8ff996500800cd554ae6ff72143690247/setuptools_dso-2.12.2-py2.py3-none-any.whl.metadata
DEBUG Adding transitive dependency for pvxslibs==1.4.1: setuptools-dso>=2.7a1
DEBUG Adding transitive dependency for pvxslibs==1.4.1: epicscorelibs>=7.0.7.99.1.2, <7.0.7.99.2
DEBUG Searching for a compatible version of numpy (*)
DEBUG Selecting: numpy==2.4.0 [compatible] (numpy-2.4.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl)
DEBUG Searching for a compatible version of epicsdbbuilder (>=1.4)
DEBUG Selecting: epicsdbbuilder==1.5 [compatible] (epicsdbbuilder-1.5-py3-none-any.whl)
DEBUG Searching for a compatible version of pyyaml (>=6.0)
DEBUG Selecting: pyyaml==6.0.3 [compatible] (pyyaml-6.0.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl)
DEBUG Found fresh response for: https://pypi.org/simple/setuptools/
DEBUG Searching for a compatible version of setuptools (*)
DEBUG Selecting: setuptools==80.9.0 [compatible] (setuptools-80.9.0-py3-none-any.whl)
DEBUG Found fresh response for: https://files.pythonhosted.org/packages/a3/dc/17031897dae0efacfea57dfd3a82fdd2a2aeb58e0ff71b77b87e44edc772/setuptools-80.9.0-py3-none-any.whl.metadata
DEBUG Searching for a compatible version of setuptools-dso (>=2.11a2)
DEBUG Selecting: setuptools-dso==2.12.2 [compatible] (setuptools_dso-2.12.2-py2.py3-none-any.whl)
DEBUG Adding transitive dependency for setuptools-dso==2.12.2: setuptools*
DEBUG Tried 9 versions: pvxslibs 2, epicscorelibs 1, epicsdbbuilder 1, numpy 1, pyyaml 1, setuptools 1, setuptools-dso 1, softioc 1
DEBUG marker environment resolution took 0.005s
Resolved 8 packages in 9ms
DEBUG Registry requirement already cached: pvxslibs==1.4.1
DEBUG Registry requirement already cached: epicscorelibs==7.0.7.99.1.2
DEBUG Registry requirement already cached: pyyaml==6.0.3
DEBUG Registry requirement already cached: epicsdbbuilder==1.5
DEBUG Registry requirement already cached: softioc==4.6.1
DEBUG Registry requirement already cached: setuptools-dso==2.12.2
DEBUG Registry requirement already cached: numpy==2.4.0
DEBUG Registry requirement already cached: setuptools==80.9.0
Installed 8 packages in 121ms
+ epicscorelibs==7.0.7.99.1.2
+ epicsdbbuilder==1.5
+ numpy==2.4.0
+ pvxslibs==1.4.1
+ pyyaml==6.0.3
+ setuptools==80.9.0
+ setuptools-dso==2.12.2
+ softioc==4.6.1
DEBUG Released lock at `/.venv/.lock`
DEBUG Released lock at `/root/.cache/uv/.lock`
root ➜ /
$
This log shows why we also get an old version of pvxslibs - it tries to find a version of it that is compatible with the lower version of epicscorelibs.
@mdavidsavernotes here that it may be a bug in epicscorelibs.version.abi_requires (although I suspect by the time we invoke it it's too late - surely we've already got a version of epicscorelibs installed in order to run that function?) or that uv may somehow be affecting it - but I think the above log file counteracts that, as uv pip ... should just be a wrapper around pip itself. Tomorrow I should try and recreate it using just pip.
This log shows why we also get an old version of pvxslibs ...
I am not convinced of this, and a little confused about what I read. At what point is the softioc package built?
DEBUG Selecting: softioc==4.6.1 [compatible] (softioc-4.6.1.tar.gz)
DEBUG Adding transitive dependency for softioc==4.6.1: epicscorelibs>=7.0.7.99.1.2a1, <7.0.7.99.2
DEBUG Adding transitive dependency for softioc==4.6.1: pvxslibs>=1.3.2a2
Selecting: softioc==4.6.1 suggests to me that a build from source would be done, using the build dependency from pyproject.toml, which is not epicscorelibs>=7.0.7.99.1.2a1, <7.0.7.99.2.
The resulting build downloads epicscorelibs-7.0.10.99.0.0-cp313-cp313-manylinux2014_x86_64.whl. The resulting softioc-4.6.1.dist-info/METADATA contains:
Selecting: softioc==4.6.1 suggests to me that a build from source would be done, using the build dependency from pyproject.toml, which is not epicscorelibs>=7.0.7.99.1.2a1, <7.0.7.99.2.
For reasons I can not fathom, despite running in py3.13, and needing to build from .tar.gz, uv seems to be looking at the meta-data for the py3.10 wheel for softioc!
So it turns out this is not a uv bug, it's simply that pip and uv have different semantics regarding build-time vs run-time dependency resolution. The last paragraph of the Metadata consistency docs explains the situation, as well as additional discussion in the linked uv bug.
The workaround for all uv users is to add a setting to their pyproject.toml - specifying match-runtime = true as documented in Augmenting build dependencies.
I intend to write a note in our documentation to explain this. I also plan to do another release in the near future, which will include Python3.13 on x86_x64 and will remove the issue of building pythonSoftIOC itself completely. It will unfortunately not include ARM at this time due to a large number of issues encountered when trying to run the CI on those platforms.
Activity
ra9fael commentedon Jan 8, 2026
Workaround:
OCopping commentedon Jan 8, 2026
I noticed this too in my techui-builder repo, when attempting to run py3.13 CI, and also fixed by installing epicscorelibs>=7.0.10 manually
AlexanderWells-diamond commentedon Jan 8, 2026
Thank you for the report @konosubakonoakua . This issue is due to a recent release of epicscorelibs, and a discrepancy between softioc's build-time and run-time dependencies on epicscorelibs. This is happening for you as we don't have any
aarch64wheels in PyPi. It is happening for @OCopping because we don't have any wheels for Python >= 3.13. So both of you are building the wheels yourself locally and exposing this issue.AlexanderWells-diamond commentedon Jan 8, 2026
I'm still struggling to work out why epicscorelibs downgrades itself between build-time and run-time. Here's a verbose logfile that shows
softiocwanting a version ofepicscorelibs>=7.0.7.99.1.2a1, <7.0.7.99.2:This log shows why we also get an old version of pvxslibs - it tries to find a version of it that is compatible with the lower version of epicscorelibs.
@mdavidsaver notes here that it may be a bug in
epicscorelibs.version.abi_requires(although I suspect by the time we invoke it it's too late - surely we've already got a version of epicscorelibs installed in order to run that function?) or thatuvmay somehow be affecting it - but I think the above log file counteracts that, asuv pip ...should just be a wrapper aroundpipitself. Tomorrow I should try and recreate it using justpip.mdavidsaver commentedon Jan 8, 2026
I am not convinced of this, and a little confused about what I read. At what point is the
softiocpackage built?Selecting: softioc==4.6.1suggests to me that a build from source would be done, using the build dependency frompyproject.toml, which is notepicscorelibs>=7.0.7.99.1.2a1, <7.0.7.99.2.mdavidsaver commentedon Jan 8, 2026
In a manylinux2014_amd64 container, if I run:
The resulting build downloads
epicscorelibs-7.0.10.99.0.0-cp313-cp313-manylinux2014_x86_64.whl. The resultingsoftioc-4.6.1.dist-info/METADATAcontains:And
readelf -d softioc/_extension.cpython-313-x86_64-linux-gnu.soshows:Which is all as I expect.
Full pip output
mdavidsaver commentedon Jan 9, 2026
For reasons I can not fathom, despite running in py3.13, and needing to build from
.tar.gz,uvseems to be looking at the meta-data for the py3.10 wheel for softioc!Looking at the resulting situation,
softiocis correctly built against 7.0.10.... however, 7.0.7 is left installed.
To my mind, this looks like a bug in the dependency resolver of
uv.AlexanderWells-diamond commentedon Jan 9, 2026
Thank you for the investigation Michael. I agree that this appears to be a
uvbug. I've raised it as an issue over there:astral-sh/uv#17378
I'll keep this issue open for the time being.
AlexanderWells-diamond commentedon Jan 13, 2026
So it turns out this is not a
uvbug, it's simply thatpipanduvhave different semantics regarding build-time vs run-time dependency resolution. The last paragraph of the Metadata consistency docs explains the situation, as well as additional discussion in the linkeduvbug.The workaround for all
uvusers is to add a setting to theirpyproject.toml- specifyingmatch-runtime = trueas documented in Augmenting build dependencies.I intend to write a note in our documentation to explain this. I also plan to do another release in the near future, which will include Python3.13 on x86_x64 and will remove the issue of building
pythonSoftIOCitself completely. It will unfortunately not include ARM at this time due to a large number of issues encountered when trying to run the CI on those platforms.I'll leave this open until the docs are written.