[MacPorts] #71272: legacy-support breaks a valid code: error: no match for 'operator*' (operand types are 'double' and 'std::complex<float>')

MacPorts noreply at macports.org
Sun Nov 10 04:28:51 UTC 2024


#71272: legacy-support breaks a valid code: error: no match for 'operator*'
(operand types are 'double' and 'std::complex<float>')
--------------------------+----------------------------------
 Reporter:  barracuda156  |      Owner:  (none)
     Type:  defect        |     Status:  new
 Priority:  Normal        |  Milestone:
Component:  ports         |    Version:  2.10.4
 Keywords:                |       Port:  legacy-support-devel
--------------------------+----------------------------------
 Take a look at this issue with `scipy`:
 https://github.com/scipy/scipy/issues/21826

 Wasting a lot of time, both of `scipy` upstream and my own, I finally dug
 this out: it is `legacysupport` breaking this.
 Specifically, identical command errs out with `legacysupport` headers, but
 compiles normally without it:
 {{{
 36-50% sudo   /opt/local/bin/g++-mp-14 -I/opt/local/include/LegacySupport
 -Iscipy/special/_special_ufuncs.cpython-311-darwin.so.p -Iscipy/special
 -I../scipy/special -Iscipy/_lib -I../scipy/_lib
 -I../scipy/_build_utils/src
 -I../../../../../../../../Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11
 /site-packages/numpy/core/include
 -I/opt/local/Library/Frameworks/Python.framework/Versions/3.11/include/python3.11
 -fvisibility=hidden -fvisibility-inlines-hidden -fdiagnostics-color=always
 -DNDEBUG -Wall -Winvalid-pch -std=gnu++17 -O3 -D_GLIBCXX_USE_CXX11_ABI=0
 -isysroot/ -DSP_SPECFUN_ERROR -DNPY_NO_DEPRECATED_API=NPY_1_9_API_VERSION
 -MD -MQ
 scipy/special/_special_ufuncs.cpython-311-darwin.so.p/_special_ufuncs.cpp.o
 -MF
 scipy/special/_special_ufuncs.cpython-311-darwin.so.p/_special_ufuncs.cpp.o.d
 -o
 scipy/special/_special_ufuncs.cpython-311-darwin.so.p/_special_ufuncs.cpp.o
 -c ../scipy/special/_special_ufuncs.cpp
 In file included from ../scipy/special/special/specfun.h:4,
                  from ../scipy/special/special.h:6,
                  from ../scipy/special/_special_ufuncs.cpp:7:
 ../scipy/special/special/specfun/specfun.h: In instantiation of
 'std::complex<_Tp> special::specfun::e1z(std::complex<_Tp>) [with T =
 float]':
 ../scipy/special/special/expint.h:17:40:   required from
 'std::complex<_Tp> special::exp1(std::complex<_Tp>) [with T = float]'
    17 |     std::complex<T> outz = specfun::e1z(z);
       |                            ~~~~~~~~~~~~^~~
 ../scipy/special/_special_ufuncs.cpp:304:47:   required from here
   304 |          static_cast<func_F_F_t>(special::exp1),
 static_cast<func_D_D_t>(special::exp1)},
       |                                               ^
 ../scipy/special/special/specfun/specfun.h:2099:70: error: no match for
 'operator*' (operand types are 'double' and 'std::complex<float>')
  2099 |             ce1 = -el - std::log(-z) + z*ce1 - copysign(pi,
 z.imag())*std::complex<T>(0.0, 1.0);
       |
 ~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~
 In file included from ../scipy/special/special/error.h:27,
                  from ../scipy/special/sf_error_state.h:4,
                  from ../scipy/special/sf_error.h:3,
                  from ../scipy/special/ufunc.h:17,
                  from ../scipy/special/_special_ufuncs.cpp:1:
 /opt/local/include/gcc14/c++/complex:400:5: note: candidate:
 'template<class _Tp> std::complex<_Tp> std::operator*(const complex<_Tp>&,
 const complex<_Tp>&)'
   400 |     operator*(const complex<_Tp>& __x, const complex<_Tp>& __y)
       |     ^~~~~~~~
 /opt/local/include/gcc14/c++/complex:400:5: note:   template argument
 deduction/substitution failed:
 ../scipy/special/special/specfun/specfun.h:2099:70: note:   mismatched
 types 'const std::complex<_Tp>' and 'double'
  2099 |             ce1 = -el - std::log(-z) + z*ce1 - copysign(pi,
 z.imag())*std::complex<T>(0.0, 1.0);
       |
 ~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~
 /opt/local/include/gcc14/c++/complex:409:5: note: candidate:
 'template<class _Tp> std::complex<_Tp> std::operator*(const complex<_Tp>&,
 const _Tp&)'
   409 |     operator*(const complex<_Tp>& __x, const _Tp& __y)
       |     ^~~~~~~~
 /opt/local/include/gcc14/c++/complex:409:5: note:   template argument
 deduction/substitution failed:
 ../scipy/special/special/specfun/specfun.h:2099:70: note:   mismatched
 types 'const std::complex<_Tp>' and 'double'
  2099 |             ce1 = -el - std::log(-z) + z*ce1 - copysign(pi,
 z.imag())*std::complex<T>(0.0, 1.0);
       |
 ~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~
 /opt/local/include/gcc14/c++/complex:418:5: note: candidate:
 'template<class _Tp> std::complex<_Tp> std::operator*(const _Tp&, const
 complex<_Tp>&)'
   418 |     operator*(const _Tp& __x, const complex<_Tp>& __y)
       |     ^~~~~~~~
 /opt/local/include/gcc14/c++/complex:418:5: note:   template argument
 deduction/substitution failed:
 ../scipy/special/special/specfun/specfun.h:2099:70: note:   deduced
 conflicting types for parameter '_Tp' ('double' and 'float')
  2099 |             ce1 = -el - std::log(-z) + z*ce1 - copysign(pi,
 z.imag())*std::complex<T>(0.0, 1.0);
       |
 ~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~
 36-50% sudo   /opt/local/bin/g++-mp-14
 -Iscipy/special/_special_ufuncs.cpython-311-darwin.so.p -Iscipy/special
 -I../scipy/special -Iscipy/_lib -I../scipy/_lib
 -I../scipy/_build_utils/src
 -I../../../../../../../../Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11
 /site-packages/numpy/core/include
 -I/opt/local/Library/Frameworks/Python.framework/Versions/3.11/include/python3.11
 -fvisibility=hidden -fvisibility-inlines-hidden -fdiagnostics-color=always
 -DNDEBUG -Wall -Winvalid-pch -std=gnu++17 -O3 -D_GLIBCXX_USE_CXX11_ABI=0
 -isysroot/ -DSP_SPECFUN_ERROR -DNPY_NO_DEPRECATED_API=NPY_1_9_API_VERSION
 -MD -MQ
 scipy/special/_special_ufuncs.cpython-311-darwin.so.p/_special_ufuncs.cpp.o
 -MF
 scipy/special/_special_ufuncs.cpython-311-darwin.so.p/_special_ufuncs.cpp.o.d
 -o
 scipy/special/_special_ufuncs.cpython-311-darwin.so.p/_special_ufuncs.cpp.o
 -c ../scipy/special/_special_ufuncs.cpp

 36-50%
 }}}

 Since `spicy` port uses `legacysupport` PG, it gets passed via
 environment, and that breaks the build here.

-- 
Ticket URL: <https://trac.macports.org/ticket/71272>
MacPorts <https://www.macports.org/>
Ports system for macOS


More information about the macports-tickets mailing list