🌐 AI搜索 & 代理 主页
Skip to content

BUG: 2.3.3 fails to build on powerpc: _pocketfft_umath.cpp: error: no matches converting function 'wrap_legacy_cpp_ufunc' to type 'PyUFuncGenericFunction' #29758

@barracuda156

Description

@barracuda156

Describe the issue:

There is some problem with wrap_legacy_cpp_ufunc, if does not work as expected. The build fails on _pocketfft_umath.cpp source:

../numpy/fft/_pocketfft_umath.cpp:300:1: error: no matches converting function 'wrap_legacy_cpp_ufunc' to type 'PyUFuncGenericFunction' {aka 'void (*)(char**, const long int*, const long int*, void*)'}
  300 | };
      | ^
../numpy/fft/_pocketfft_umath.cpp:34:1: note: candidate is: 'template<void (* cpp_ufunc)(char**, const npy_intp*, const npy_intp*, void*)> void wrap_legacy_cpp_ufunc(char**, const npy_intp*, const ptrdiff_t*, void*)'
   34 | wrap_legacy_cpp_ufunc(char **args, npy_intp const *dimensions,
      | ^~~~~~~~~~~~~~~~~~~~~

etc., see the log below.

Reproduce the code example:

sudo port -v build py313-numpy

Error message:

FAILED: [code=1] numpy/fft/_pocketfft_umath.cpython-313-darwin.so.p/_pocketfft_umath.cpp.o 
/opt/local/bin/g++-mp-14 -Inumpy/fft/_pocketfft_umath.cpython-313-darwin.so.p -Inumpy/fft -I../numpy/fft -Inumpy/_core -I../numpy/_core -Inumpy/_core/include -I../numpy/_core/include -I../numpy/_core/src/common -I/opt/local/Library/Frameworks/Python.framework/Versions/3.13/include/python3.13 -I/opt/local/var/macports/build/py313-numpy-1045fbe6/work/numpy-2.3.3/build/meson_cpu -fvisibility=hidden -fvisibility-inlines-hidden -fdiagnostics-color=always -DNDEBUG -Wall -Winvalid-pch -std=c++17 -O3 -Os -arch ppc -D_GLIBCXX_USE_CXX11_ABI=0 -isysroot/ -MD -MQ numpy/fft/_pocketfft_umath.cpython-313-darwin.so.p/_pocketfft_umath.cpp.o -MF numpy/fft/_pocketfft_umath.cpython-313-darwin.so.p/_pocketfft_umath.cpp.o.d -o numpy/fft/_pocketfft_umath.cpython-313-darwin.so.p/_pocketfft_umath.cpp.o -c ../numpy/fft/_pocketfft_umath.cpp
../numpy/fft/_pocketfft_umath.cpp:300:1: error: no matches converting function 'wrap_legacy_cpp_ufunc' to type 'PyUFuncGenericFunction' {aka 'void (*)(char**, const long int*, const long int*, void*)'}
  300 | };
      | ^
../numpy/fft/_pocketfft_umath.cpp:34:1: note: candidate is: 'template<void (* cpp_ufunc)(char**, const npy_intp*, const npy_intp*, void*)> void wrap_legacy_cpp_ufunc(char**, const npy_intp*, const ptrdiff_t*, void*)'
   34 | wrap_legacy_cpp_ufunc(char **args, npy_intp const *dimensions,
      | ^~~~~~~~~~~~~~~~~~~~~
../numpy/fft/_pocketfft_umath.cpp:300:1: error: no matches converting function 'wrap_legacy_cpp_ufunc' to type 'PyUFuncGenericFunction' {aka 'void (*)(char**, const long int*, const long int*, void*)'}
  300 | };
      | ^
../numpy/fft/_pocketfft_umath.cpp:34:1: note: candidate is: 'template<void (* cpp_ufunc)(char**, const npy_intp*, const npy_intp*, void*)> void wrap_legacy_cpp_ufunc(char**, const npy_intp*, const ptrdiff_t*, void*)'
   34 | wrap_legacy_cpp_ufunc(char **args, npy_intp const *dimensions,
      | ^~~~~~~~~~~~~~~~~~~~~
../numpy/fft/_pocketfft_umath.cpp:300:1: error: no matches converting function 'wrap_legacy_cpp_ufunc' to type 'PyUFuncGenericFunction' {aka 'void (*)(char**, const long int*, const long int*, void*)'}
  300 | };
      | ^
../numpy/fft/_pocketfft_umath.cpp:34:1: note: candidate is: 'template<void (* cpp_ufunc)(char**, const npy_intp*, const npy_intp*, void*)> void wrap_legacy_cpp_ufunc(char**, const npy_intp*, const ptrdiff_t*, void*)'
   34 | wrap_legacy_cpp_ufunc(char **args, npy_intp const *dimensions,
      | ^~~~~~~~~~~~~~~~~~~~~
../numpy/fft/_pocketfft_umath.cpp:321:1: error: no matches converting function 'wrap_legacy_cpp_ufunc' to type 'PyUFuncGenericFunction' {aka 'void (*)(char**, const long int*, const long int*, void*)'}
  321 | };
      | ^
