-
Notifications
You must be signed in to change notification settings - Fork 11
Description
I was trying to use this layer to get an updated scipy and pyarrow (I have an older recipe for scipy but some features don't work on it so I wanted to see if a newer and hopefully better recipe would fix that), but I am having no luck getting it to compile.
Initially I get the error that gfortran version is unknown from python3-scipy-native. I fixed that by adding gfortran to HOSTTOOLS and installing it on the build machine. I didn't see this in the README so I am not convinced this is supposed to be needed nor that the host gfortran is necessarily compatible with the yocto build.
So the error I see is:
pybind11-config found: YES (/tmp/extreme-core-5.0/poky/build/tmp/work/core2-64-core-linux/python3-scipy/1.14.1/recipe-sysroot-native/usr/bin/pybind11-config) 2.12.0
| Run-time dependency pybind11 found: YES 2.12.0
| Program f2py found: YES (/tmp/extreme-core-5.0/poky/build/tmp/work/core2-64-core-linux/python3-scipy/1.14.1/recipe-sysroot-native/usr/bin/f2py)
|
| ../scipy-1.14.1/scipy/meson.build:156:15: ERROR: Command `/tmp/extreme-core-5.0/poky/build/tmp/work/core2-64-core-linux/python3-scipy/1.14.1/recipe-sysroot-native/usr/bin/f2py -v` failed with status 1.
|
| A full log can be found at /tmp/extreme-core-5.0/poky/build/tmp/work/core2-64-core-linux/python3-scipy/1.14.1/build/meson-logs/meson-log.txt
And looking at the meson-log.txt I have:
Traceback (most recent call last):
File "/tmp/extreme-core-5.0/poky/build/tmp/work/core2-64-core-linux/python3-scipy/1.14.1/recipe-sysroot-native/usr/bin/f2py", line 5, in <module>
from numpy.f2py.f2py2e import main
File "/tmp/extreme-core-5.0/poky/build/tmp/work/core2-64-core-linux/python3-scipy/1.14.1/recipe-sysroot-native/usr/lib/python3.12/site-packages/numpy/f2py/__init__.py", line 14, in <module>
import subprocess
File "/tmp/extreme-core-5.0/poky/build/tmp/work/core2-64-core-linux/python3-scipy/1.14.1/recipe-sysroot-native/usr/lib/python3.12/subprocess.py", line 49, in <module>
import signal
File "/tmp/extreme-core-5.0/poky/build/tmp/work/core2-64-core-linux/python3-scipy/1.14.1/scipy-1.14.1/scipy/signal/__init__.py", line 327, in <module>
from ._bsplines import *
File "/tmp/extreme-core-5.0/poky/build/tmp/work/core2-64-core-linux/python3-scipy/1.14.1/scipy-1.14.1/scipy/signal/_bsplines.py", line 11, in <module>
from ._signaltools import lfilter, sosfilt, lfiltic
File "/tmp/extreme-core-5.0/poky/build/tmp/work/core2-64-core-linux/python3-scipy/1.14.1/scipy-1.14.1/scipy/signal/_signaltools.py", line 14, in <module>
from scipy.spatial import cKDTree
File "/tmp/extreme-core-5.0/poky/build/tmp/work/core2-64-core-linux/python3-scipy/1.14.1/recipe-sysroot-native/usr/lib/python3.12/site-packages/scipy/spatial/__init__.py", line 110, in <module>
from ._kdtree import *
File "/tmp/extreme-core-5.0/poky/build/tmp/work/core2-64-core-linux/python3-scipy/1.14.1/recipe-sysroot-native/usr/lib/python3.12/site-packages/scipy/spatial/_kdtree.py", line 4, in <module>
from ._ckdtree import cKDTree, cKDTreeNode
File "_ckdtree.pyx", line 11, in init scipy.spatial._ckdtree
File "/tmp/extreme-core-5.0/poky/build/tmp/work/core2-64-core-linux/python3-scipy/1.14.1/recipe-sysroot-native/usr/lib/python3.12/site-packages/scipy/sparse/__init__.py", line 307, in <module>
from . import csgraph
File "/tmp/extreme-core-5.0/poky/build/tmp/work/core2-64-core-linux/python3-scipy/1.14.1/recipe-sysroot-native/usr/lib/python3.12/site-packages/scipy/sparse/csgraph/__init__.py", line 187, in <module>
from ._laplacian import laplacian
File "/tmp/extreme-core-5.0/poky/build/tmp/work/core2-64-core-linux/python3-scipy/1.14.1/recipe-sysroot-native/usr/lib/python3.12/site-packages/scipy/sparse/csgraph/_laplacian.py", line 7, in <module>
from scipy.sparse.linalg import LinearOperator
File "/tmp/extreme-core-5.0/poky/build/tmp/work/core2-64-core-linux/python3-scipy/1.14.1/recipe-sysroot-native/usr/lib/python3.12/site-packages/scipy/sparse/linalg/__init__.py", line 129, in <module>
from ._isolve import *
File "/tmp/extreme-core-5.0/poky/build/tmp/work/core2-64-core-linux/python3-scipy/1.14.1/recipe-sysroot-native/usr/lib/python3.12/site-packages/scipy/sparse/linalg/_isolve/__init__.py", line 4, in <module>
from .iterative import *
File "/tmp/extreme-core-5.0/poky/build/tmp/work/core2-64-core-linux/python3-scipy/1.14.1/recipe-sysroot-native/usr/lib/python3.12/site-packages/scipy/sparse/linalg/_isolve/iterative.py", line 5, in <module>
from scipy.linalg import get_lapack_funcs
File "/tmp/extreme-core-5.0/poky/build/tmp/work/core2-64-core-linux/python3-scipy/1.14.1/recipe-sysroot-native/usr/lib/python3.12/site-packages/scipy/linalg/__init__.py", line 203, in <module>
from ._misc import *
File "/tmp/extreme-core-5.0/poky/build/tmp/work/core2-64-core-linux/python3-scipy/1.14.1/recipe-sysroot-native/usr/lib/python3.12/site-packages/scipy/linalg/_misc.py", line 3, in <module>
from .blas import get_blas_funcs
File "/tmp/extreme-core-5.0/poky/build/tmp/work/core2-64-core-linux/python3-scipy/1.14.1/recipe-sysroot-native/usr/lib/python3.12/site-packages/scipy/linalg/blas.py", line 213, in <module>
from scipy.linalg import _fblas
ImportError: /tmp/extreme-core-5.0/poky/build/tmp/work/core2-64-core-linux/python3-scipy/1.14.1/recipe-sysroot-native/usr/lib/python3.12/site-packages/scipy/linalg/_fblas.cpython-312-x86_64-linux-gnu.so: undefined symbol: cspmv_
So my understanding is that it can't find one of the fortran symbols.
Switching from openblas to lapack (which is what I really would like since I am trying to get cvxpy working which seems to need scipy with lapack) I instead get this symbol missing:
Traceback (most recent call last):
File "/tmp/extreme-core-5.0/poky/build/tmp/work/core2-64-core-linux/python3-scipy/1.14.1/recipe-sysroot-native/usr/bin/f2py", line 5, in <module>
from numpy.f2py.f2py2e import main
File "/tmp/extreme-core-5.0/poky/build/tmp/work/core2-64-core-linux/python3-scipy/1.14.1/recipe-sysroot-native/usr/lib/python3.12/site-packages/numpy/f2py/__init__.py", line 14, in <module>
import subprocess
File "/tmp/extreme-core-5.0/poky/build/tmp/work/core2-64-core-linux/python3-scipy/1.14.1/recipe-sysroot-native/usr/lib/python3.12/subprocess.py", line 49, in <module>
import signal
File "/tmp/extreme-core-5.0/poky/build/tmp/work/core2-64-core-linux/python3-scipy/1.14.1/scipy-1.14.1/scipy/signal/__init__.py", line 327, in <module>
from ._bsplines import *
File "/tmp/extreme-core-5.0/poky/build/tmp/work/core2-64-core-linux/python3-scipy/1.14.1/scipy-1.14.1/scipy/signal/_bsplines.py", line 11, in <module>
from ._signaltools import lfilter, sosfilt, lfiltic
File "/tmp/extreme-core-5.0/poky/build/tmp/work/core2-64-core-linux/python3-scipy/1.14.1/scipy-1.14.1/scipy/signal/_signaltools.py", line 14, in <module>
from scipy.spatial import cKDTree
File "/tmp/extreme-core-5.0/poky/build/tmp/work/core2-64-core-linux/python3-scipy/1.14.1/recipe-sysroot-native/usr/lib/python3.12/site-packages/scipy/spatial/__init__.py", line 110, in <module>
from ._kdtree import *
File "/tmp/extreme-core-5.0/poky/build/tmp/work/core2-64-core-linux/python3-scipy/1.14.1/recipe-sysroot-native/usr/lib/python3.12/site-packages/scipy/spatial/_kdtree.py", line 4, in <module>
from ._ckdtree import cKDTree, cKDTreeNode
File "_ckdtree.pyx", line 11, in init scipy.spatial._ckdtree
File "/tmp/extreme-core-5.0/poky/build/tmp/work/core2-64-core-linux/python3-scipy/1.14.1/recipe-sysroot-native/usr/lib/python3.12/site-packages/scipy/sparse/__init__.py", line 307, in <module>
from . import csgraph
File "/tmp/extreme-core-5.0/poky/build/tmp/work/core2-64-core-linux/python3-scipy/1.14.1/recipe-sysroot-native/usr/lib/python3.12/site-packages/scipy/sparse/csgraph/__init__.py", line 187, in <module>
from ._laplacian import laplacian
File "/tmp/extreme-core-5.0/poky/build/tmp/work/core2-64-core-linux/python3-scipy/1.14.1/recipe-sysroot-native/usr/lib/python3.12/site-packages/scipy/sparse/csgraph/_laplacian.py", line 7, in <module>
from scipy.sparse.linalg import LinearOperator
File "/tmp/extreme-core-5.0/poky/build/tmp/work/core2-64-core-linux/python3-scipy/1.14.1/recipe-sysroot-native/usr/lib/python3.12/site-packages/scipy/sparse/linalg/__init__.py", line 130, in <module>
from ._dsolve import *
File "/tmp/extreme-core-5.0/poky/build/tmp/work/core2-64-core-linux/python3-scipy/1.14.1/recipe-sysroot-native/usr/lib/python3.12/site-packages/scipy/sparse/linalg/_dsolve/__init__.py", line 58, in <module>
from .linsolve import *
File "/tmp/extreme-core-5.0/poky/build/tmp/work/core2-64-core-linux/python3-scipy/1.14.1/recipe-sysroot-native/usr/lib/python3.12/site-packages/scipy/sparse/linalg/_dsolve/linsolve.py", line 11, in <module>
from . import _superlu
ImportError: /tmp/extreme-core-5.0/poky/build/tmp/work/core2-64-core-linux/python3-scipy/1.14.1/recipe-sysroot-native/usr/lib/python3.12/site-packages/scipy/sparse/linalg/_dsolve/_superlu.cpython-312-x86_64-linux-gnu.so: undefined symbol: dtrsm_
I thought maybe it was a problem with the build host (using opensuse 15.3) so I tried on Debian 12 (bookworm) instead to have more up to date host tools, but exact same errors there.
Did I just miss a setting somewhere? It seems I only ever hit these undefined symbol errors when trying to deal with scipy and it's fortran dependencies and it is not exactly easy to find anyone with any clues about what it's problem is.