Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Possibility of supporting epicscorelibs for PyPI uploaded wheels #80

Open
coretl opened this issue Dec 6, 2022 · 4 comments
Open

Possibility of supporting epicscorelibs for PyPI uploaded wheels #80

coretl opened this issue Dec 6, 2022 · 4 comments

Comments

@coretl
Copy link

coretl commented Dec 6, 2022

We're in the process of writing Ophyd.v2: bluesky/ophyd#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.

@sveseli
Copy link
Collaborator

sveseli commented Dec 7, 2022

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?

@coretl
Copy link
Author

coretl commented Dec 7, 2022

That would be perfect, thanks.

@sveseli
Copy link
Collaborator

sveseli commented Apr 3, 2023

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.

@mdavidsaver
Copy link
Member

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants