Fails install with all requirements met
Hi,
I'm trying to get this installed, but I'm met with the errors listed below. I've downgrade my Cython installation to meet all the requirements, with the following versions:
- SymEngine version (commit hash) - 253bf6b393cdb6207551dd1525ec6ba0cc4ab5eb, as stated in the symengine_version.txt in the project's root
- Cython version - 0.20.1
- CMake version - 3.6.1
Are there any extra steps that may be necessary or perhaps stricter versions of certain tooling being required than currently stated on the README page? Thanks.
/home/<username>/programs/symengine.py/symengine/lib/symengine_wrapper.cpp: In function ‘int __pyx_pf_9symengine_3lib_17symengine_wrapper_8RealMPFR_2__cinit__(__pyx_obj_9symengine_3lib_17symengine_wrapper_RealMPFR*, PyObject*, long int, uns
igned int)’:
/home/<username>/programs/symengine.py/symengine/lib/symengine_wrapper.cpp:20008:3: error: ‘mpfr_class’ is not a member of ‘SymEngine’
SymEngine::mpfr_class __pyx_v_m;
^~~~~~~~~
/home/<username>/programs/symengine.py/symengine/lib/symengine_wrapper.cpp:20075:3: error: ‘__pyx_v_m’ was not declared in this scope
__pyx_v_m = SymEngine::mpfr_class(__pyx_v_i_, __pyx_v_prec, __pyx_v_base);
^~~~~~~~~
/home/<username>/programs/symengine.py/symengine/lib/symengine_wrapper.cpp:20075:15: error: ‘mpfr_class’ is not a member of ‘SymEngine’
__pyx_v_m = SymEngine::mpfr_class(__pyx_v_i_, __pyx_v_prec, __pyx_v_base);
^~~~~~~~~
/home/<username>/programs/symengine.py/symengine/lib/symengine_wrapper.cpp:20084:133: error: ‘real_mpfr’ is not a member of ‘SymEngine’
__pyx_v_self->__pyx_base.__pyx_base.thisptr = ((SymEngine::RCP<SymEngine::Basic const >)((SymEngine::RCP<SymEngine::Basic const >)SymEngine::real_mpfr(std::move(__pyx_v_m))));
^~~~~~~~~
/home/<username>/programs/symengine.py/symengine/lib/symengine_wrapper.cpp: In function ‘PyObject* __pyx_pf_9symengine_3lib_17symengine_wrapper_8RealMPFR_4get_prec(__pyx_obj_9symengine_3lib_17symengine_wrapper_RealMPFR*)’:
/home/<username>/programs/symengine.py/symengine/lib/symengine_wrapper.cpp:20146:191: error: ‘const class SymEngine::RealMPFR’ has no member named ‘get_prec’; did you mean ‘get_args’?
__pyx_t_1 = __Pyx_PyInt_From_mpfr_prec_t((*SymEngine::rcp_static_cast<const SymEngine::RealMPFR>(((SymEngine::RCP<SymEngine::Basic const > &)__pyx_v_self->__pyx_base.__pyx_base.thisptr))).get_prec()); if (unlikely(!__pyx_t_1)) {__pyx_f
ilename = __pyx_f[0]; __pyx_lineno = 880; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
^~~~~~~~
/home/<username>/programs/symengine.py/symengine/lib/symengine_wrapper.cpp: In function ‘PyObject* __pyx_pf_9symengine_3lib_17symengine_wrapper_8RealMPFR_6_sympy_(__pyx_obj_9symengine_3lib_17symengine_wrapper_RealMPFR*)’:
/home/<username>/programs/symengine.py/symengine/lib/symengine_wrapper.cpp:20237:166: error: ‘const class SymEngine::RealMPFR’ has no member named ‘get_prec’; did you mean ‘get_args’?
__pyx_v_prec_ = (*SymEngine::rcp_static_cast<const SymEngine::RealMPFR>(((SymEngine::RCP<SymEngine::Basic const > &)__pyx_v_self->__pyx_base.__pyx_base.thisptr))).get_prec();
^~~~~~~~
/home/<username>/programs/symengine.py/symengine/lib/symengine_wrapper.cpp: In function ‘PyObject* __pyx_pf_9symengine_3lib_17symengine_wrapper_88eval_mpfr(PyObject*, PyObject*, long int)’:
/home/<username>/programs/symengine.py/symengine/lib/symengine_wrapper.cpp:45554:3: error: ‘mpfr_class’ is not a member of ‘SymEngine’
SymEngine::mpfr_class __pyx_v_a;
^~~~~~~~~
/home/<username>/programs/symengine.py/symengine/lib/symengine_wrapper.cpp:45594:3: error: ‘__pyx_v_a’ was not declared in this scope
__pyx_v_a = SymEngine::mpfr_class(__pyx_v_prec);
^~~~~~~~~
/home/<username>/programs/symengine.py/symengine/lib/symengine_wrapper.cpp:45594:15: error: ‘mpfr_class’ is not a member of ‘SymEngine’
__pyx_v_a = SymEngine::mpfr_class(__pyx_v_prec);
^~~~~~~~~
/home/<username>/programs/symengine.py/symengine/lib/symengine_wrapper.cpp:45604:5: error: ‘eval_mpfr’ is not a member of ‘SymEngine’
SymEngine::eval_mpfr(__pyx_v_a.get_mpfr_t(), (*__pyx_v_X->thisptr), MPFR_RNDN);
/home/<username>/programs/symengine.py/symengine/lib/symengine_wrapper.cpp:45618:148: error: ‘real_mpfr’ is not a member of ‘SymEngine’
__pyx_t_3 = __pyx_f_9symengine_3lib_17symengine_wrapper_c2py(((SymEngine::RCP<SymEngine::Basic const >)((SymEngine::RCP<SymEngine::Basic const >)SymEngine::real_mpfr(std::move(__pyx_v_a))))); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2150; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
^~~~~~~~~
/home/<username>/programs/symengine.py/symengine/lib/symengine_wrapper.cpp: At global scope:
/home/<username>/programs/symengine.py/symengine/lib/symengine_wrapper.cpp:69267:1: warning: missing initializer for member ‘PyNumberMethods::nb_matrix_multiply’ [-Wmissing-field-initializers]
};
^
/home/<username>/programs/symengine.py/symengine/lib/symengine_wrapper.cpp:69267:1: warning: missing initializer for member ‘PyNumberMethods::nb_inplace_matrix_multiply’ [-Wmissing-field-initializers]
/home/<username>/programs/symengine.py/symengine/lib/symengine_wrapper.cpp:69512:1: warning: missing initializer for member ‘PyNumberMethods::nb_matrix_multiply’ [-Wmissing-field-initializers]
};
^
/home/<username>/programs/symengine.py/symengine/lib/symengine_wrapper.cpp:69512:1: warning: missing initializer for member ‘PyNumberMethods::nb_inplace_matrix_multiply’ [-Wmissing-field-initializers]
output
This error is strange. Did you install symengine with or without MPFR? (What is the cmake command you used when building symengine C++ library?)
For building symengine, I went with all the defaults, just doing
cmake .
make
sudo make install
I'll try to recompile and link it with MPFR to see if this makes a difference and report back if it fixes the problem.
EDIT: Compiling symengine with MPFR enabled (on) and everything left as default actually fixed the problem. Thanks for the suggestion @isuruf!
To briefly highlight how to resolve the issue:
Rather than simply doing cmake . prior to the make and make install, enable the -DWITH_MPFR:BOOL=OFF \ option and proceed with the remaining steps in the same way to resolve the problem. i.e.
cmake . \ # Installation prefix
-DWITH_MPFR:BOOL=ON \ # Install with MPFR library
and enable any other options you may need as well.