mattjj / pyhsmm

MIT License
546 stars 173 forks source link

Unable to Build #21

Closed 123mitnik closed 10 years ago

123mitnik commented 10 years ago

Hello Matthew, i was trying to build pyhsmm on OSX platform Python 2.7.6 |Anaconda 1.9.1 (x86_64) [GCC 4.0.1 (Apple Inc. build 5493)] on darwin

after executing -> python setup.py build_ext --inplace

i stumbled upon the following:

DNDEBUG -fopenmp -DEIGEN_DONT_PARALLELIZE -std=c++11 In file included from internals/hmm_messages_interface.cpp:354: In file included from internals/hmm_messages.h:4: In file included from deps/Eigen3/Eigen/Core:287: deps/Eigen3/Eigen/src/Core/MathFunctions.h:357:18: error: no member named 'log1p' in namespace 'std'; did you mean 'log10'? using std::log1p;


                 log10
/usr/include/math.h:391:15: note: 'log10' declared here
extern double log10(double);
              ^
In file included from internals/hmm_messages_interface.cpp:354:
In file included from internals/hmm_messages.h:4:
In file included from deps/Eigen3/Eigen/Core:329:
deps/Eigen3/Eigen/src/Core/DenseStorage.h:302:21: error: no member named 'move' in namespace 'std'
      : m_data(std::move(other.m_data))
               ~~~~~^
deps/Eigen3/Eigen/src/Core/DenseStorage.h:303:21: error: no member named 'move' in namespace 'std'
      , m_rows(std::move(other.m_rows))
               ~~~~~^
deps/Eigen3/Eigen/src/Core/DenseStorage.h:304:21: error: no member named 'move' in namespace 'std'
      , m_cols(std::move(other.m_cols))
               ~~~~~^
deps/Eigen3/Eigen/src/Core/DenseStorage.h:373:21: error: no member named 'move' in namespace 'std'
      : m_data(std::move(other.m_data))
               ~~~~~^
deps/Eigen3/Eigen/src/Core/DenseStorage.h:374:21: error: no member named 'move' in namespace 'std'
      , m_cols(std::move(other.m_cols))
               ~~~~~^
deps/Eigen3/Eigen/src/Core/DenseStorage.h:439:21: error: no member named 'move' in namespace 'std'
      : m_data(std::move(other.m_data))
               ~~~~~^
deps/Eigen3/Eigen/src/Core/DenseStorage.h:440:21: error: no member named 'move' in namespace 'std'
      , m_rows(std::move(other.m_rows))
               ~~~~~^
In file included from internals/hmm_messages_interface.cpp:354:
In file included from internals/hmm_messages.h:4:
In file included from deps/Eigen3/Eigen/Core:334:
deps/Eigen3/Eigen/src/Core/PlainObjectBase.h:470:25: error: no member named 'move' in namespace 'std'
      : m_storage( std::move(other.m_storage) )
                   ~~~~~^
In file included from internals/hmm_messages_interface.cpp:354:
In file included from internals/hmm_messages.h:4:
In file included from deps/Eigen3/Eigen/Core:335:
deps/Eigen3/Eigen/src/Core/Matrix.h:222:19: error: no member named 'move' in namespace 'std'
      : Base(std::move(other))
             ~~~~~^
In file included from internals/hmm_messages_interface.cpp:354:
In file included from internals/hmm_messages.h:4:
In file included from deps/Eigen3/Eigen/Core:336:
deps/Eigen3/Eigen/src/Core/Array.h:134:19: error: no member named 'move' in namespace 'std'
      : Base(std::move(other))
             ~~~~~^
In file included from internals/hmm_messages_interface.cpp:354:
In file included from internals/hmm_messages.h:4:
In file included from deps/Eigen3/Eigen/Core:335:
deps/Eigen3/Eigen/src/Core/Matrix.h:139:5: error: using declaration refers into 'Base::', which is not a base class of
      'Matrix<int, -1, -1, 0, -1, -1>'
    EIGEN_DENSE_PUBLIC_INTERFACE(Matrix)
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
deps/Eigen3/Eigen/src/Core/util/Macros.h:381:9: note: expanded from macro 'EIGEN_DENSE_PUBLIC_INTERFACE'
  using Base::derived; \
        ^~~~~~
