Closed daltonv closed 1 week ago
I think I found the issue. Numpy released 2.0.0 a few weeks ago and it really does make a breaking change to the PyArray_Descr
struct.
The pyproject.toml
file does NOT pin the version of numpy in the build dependencies. This seems like it would be an issue for all arches but probably went unnoticed because prebuilt wheels are shipped for other arches.
Looks like this does really only affect arm wheel builds. While they still get numpy 2.0.0 for a build dep cython is generating c code differently that does not access the non-existent member of PyArray_Descr
.
The release of Numpy 2 is definitely causing issues. Our wheels built with numpy 1.x do not run with numpy 2.x. We distribute the cython generated .c
in our source distributions, which was the standard recommendation to avoid requiring cython on package install. Unfortunately, the .c
generated for numpy 1 is not compatible with numpy 2. While pyjls
pins numpy 1, neither pyjoulescope_driver or joulescope do.
For now, you can try to manually install numpy 1.26.4:
pip install numpy==1.26
Does this work around the issue for now?
That does not fix the issue. python already installs 1.26.4, but the build dependency is a separate install just inside the temporary build folder. I'm not sure I can force pip to use a specific version at that stage.
Ah it works if I run pip with the --no-build-isolation
. I just need to manually install numpy
and wheel
I am also working to create releases of pyjls 0.9.6, pyjoulescope_driver 1.5.4, and joulescope 1.1.15 that all have the numpy version pinned to < 2. This will at least give us time to figure out a proper way to handle this numpy dependency challenge.
pyjls and pyjoulescope_driver are done. We just need to wait on the GitHub Action for the joulescope build: https://github.com/jetperch/pyjoulescope/actions/runs/9712756076
It publishes to pypi automatically, so it should just work once the GitHub Action completes.
The build completed, so you should automatically get 1.5.4 with numpy < 2. Does the joulescope
package now build correctly on linux aarch64 for you?
My build just finished. Everything is working again. Thanks for the super quick fix!
I am building a docker targeting arm64 systems and recently joulescope stop building correctly.
I am installing pyjoulescope v1.1.14 and I get the following error:
I'm guessing this is due to some dependency change with either numpy or gcc.