aldebaran/libqi-python

Compilation fails on stock Ubuntu 16.04

Closed this issue · 2 comments

libqi-python does not compiles on Ubuntu 16.04 (gcc-5.4, boost-1.58). The first encountered issue is:

[  4%] Building CXX object python2/CMakeFiles/qipython.dir/__/src/pyexport.cpp.o
In file included from /home/slemaignan/dev/include/qi/log.hpp:547:0,
                 from /home/slemaignan/dev/include/qi/trackable.hpp:18,
                 from /home/slemaignan/dev/include/qi/detail/future_fwd.hpp:16,
                 from /home/slemaignan/dev/include/qi/future.hpp:7,
                 from /home/slemaignan/src/libqi-python/py2py3/../qipython/pyfuture.hpp:16,
                 from /home/slemaignan/src/libqi-python/src/pyexport.cpp:7:
/home/slemaignan/dev/include/qi/detail/trackable.hxx: In destructor ‘qi::Trackable<T>::~Trackable()’:
/home/slemaignan/dev/include/qi/detail/log.hxx:57:46: error: too few arguments to function ‘boost::format qi::log::detail::getFormat(const string&)’
   boost::str(::qi::log::detail::getFormat(Msg)  QI_VAARGS_APPLY(_QI_FORMAT_ELEM, _, __VA_ARGS__ /**/))
                                              ^
/home/slemaignan/dev/include/qi/detail/log.hxx:41:107: note: in definition of macro ‘_qiLogError’
 # define _qiLogError(...)        qi::log::LogStream(qi::LogLevel_Error, __FILE__, __FUNCTION__, __LINE__, __VA_ARGS__).self()
                                                                                                           ^
/home/slemaignan/dev/include/qi/preproc.hpp:104:25: note: in expansion of macro ‘_QI_LOG_FORMAT_HASARG_0’
 #  define QI_CAT_(A, B) A ## B
                         ^
/home/slemaignan/dev/include/qi/preproc.hpp:103:24: note: in expansion of macro ‘QI_CAT_’
 #  define QI_CAT(A, B) QI_CAT_(A, B)
                        ^
/home/slemaignan/dev/include/qi/detail/log.hxx:54:3: note: in expansion of macro ‘QI_CAT’
   QI_CAT(_QI_LOG_FORMAT_HASARG_, _QI_LOG_ISEMPTY(__VA_ARGS__))(Msg, __VA_ARGS__)
   ^
/home/slemaignan/dev/include/qi/detail/log.hxx:129:41: note: in expansion of macro ‘_QI_LOG_FORMAT’
    BOOST_PP_CAT(_qiLog, TypeCased)(cat, _QI_LOG_FORMAT(__VA_ARGS__))
                                         ^
/home/slemaignan/dev/include/qi/preproc.hpp:104:25: note: in expansion of macro ‘_QI_LOG_MESSAGE_STREAM_HASCAT_HASFORMAT_0’
 #  define QI_CAT_(A, B) A ## B
                         ^
/home/slemaignan/dev/include/qi/preproc.hpp:103:24: note: in expansion of macro ‘QI_CAT_’
 #  define QI_CAT(A, B) QI_CAT_(A, B)
                        ^
/home/slemaignan/dev/include/qi/detail/log.hxx:120:2: note: in expansion of macro ‘QI_CAT’
  QI_CAT(_QI_LOG_MESSAGE_STREAM_HASCAT_HASFORMAT_, _QI_LOG_ISEMPTY( __VA_ARGS__))(Type, TypeCased, cat, __VA_ARGS__)
  ^
/home/slemaignan/dev/include/qi/detail/log.hxx:115:46: note: in expansion of macro ‘_QI_LOG_MESSAGE_STREAM_HASCAT_0_BOUNCE’
 #define _QI_LOG_MESSAGE_STREAM_HASCAT_0(...) _QI_LOG_MESSAGE_STREAM_HASCAT_0_BOUNCE(__VA_ARGS__)
                                              ^
/home/slemaignan/dev/include/qi/preproc.hpp:104:25: note: in expansion of macro ‘_QI_LOG_MESSAGE_STREAM_HASCAT_0’
 #  define QI_CAT_(A, B) A ## B
                         ^
/home/slemaignan/dev/include/qi/preproc.hpp:103:24: note: in expansion of macro ‘QI_CAT_’
 #  define QI_CAT(A, B) QI_CAT_(A, B)
                        ^
/home/slemaignan/dev/include/qi/detail/log.hxx:104:3: note: in expansion of macro ‘QI_CAT’
   QI_CAT(_QI_LOG_MESSAGE_STREAM_HASCAT_, _QI_LOG_ISEMPTY( __VA_ARGS__))(Type, TypeCased, __VA_ARGS__)
   ^
/home/slemaignan/dev/include/qi/log.hpp:112:28: note: in expansion of macro ‘_QI_LOG_MESSAGE_STREAM’
 # define qiLogError(...)   _QI_LOG_MESSAGE_STREAM(LogLevel_Error,   Error,   __VA_ARGS__)
                            ^
/home/slemaignan/dev/include/qi/detail/trackable.hxx:69:7: note: in expansion of macro ‘qiLogError’
       qiLogError("qi.Trackable") << "Trackable destroyed without calling destroy()";
       ^
/home/slemaignan/dev/include/qi/detail/log.hxx:209:28: note: declared here
       QI_API boost::format getFormat(const std::string& s);
                            ^

I do however expect other issues related to boost-1.58 like the ones I reported in aldebaran/libqi#14.

Even though @alkino has made clear that boost-1.58 would not be officially supported, I do note that libqi is at least semi-officially supported on boost-1.58 as it is compiled and released as a ROS package by @suryaambrose on Ubuntu 16.04.

So my question: what would it take to get libqi-python to compile on Ubuntu 16.04 using boost-1.58 (to eventually package and release it as a ROS Debian package)?

bump

Sorry for the late response to this issue.
For posterity, note that as of today, libqi (and therefore libqi-python) only supports boost-1.64.