../numpy/fft/_pocketfft_umath.cpp:34:1: note: candidate is: 'template<void (* cpp_ufunc)(char**, const npy_intp*, const npy_intp*, void*)> void wrap_legacy_cpp_ufunc(char**, const npy_intp*, const ptrdiff_t*, void*)'
   34 | wrap_legacy_cpp_ufunc(char **args, npy_intp const *dimensions,
      | ^~~~~~~~~~~~~~~~~~~~~
../numpy/fft/_pocketfft_umath.cpp:321:1: error: no matches converting function 'wrap_legacy_cpp_ufunc' to type 'PyUFuncGenericFunction' {aka 'void (*)(char**, const long int*, const long int*, void*)'}
  321 | };
      | ^
../numpy/fft/_pocketfft_umath.cpp:34:1: note: candidate is: 'template<void (* cpp_ufunc)(char**, const npy_intp*, const npy_intp*, void*)> void wrap_legacy_cpp_ufunc(char**, const npy_intp*, const ptrdiff_t*, void*)'
   34 | wrap_legacy_cpp_ufunc(char **args, npy_intp const *dimensions,
      | ^~~~~~~~~~~~~~~~~~~~~
../numpy/fft/_pocketfft_umath.cpp:321:1: error: no matches converting function 'wrap_legacy_cpp_ufunc' to type 'PyUFuncGenericFunction' {aka 'void (*)(char**, const long int*, const long int*, void*)'}
  321 | };
      | ^
../numpy/fft/_pocketfft_umath.cpp:34:1: note: candidate is: 'template<void (* cpp_ufunc)(char**, const npy_intp*, const npy_intp*, void*)> void wrap_legacy_cpp_ufunc(char**, const npy_intp*, const ptrdiff_t*, void*)'
   34 | wrap_legacy_cpp_ufunc(char **args, npy_intp const *dimensions,
      | ^~~~~~~~~~~~~~~~~~~~~
../numpy/fft/_pocketfft_umath.cpp:326:1: error: no matches converting function 'wrap_legacy_cpp_ufunc' to type 'PyUFuncGenericFunction' {aka 'void (*)(char**, const long int*, const long int*, void*)'}
  326 | };
      | ^
../numpy/fft/_pocketfft_umath.cpp:34:1: note: candidate is: 'template<void (* cpp_ufunc)(char**, const npy_intp*, const npy_intp*, void*)> void wrap_legacy_cpp_ufunc(char**, const npy_intp*, const ptrdiff_t*, void*)'
   34 | wrap_legacy_cpp_ufunc(char **args, npy_intp const *dimensions,
      | ^~~~~~~~~~~~~~~~~~~~~
../numpy/fft/_pocketfft_umath.cpp:326:1: error: no matches converting function 'wrap_legacy_cpp_ufunc' to type 'PyUFuncGenericFunction' {aka 'void (*)(char**, const long int*, const long int*, void*)'}
  326 | };
      | ^
../numpy/fft/_pocketfft_umath.cpp:34:1: note: candidate is: 'template<void (* cpp_ufunc)(char**, const npy_intp*, const npy_intp*, void*)> void wrap_legacy_cpp_ufunc(char**, const npy_intp*, const ptrdiff_t*, void*)'
   34 | wrap_legacy_cpp_ufunc(char **args, npy_intp const *dimensions,
      | ^~~~~~~~~~~~~~~~~~~~~
../numpy/fft/_pocketfft_umath.cpp:326:1: error: no matches converting function 'wrap_legacy_cpp_ufunc' to type 'PyUFuncGenericFunction' {aka 'void (*)(char**, const long int*, const long int*, void*)'}
  326 | };
      | ^
../numpy/fft/_pocketfft_umath.cpp:34:1: note: candidate is: 'template<void (* cpp_ufunc)(char**, const npy_intp*, const npy_intp*, void*)> void wrap_legacy_cpp_ufunc(char**, const npy_intp*, const ptrdiff_t*, void*)'
   34 | wrap_legacy_cpp_ufunc(char **args, npy_intp const *dimensions,
      | ^~~~~~~~~~~~~~~~~~~~~
../numpy/fft/_pocketfft_umath.cpp:337:1: error: no matches converting function 'wrap_legacy_cpp_ufunc' to type 'PyUFuncGenericFunction' {aka 'void (*)(char**, const long int*, const long int*, void*)'}
  337 | };
      | ^
