-
Notifications
You must be signed in to change notification settings - Fork 15
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
Shared library problems #53
Comments
ohhhh, you're running on centos. Yeah, support for centos has been very hard, and I suspect that's the actual issue here. I can try to take a crack at it on O2... but in general, haven't been developing there. |
Gotcha. I can believe that the undefined symbols (problem 2) is probably entirely a CentOS issue. I was hoping that installing all the relevant libraries (gcc, libstdcxx-ng, etc.) into a virtualenv from conda-forge would offer a way around the issue, if I can find the right versions of everything. This does appear to have been possible, at least a couple years ago. Some googling turned up:
It would be nice to have it build on O2, since that's where all my big ND2 files are (and where I can run dask distributed). I'm assuming the way to go about doing this is:
It's less obvious to me why CentOS would cause the SDK .so files to be not installed at all (problem 1). I'm very confused by this and don't know quite how to attack it. |
If you (or anyone) wants to dig into this, I think digging through the logs for the successful centos builds using the conda-forge CI would be a good start. The last one is here: https://dev.azure.com/conda-forge/feedstock-builds/_build/results?buildId=474173&view=results note the build & host requirements in the recipe ... Note that most of the difficulty here comes from the fact that we're using precompiled sdk shared library files provided by LIM ... so library linking and dependencies is more complicated as a result |
Finally got around to playing around with this more. I can run pytest locally on O2 with nd2 from conda-forge with all tests passing, and I can build nd2 on O2 and get all tests to pass except those in Building locally
This gives 512 errors, all of them either
Using the conda-forge buildTo determine whether this is a compile-time or run-time problem, I want to verify that the conda-forge version passes all tests when running on CentOS (it does):
gives
|
this is what I just fixed in #55 are you by chance using a |
Oh, I'm an idiot. All tests pass. Thanks Talley! |
Nice! That was easy 😂 |
Description
I think I am running into two separate issues:
pip install
orpip install -e
, the shared library is not installed correctly (related to Linux library paths for libnd2readsdk-shared.so not set correctly on install #24).pytest
from the root of the repo, to work around the previous problem,liblimfile.so
complains about undefined symbols.I spent a couple hours playing around and am rapidly running against the limits of my understanding of modern Python packaging, so any assistance or hints you could provide @tlambert03 would be much appreciated!
What I Did
(installing gcc in the virtualenv is necessary because the default gcc on HMS O2 is ancient)
If I then run
pytest
from the root of the repo, I get the errorIf I then
pip install aicsimageio
and re-runpytest
:From the root of the repo, if I run
python -c "from nd2._sdk import latest"
, I get:If I cd outside the repo, the same command gives:
I was thinking this had something to do with the editable pip install, so I tried installing via
pip install .[dev]
(no-e
). This produces the same results as above. Here's a clue:find /home/jqs1/mambaforge/envs/nd2test/lib/python3.10/site-packages/nd2/ -name "*.so"
givesNamely, the Nikon SDK shared libraries (
liblimfile.so
andlibnd2readsdk-shared.so
) aren't even being installed. I noticed that the paths inMANIFEST.in
are wrong. I believeshould be
Unfortunately, this change does not appear to fix this problem, the Nikon shared libraries are still not installed.
The text was updated successfully, but these errors were encountered: