Possibility of supporting epicscorelibs for PyPI uploaded wheels
We're in the process of writing Ophyd.v2: https://github.com/bluesky/ophyd/pull/1078
The main aims are:
- Write Devices using asyncio logic
- Allow use of both CA and PVA in the same process
- Allow use of Ophyd.v1 and Ophyd.v2 in the same process
This gives me a bit of an issue. For asyncio compatible CA, I use aioca, which loads the libCom provided by epicscorelibs using ctypes. I can make the pyepics used by Ophyd.v1 use the same libCom with an environment variable. I can also use p4p (which is asyncio compatible) as it is compiled against epicscorelibs, but I can't use pvaPy because it bundles and compiles against its own libCom and friends. I can run pvaPy in a threadpool to make it asyncio compatible, although if you have plans to support asyncio natively that would be even better.
Would it be possible to make pvaPy compile against epicscorelibs when uploading to PyPI? Happy to have a zoom on this topic if this is helpful.
I will likely continue to use my own build of epics base, as it provides me with greater flexibility to include fixes between releases. However, I will look into allowing you to use different set of libraries via environment variable, like pyepics. Would that be acceptable?
That would be perfect, thanks.
Here is the list of libraries that get packaged with pvapy:
(base) bluegill2> conda list pvapy # packages in environment at /local/sveseli/CONDA/CONDA/libtest: # # Name Version Build Channel pvapy 5.3.0 pypi_0 pypi (base) bluegill2> ls libtest/lib/python3.10/site-packages/pvaccess/lib/linux-x86_64/lib*.so libtest/lib/python3.10/site-packages/pvaccess/lib/linux-x86_64/libboost_numpy310.so libtest/lib/python3.10/site-packages/pvaccess/lib/linux-x86_64/libboost_python310.so libtest/lib/python3.10/site-packages/pvaccess/lib/linux-x86_64/libca.so libtest/lib/python3.10/site-packages/pvaccess/lib/linux-x86_64/libCom.so libtest/lib/python3.10/site-packages/pvaccess/lib/linux-x86_64/libdbCore.so libtest/lib/python3.10/site-packages/pvaccess/lib/linux-x86_64/libdbRecStd.so libtest/lib/python3.10/site-packages/pvaccess/lib/linux-x86_64/libnt.so libtest/lib/python3.10/site-packages/pvaccess/lib/linux-x86_64/libpvAccessCA.so libtest/lib/python3.10/site-packages/pvaccess/lib/linux-x86_64/libpvAccessIOC.so libtest/lib/python3.10/site-packages/pvaccess/lib/linux-x86_64/libpvAccess.so libtest/lib/python3.10/site-packages/pvaccess/lib/linux-x86_64/libpvaClient.so libtest/lib/python3.10/site-packages/pvaccess/lib/linux-x86_64/libpvDatabase.so libtest/lib/python3.10/site-packages/pvaccess/lib/linux-x86_64/libpvData.so libtest/lib/python3.10/site-packages/pvaccess/lib/linux-x86_64/libqsrv.so
Here is the list of libraries that get packaged with epicscorelibs:
(base) bluegill2> conda list epicscorelibs # packages in environment at /local/sveseli/CONDA/CONDA/libtest: # # Name Version Build Channel epicscorelibs 7.0.7.99.0.0 pypi_0 pypi (base) bluegill2> ls libtest/lib/python3.10/site-packages/epicscorelibs/lib/*.so libtest/lib/python3.10/site-packages/epicscorelibs/lib/libca.so libtest/lib/python3.10/site-packages/epicscorelibs/lib/libCom.so libtest/lib/python3.10/site-packages/epicscorelibs/lib/libdbCore.so libtest/lib/python3.10/site-packages/epicscorelibs/lib/libdbRecStd.so libtest/lib/python3.10/site-packages/epicscorelibs/lib/libpvAccessCA.so libtest/lib/python3.10/site-packages/epicscorelibs/lib/libpvAccessIOC.so libtest/lib/python3.10/site-packages/epicscorelibs/lib/libpvAccess.so libtest/lib/python3.10/site-packages/epicscorelibs/lib/libpvData.so libtest/lib/python3.10/site-packages/epicscorelibs/lib/libqsrv.so
It looks like epicscorelibs does not package libraries for pvDatabase, pvaClient, normative types, that are all required by pvapy.
It looks like epicscorelibs does not package libraries for pvDatabase, pvaClient, normative types, that are all required by pvapy.
Prior to epicscorelibs==7.0.3.99.4.0 the pva2pva module was not included. Likewise the other pv* modules can be added to the build for future releases. Especially if you, or someone else at APS, helps with the work.