internals/hmm_messages.h:185:18: note: in instantiation of template class 'Eigen::Matrix<int, -1, -1, 0, -1, -1>' requested here
        MatrixXi args(M,T);
                 ^
In file included from internals/hmm_messages_interface.cpp:354:
In file included from internals/hmm_messages.h:4:
In file included from deps/Eigen3/Eigen/Core:335:
deps/Eigen3/Eigen/src/Core/Matrix.h:139:5: error: using declaration refers into 'Base::', which is not a base class of
      'Matrix<int, -1, -1, 0, -1, -1>'
    EIGEN_DENSE_PUBLIC_INTERFACE(Matrix)
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
deps/Eigen3/Eigen/src/Core/util/Macros.h:382:9: note: expanded from macro 'EIGEN_DENSE_PUBLIC_INTERFACE'
  using Base::const_cast_derived;
        ^~~~~~
In file included from internals/hmm_messages_interface.cpp:354:
In file included from internals/hmm_messages.h:4:
In file included from deps/Eigen3/Eigen/Core:335:
deps/Eigen3/Eigen/src/Core/Matrix.h:143:11: error: using declaration refers into 'Base::', which is not a base class of
      'Matrix<int, -1, -1, 0, -1, -1>'
    using Base::base;
          ^~~~~~
deps/Eigen3/Eigen/src/Core/Matrix.h:144:11: error: using declaration refers into 'Base::', which is not a base class of
      'Matrix<int, -1, -1, 0, -1, -1>'
    using Base::coeffRef;
          ^~~~~~
deps/Eigen3/Eigen/src/Core/Matrix.h:381:11: error: using declaration refers into 'Base::', which is not a base class of
      'Matrix<int, -1, -1, 0, -1, -1>'
    using Base::m_storage;
          ^~~~~~
deps/Eigen3/Eigen/src/Core/Matrix.h:139:5: error: using declaration refers into 'Base::', which is not a base class of
      'Matrix<float, -1, -1, 1, -1, -1>'
    EIGEN_DENSE_PUBLIC_INTERFACE(Matrix)
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
deps/Eigen3/Eigen/src/Core/util/Macros.h:381:9: note: expanded from macro 'EIGEN_DENSE_PUBLIC_INTERFACE'
  using Base::derived; \
        ^~~~~~
deps/Eigen3/Eigen/src/Core/Map.h:73:20: note: in instantiation of template class 'Eigen::Matrix<float, -1, -1, 1, -1, -1>' requested here
  typedef typename PlainObjectType::Index Index;
                   ^