../numpy/fft/_pocketfft_umath.cpp:34:1: note: candidate is: 'template<void (* cpp_ufunc)(char**, const npy_intp*, const npy_intp*, void*)> void wrap_legacy_cpp_ufunc(char**, const npy_intp*, const ptrdiff_t*, void*)'
   34 | wrap_legacy_cpp_ufunc(char **args, npy_intp const *dimensions,
      | ^~~~~~~~~~~~~~~~~~~~~
../numpy/fft/_pocketfft_umath.cpp:337:1: error: no matches converting function 'wrap_legacy_cpp_ufunc' to type 'PyUFuncGenericFunction' {aka 'void (*)(char**, const long int*, const long int*, void*)'}
  337 | };
      | ^
../numpy/fft/_pocketfft_umath.cpp:34:1: note: candidate is: 'template<void (* cpp_ufunc)(char**, const npy_intp*, const npy_intp*, void*)> void wrap_legacy_cpp_ufunc(char**, const npy_intp*, const ptrdiff_t*, void*)'
   34 | wrap_legacy_cpp_ufunc(char **args, npy_intp const *dimensions,
      | ^~~~~~~~~~~~~~~~~~~~~
../numpy/fft/_pocketfft_umath.cpp:337:1: error: no matches converting function 'wrap_legacy_cpp_ufunc' to type 'PyUFuncGenericFunction' {aka 'void (*)(char**, const long int*, const long int*, void*)'}
  337 | };
      | ^
../numpy/fft/_pocketfft_umath.cpp:34:1: note: candidate is: 'template<void (* cpp_ufunc)(char**, const npy_intp*, const npy_intp*, void*)> void wrap_legacy_cpp_ufunc(char**, const npy_intp*, const ptrdiff_t*, void*)'
   34 | wrap_legacy_cpp_ufunc(char **args, npy_intp const *dimensions,
      | ^~~~~~~~~~~~~~~~~~~~~
../numpy/fft/_pocketfft_umath.cpp: In instantiation of 'void irfft_loop(char**, const npy_intp*, const npy_intp*, void*) [with T = double; npy_intp = long int]':
../numpy/fft/_pocketfft_umath.cpp:337:1:   required from here
  337 | };
      | ^
../numpy/fft/_pocketfft_umath.cpp:236:12: warning: unused variable 'npts_in' [-Wunused-variable]
  236 |     size_t npts_in = nout / 2 + 1;
      |            ^~~~~~~
../numpy/fft/_pocketfft_umath.cpp: In instantiation of 'void irfft_loop(char**, const npy_intp*, const npy_intp*, void*) [with T = float; npy_intp = long int]':
../numpy/fft/_pocketfft_umath.cpp:337:1:   required from here
  337 | };
      | ^
../numpy/fft/_pocketfft_umath.cpp:236:12: warning: unused variable 'npts_in' [-Wunused-variable]
  236 |     size_t npts_in = nout / 2 + 1;
      |            ^~~~~~~
../numpy/fft/_pocketfft_umath.cpp: In instantiation of 'void irfft_loop(char**, const npy_intp*, const npy_intp*, void*) [with T = long double; npy_intp = long int]':
../numpy/fft/_pocketfft_umath.cpp:337:1:   required from here
  337 | };
      | ^
../numpy/fft/_pocketfft_umath.cpp:236:12: warning: unused variable 'npts_in' [-Wunused-variable]
  236 |     size_t npts_in = nout / 2 + 1;
      |            ^~~~~~~
[259/316] Compiling C++ object numpy/linalg/_umath_linalg.cpython-313-darwin.so.p/umath_linalg.cpp.o
[260/316] Compiling C object numpy/_core/libloops_autovec.dispatch.h_baseline.a.p/meson-generated_loops_autovec.dispatch.c.o
[261/316] Compiling C object numpy/random/_common.cpython-313-darwin.so.p/meson-generated_numpy_random__common.pyx.c.o
[262/316] Compiling C object numpy/random/_bounded_integers.cpython-313-darwin.so.p/meson-generated_numpy_random__bounded_integers.pyx.c.o
[263/316] Compiling C object numpy/_core/_multiarray_umath.cpython-313-darwin.so.p/meson-generated_lowlevel_strided_loops.c.o
ninja: build stopped: subcommand failed.

ERROR Backend subprocess exited when trying to invoke build_wheel
Command failed:  cd "/opt/local/var/macports/build/py313-numpy-1045fbe6/work/numpy-2.3.3" && /opt/local/Library/Frameworks/Python.framework/Versions/3.13/bin/python3.13 -m build --no-isolation --wheel --outdir /opt/local/var/macports/build/py313-numpy-1045fbe6/work -Cbuild-dir=build -Csetup-args=-Dallow-noblas=false -Csetup-args=-Dblas=openblas -Csetup-args=-Dlapack=openblas -Csetup-args=-Dpkg_config_path=/opt/local/lib/pkgconfig 
Exit code: 1

Python and NumPy Versions:

python 3.13.7
numpy 2.3.3

Runtime Environment:

No response

Context for the issue:

MacPorts is planning to update numpy from 1.x to 2.x this month, it is important to keep numpy working across all supported systems (which include powerpc as well).

P. S. The issue might also affect *BSD and/or Linux on powerpc, but I cannot test it.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions