[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