deps/Eigen3/Eigen/src/Core/util/ForwardDeclarations.h:32:31: note: in instantiation of template class
      'Eigen::internal::traits<Eigen::Map<Eigen::Matrix<float, -1, -1, 1, -1, -1>, 1, Eigen::Stride<0, 0> > >' requested here
  enum { has_direct_access = (traits<Derived>::Flags & DirectAccessBit) ? 1 : 0,
                              ^
deps/Eigen3/Eigen/src/Core/util/ForwardDeclarations.h:109:32: note: in instantiation of template class
      'Eigen::internal::accessors_level<Eigen::Map<Eigen::Matrix<float, -1, -1, 1, -1, -1>, 1, Eigen::Stride<0, 0> > >' requested here
         int Level = internal::accessors_level<Derived>::has_write_access ? WriteAccessors : ReadOnlyAccessors
                               ^
deps/Eigen3/Eigen/src/Core/Map.h:105:12: note: in instantiation of default argument for 'MapBase<Eigen::Map<Eigen::Matrix<float, -1, -1, 1,
      -1, -1>, 1, Eigen::Stride<0, 0> > >' required here
  : public MapBase<Map<PlainObjectType, MapOptions, StrideType> >
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
internals/hmm_messages.h:31:24: note: in instantiation of template class 'Eigen::Map<Eigen::Matrix<float, -1, -1, 1, -1, -1>, 1,
      Eigen::Stride<0, 0> >' requested here
        NPMatrix<Type> eA(A,M,M);
                       ^
internals/hmm_messages.h:221:12: note: in instantiation of function template specialization 'hmm::messages_backwards_log<float>' requested
      here
    { hmm::messages_backwards_log(M,T,A,aBl,betal); }
           ^
internals/hmm_messages_interface.cpp:3511:15: note: in instantiation of member function 'hmmc<float, int>::messages_backwards_log' requested
      here
  __pyx_v_ref.messages_backwards_log((__pyx_v_A.shape[0]), (__pyx_v_aBl.shape[0]), (&(_((float *) ( /_ dim=1 */ ((char *) (((float *...
              ^
In file included from internals/hmm_messages_interface.cpp:354:
In file included from internals/hmm_messages.h:4:
In file included from deps/Eigen3/Eigen/Core:335:
deps/Eigen3/Eigen/src/Core/Matrix.h:139:5: error: using declaration refers into 'Base::', which is not a base class of
      'Matrix<float, -1, -1, 1, -1, -1>'
    EIGEN_DENSE_PUBLIC_INTERFACE(Matrix)
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
deps/Eigen3/Eigen/src/Core/util/Macros.h:382:9: note: expanded from macro 'EIGEN_DENSE_PUBLIC_INTERFACE'
  using Base::const_cast_derived;
        ^~~~~~
In file included from internals/hmm_messages_interface.cpp:354:
In file included from internals/hmm_messages.h:4:
In file included from deps/Eigen3/Eigen/Core:335:
deps/Eigen3/Eigen/src/Core/Matrix.h:143:11: error: using declaration refers into 'Base::', which is not a base class of
      'Matrix<float, -1, -1, 1, -1, -1>'
    using Base::base;
          ^~~~~~
fatal error: too many errors emitted, stopping now [-ferror-limit=]
20 errors generated.
error: command 'gcc' failed with exit status 1
mattjj commented 10 years ago

It looks like your gcc is too old (4.0.1, current release is 4.9). This code uses std=c++11, which I don't think had support before 4.7.

Off the top of my head, I think this code uses c++11 both for some libraryfunctions (which generated the error you saw) and for type aliases. Those dependencies could be removed, but I don't have any plans to do that. I think the easiest solution is to upgrade your compiler (which will give you other performance benefits too!).

On Thursday, May 22, 2014, 123mitnik notifications@github.com wrote:

Hello Matthew, i was trying to build pyhsmm on OSX platform Python 2.7.6 |Anaconda 1.9.1 (x86_64) [GCC 4.0.1 (Apple Inc. build 5493)] on darwin

after executing -> python setup.py build_ext --inplace

i stubbled upon the following:

DNDEBUG -fopenmp -DEIGEN_DONT_PARALLELIZE -std=c++11 In file included from internals/hmm_messages_interface.cpp:354: In file included from internals/hmm_messages.h:4: In file included from deps/Eigen3/Eigen/Core:287: deps/Eigen3/Eigen/src/Core/MathFunctions.h:357:18: error: no member named 'log1p' in namespace 'std'; did you mean 'log10'? using std::log1p;

log10
/usr/include/math.h:391:15: note: 'log10' declared here
extern double log10(double);
^
In file included from internals/hmm_messages_interface.cpp:354:
In file included from internals/hmm_messages.h:4:
In file included from deps/Eigen3/Eigen/Core:329:
deps/Eigen3/Eigen/src/Core/DenseStorage.h:302:21: error: no member named
'move' in namespace 'std'
: m_data(std::move(other.m_data))
~~~~~^
deps/Eigen3/Eigen/src/Core/DenseStorage.h:303:21: error: no member named
'move' in namespace 'std'
, m_rows(std::move(other.m_rows))
~~~~~^
deps/Eigen3/Eigen/src/Core/DenseStorage.h:304:21: error: no member named
'move' in namespace 'std'
, m_cols(std::move(other.m_cols))
~~~~~^
deps/Eigen3/Eigen/src/Core/DenseStorage.h:373:21: error: no member named
'move' in namespace 'std'
: m_data(std::move(other.m_data))
~~~~~^
deps/Eigen3/Eigen/src/Core/DenseStorage.h:374:21: error: no member named
'move' in namespace 'std'
, m_cols(std::move(other.m_cols))
~~~~~^
deps/Eigen3/Eigen/src/Core/DenseStorage.h:439:21: error: no member named
'move' in namespace 'std'
: m_data(std::move(other.m_data))
~~~~~^
deps/Eigen3/Eigen/src/Core/DenseStorage.h:440:21: error: no member named
'move' in namespace 'std'
, m_rows(std::move(other.m_rows))
~~~~~^
In file included from internals/hmm_messages_interface.cpp:354:
In file included from internals/hmm_messages.h:4:
In file included from deps/Eigen3/Eigen/Core:334:
deps/Eigen3/Eigen/src/Core/PlainObjectBase.h:470:25: error: no member
named 'move' in namespace 'std'
: m_storage( std::move(other.m_storage) )
~~~~~^
In file included from internals/hmm_messages_interface.cpp:354:
In file included from internals/hmm_messages.h:4:
In file included from deps/Eigen3/Eigen/Core:335:
deps/Eigen3/Eigen/src/Core/Matrix.h:222:19: error: no member named 'move'
in namespace 'std'
: Base(std::move(other))
~~~~~^
In file included from internals/hmm_messages_interface.cpp:354:
In file included from internals/hmm_messages.h:4:
In file included from deps/Eigen3/Eigen/Core:336:
deps/Eigen3/Eigen/src/Core/Array.h:134:19: error: no member named 'move'
in namespace 'std'
: Base(std::move(other))
~~~~~^
In file included from internals/hmm_messages_interface.cpp:354:
In file included from internals/hmm_messages.h:4:
In file included from deps/Eigen3/Eigen/Core:335:
deps/Eigen3/Eigen/src/Core/Matrix.h:139:5: error: using declaration refers
into 'Base::', which is not a base class of
'Matrix'
EIGEN_DENSE_PUBLIC_INTERFACE(Matrix)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
deps/Eigen3/Eigen/src/Core/util/Macros.h:381:9: note: expanded from macro
'EIGEN_DENSE_PUBLIC_INTERFACE'
using Base::derived; \
^~~~~~
internals/hmm_messages.h:185:18: note: in instantiation of template class
'Eigen::Matrix' requested here
MatrixXi args(M,T);
^
In file included from internals/hmm_messages_interface.cpp:354:
In file included from internals/hmm_messages.h:4:
In file included from deps/Eigen3/Eigen/Core:335:
deps/Eigen3/Eigen/src/Core/Matrix.h:139:5: error: using declaration refers
into 'Base::', which is not a base class of
'Matrix'
EIGEN_DENSE_PUBLIC_INTERFACE(Matrix)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
deps/Eigen3/Eigen/src/Core/util/Macros.h:382:9: note: expanded from macro
'EIGEN_DENSE_PUBLIC_INTERFACE'
using Base::const_cast_derived;
^~~~~~
In file included from internals/hmm_messages_interface.cpp:354:
In file included from internals/hmm_messages.h:4:
In file included from deps/Eigen3/Eigen/Core:335:
deps/Eigen3/Eigen/src/Core/Matrix.h:143:11: error: using declaration
refers into 'Base::', which is not a base class of
'Matrix'
using Base::base;
^~~~~~
deps/Eigen3/Eigen/src/Core/Matrix.h:144:11: error: using declaration
refers into 'Base::', which is not a base class of
'Matrix'
using Base::coeffRef;
^~~~~~
deps/Eigen3/Eigen/src/Core/Matrix.h:381:11: error: using declaration
refers into 'Base::', which is not a base class of
'Matrix'
using Base::m_storage;
^~~~~~
deps/Eigen3/Eigen/src/Core/Matrix.h:139:5: error: using declaration refers
into 'Base::', which is not a base class of
'Matrix'
EIGEN_DENSE_PUBLIC_INTERFACE(Matrix)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
deps/Eigen3/Eigen/src/Core/util/Macros.h:381:9: note: expanded from macro
'EIGEN_DENSE_PUBLIC_INTERFACE'
using Base::derived; \
^~~~~~
deps/Eigen3/Eigen/src/Core/Map.h:73:20: note: in instantiation of template
class 'Eigen::Matrix' requested here
typedef typename PlainObjectType::Index Index;
^
deps/Eigen3/Eigen/src/Core/util/ForwardDeclarations.h:32:31: note: in
instantiation of template class
'Eigen::internal::traits, 1, Eigen::Stride > >' requested here
enum { has_direct_access = (traits::Flags & DirectAccessBit) ? 1 : 0,
^
deps/Eigen3/Eigen/src/Core/util/ForwardDeclarations.h:109:32: note: in
instantiation of template class
'Eigen::internal::accessors_level, 1, Eigen::Stride > >' requested here
int Level = internal::accessors_level::has_write_access ? WriteAccessors :
ReadOnlyAccessors
^
deps/Eigen3/Eigen/src/Core/Map.h:105:12: note: in instantiation of default
argument for 'MapBase -1, -1>, 1, Eigen::Stride > >' required here
: public MapBase >
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
internals/hmm_messages.h:31:24: note: in instantiation of template class
'Eigen::Map, 1,
Eigen::Stride >' requested here
NPMatrix eA(A,M,M);
^
internals/hmm_messages.h:221:12: note: in instantiation of function
template specialization 'hmm::messages_backwards_log' requested
here
{ hmm::messages_backwards_log(M,T,A,aBl,betal); }
^
internals/hmm_messages_interface.cpp:3511:15: note: in instantiation of
member function 'hmmc::messages_backwards_log' requested
here
__pyx_v_ref.messages_backwards_log((__pyx_v_A.shape[0]),
(__pyx_v_aBl.shape[0]), (&(*((float *) ( /* dim=1 */ ((char *) (((float
*...
^
In file included from internals/hmm_messages_interface.cpp:354:
In file included from internals/hmm_messages.h:4:
In file included from deps/Eigen3/Eigen/Core:335:
deps/Eigen3/Eigen/src/Core/Matrix.h:139:5: error: using declaration refers
into 'Base::', which is not a base class of
'Matrix'
EIGEN_DENSE_PUBLIC_INTERFACE(Matrix)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
deps/Eigen3/Eigen/src/Core/util/Macros.h:382:9: note: expanded from macro
'EIGEN_DENSE_PUBLIC_INTERFACE'
using Base::const_cast_derived;
^~~~~~
In file included from internals/hmm_messages_interface.cpp:354:
In file included from internals/hmm_messages.h:4:
In file included from deps/Eigen3/Eigen/Core:335:
deps/Eigen3/Eigen/src/Core/Matrix.h:143:11: error: using declaration
refers into 'Base::', which is not a base class of
'Matrix'
using Base::base;
^~~~~~
fatal error: too many errors emitted, stopping now [-ferror-limit=]
20 errors generated.
error: command 'gcc' failed with exit status 1

—
Reply to this email directly or view it on GitHub<https://github.com/mattjj/pyhsmm/issues/21>
.

Sent from my phone

mattjj commented 10 years ago

I'm going to close this because I think it's a compiler issue not specific to pyhsmm, but feel free to reopen it if I'm wrong.