Source: pyfftw Version: 0.10.4+dfsg1-3 Severity: normal pyFFTW provides a choice of different flavours of FFTW, i.e. double, single or long precision.
For instance nthreads_plan_setters is defined in pyfftw.pyx as an fftw_generic_plan_with_nthreads array with 3 entries: [0] = &fftw_plan_with_nthreads [1] = &fftwf_plan_with_nthreads [2] = &fftwl_plan_with_nthreads Each of these 3 references is a symbol provided by the appropriate variant of libfftw3*.so. The problem is that not all arches provide the fftwl long precision flavour from libfftw3l*.so. So when python-fftw tries to load, it fails with a warning like: Traceback (most recent call last): File "/usr/lib/python2.7/unittest/loader.py", line 254, in _find_tests module = self._get_module_from_name(name) File "/usr/lib/python2.7/unittest/loader.py", line 232, in _get_module_from_name __import__(name) File "test/test_pyfftw_multithreaded.py", line 35, in <module> from pyfftw import FFTW File "pyfftw/__init__.py", line 16, in <module> from .pyfftw import ( ImportError: pyfftw/pyfftw.so: undefined symbol: fftwl_plan_with_nthreads It should be possible for python-fftw to load and run on these arches, if the fftwl is only included conditionally in pyfftw.{c,pxd,pyx}. Can preprocessor #ifdef be used with cython/pyrex ? >From https://packages.debian.org/unstable/libfftw3-dev, the affected arches for which fftwl is not available are arm64 armel armhf mips mips64el mipsel ppc64el alpha hppa ia64 m68k ppc64 riscv64 sh4 sparc64 -- System Information: Debian Release: buster/sid APT prefers unstable APT policy: (500, 'unstable'), (1, 'experimental') Architecture: amd64 (x86_64) Foreign Architectures: i386 Kernel: Linux 4.16.0-2-amd64 (SMP w/4 CPU cores) Locale: LANG=en_AU.UTF-8, LC_CTYPE=en_AU.UTF-8 (charmap=UTF-8), LANGUAGE=en_AU.UTF-8 (charmap=UTF-8) Shell: /bin/sh linked to /bin/dash Init: systemd (via /run/systemd/system) LSM: AppArmor: enabled