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

Reply via email to