symengine.py icon indicating copy to clipboard operation
symengine.py copied to clipboard

Fails install with all requirements met

Open juicetin opened this issue 9 years ago • 2 comments

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

juicetin avatar Jul 31 '16 08:07 juicetin

This error is strange. Did you install symengine with or without MPFR? (What is the cmake command you used when building symengine C++ library?)

isuruf avatar Jul 31 '16 08:07 isuruf

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.

juicetin avatar Jul 31 '16 08:07 juicetin