Building pythonSoftIOC with uv

There are some issues when using the uv tool to build pythonSoftIOC, which may happen if you try and use this package on an architecture or Python version where we do not supply pre-built wheels.

If you see an ImportError that looks like this when running your application:

src/techui_builder/builder.py:13: in <module>
    from softioc.builder import records
/cache/venv-for/scratch/eyh46967/dev/temp/techui-builder/lib/python3.13/site-packages/softioc/__init__.py:14: in <module>
    from .imports import dbLoadDatabase, registerRecordDeviceDriver
/cache/venv-for/scratch/eyh46967/dev/temp/techui-builder/lib/python3.13/site-packages/softioc/imports.py:10: in <module>
    from . import _extension
E   ImportError: libdbCore.so.7.0.10.99.0: cannot open shared object file: No such file or directory

Then you need to add these lines to your pyproject.toml file:

[tool.uv.extra-build-dependencies]
softioc = [{ requirement = "epicscorelibs", match-runtime = true }]

This will tell uv to do additional dependency checking between build-time and run-time environments, ensuring the same version of epicscorelibs is used in both.

See discussion in uv issue #17378.