ros / rosconsole

17 stars 61 forks source link

Error when compiling with log4cxx 0.13.0 #59

Open erhangk opened 1 year ago

erhangk commented 1 year ago

On Fedora 37, catkin workspace does not build.

/home/erhangk/ros_catkin_ws/src/rosconsole/src/rosconsole/impl/rosconsole_log4cxx.cpp:169:23: error: cannot convert 'ros::console::impl::ROSConsoleStdioAppender*' to 'log4cxx::AppenderPtr' {aka 'std::shared_ptr<log4cxx::Appender>'}
  169 |   logger->addAppender(new ROSConsoleStdioAppender);
      |                       ^~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                       |
      |                       ros::console::impl::ROSConsoleStdioAppender*
In file included from /usr/include/log4cxx/spi/loggingevent.h:28,
                 from /usr/include/log4cxx/layout.h:29,
                 from /usr/include/log4cxx/appenderskeleton.h:28,
                 from /home/erhangk/ros_catkin_ws/src/rosconsole/src/rosconsole/impl/rosconsole_log4cxx.cpp:42:
/usr/include/log4cxx/logger.h:144:60: bilgi:   initializing argument 1 of 'virtual void log4cxx::Logger::addAppender(log4cxx::AppenderPtr)'
  144 |                 virtual void addAppender(const AppenderPtr newAppender);
      |                                          ~~~~~~~~~~~~~~~~~~^~~~~~~~~~~
/home/erhangk/ros_catkin_ws/src/rosconsole/src/rosconsole/impl/rosconsole_log4cxx.cpp: 'void ros::console::impl::print(void*, ros::console::Level, const char*, const char*, const char*, int)' işlevinde:
/home/erhangk/ros_catkin_ws/src/rosconsole/src/rosconsole/impl/rosconsole_log4cxx.cpp:187:98: error: no matching function for call to 'log4cxx::spi::LocationInfo::LocationInfo(const char*&, const char*&, int&)'
  187 | _lookup[level], str, log4cxx::spi::LocationInfo(file, function, line));
      |                                                                     ^

In file included from /usr/include/log4cxx/logger.h:33:
/usr/include/log4cxx/spi/location/locationinfo.h:94:17: bilgi: candidate: 'log4cxx::spi::LocationInfo::LocationInfo(const log4cxx::spi::LocationInfo&)'
   94 |                 LocationInfo( const LocationInfo& src );
      |                 ^~~~~~~~~~~~
/usr/include/log4cxx/spi/location/locationinfo.h:94:17: bilgi:   candidate expects 1 argument, 3 provided
/usr/include/log4cxx/spi/location/locationinfo.h:88:17: bilgi: candidate: 'log4cxx::spi::LocationInfo::LocationInfo()'
   88 |                 LocationInfo();
      |                 ^~~~~~~~~~~~
/usr/include/log4cxx/spi/location/locationinfo.h:88:17: bilgi:   candidate expects 0 arguments, 3 provided
/usr/include/log4cxx/spi/location/locationinfo.h:80:17: bilgi: candidate: 'log4cxx::spi::LocationInfo::LocationInfo(const char*, const char*, const char*, int)'
   80 |                 LocationInfo( const char* const fileName,
      |                 ^~~~~~~~~~~~
/usr/include/log4cxx/spi/location/locationinfo.h:80:17: bilgi:   candidate expects 4 arguments, 3 provided
/home/erhangk/ros_catkin_ws/src/rosconsole/src/rosconsole/impl/rosconsole_log4cxx.cpp: 'void* ros::console::impl::getHandle(const std::string&)' işlevinde:
/home/erhangk/ros_catkin_ws/src/rosconsole/src/rosconsole/impl/rosconsole_log4cxx.cpp:203:36: error: cannot convert 'log4cxx::LoggerPtr' {aka 'std::shared_ptr<log4cxx::Logger>'} to 'void*' in return
  203 |   return log4cxx::Logger::getLogger(name);
      |          ~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~
      |                                    |
      |                                    log4cxx::LoggerPtr {aka std::shared_ptr<log4cxx::Logger>}
/home/erhangk/ros_catkin_ws/src/rosconsole/src/rosconsole/impl/rosconsole_log4cxx.cpp: 'bool ros::console::impl::get_loggers(std::map<std::__cxx11::basic_string<char>, ros::console::levels::Level>&)' işlevinde:
/home/erhangk/ros_catkin_ws/src/rosconsole/src/rosconsole/impl/rosconsole_log4cxx.cpp:219:120: error: conversion from 'log4cxx::spi::LoggerRepository*' to non-scalar type 'log4cxx::spi::LoggerRepositoryPtr' {aka 'std::shared_ptr<log4cxx::spi::LoggerRepository>'} requested
  219 | :Logger::getLogger(ROSCONSOLE_ROOT_LOGGER_NAME)->getLoggerRepository();
      | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~

/home/erhangk/ros_catkin_ws/src/rosconsole/src/rosconsole/impl/rosconsole_log4cxx.cpp: 'void ros::console::impl::register_appender(ros::console::LogAppender*)' işlevinde:
/home/erhangk/ros_catkin_ws/src/rosconsole/src/rosconsole/impl/rosconsole_log4cxx.cpp:361:23: error: cannot convert 'ros::console::impl::Log4cxxAppender*' to 'log4cxx::AppenderPtr' {aka 'std::shared_ptr<log4cxx::Appender>'}
  361 |   logger->addAppender(g_log4cxx_appender);
      |                       ^~~~~~~~~~~~~~~~~~
      |                       |
      |                       ros::console::impl::Log4cxxAppender*
/usr/include/log4cxx/logger.h:144:60: bilgi:   initializing argument 1 of 'virtual void log4cxx::Logger::addAppender(log4cxx::AppenderPtr)'
  144 |                 virtual void addAppender(const AppenderPtr newAppender);
      |                                          ~~~~~~~~~~~~~~~~~~^~~~~~~~~~~
/home/erhangk/ros_catkin_ws/src/rosconsole/src/rosconsole/impl/rosconsole_log4cxx.cpp: 'void ros::console::impl::deregister_appender(ros::console::LogAppender*)' işlevinde:
/home/erhangk/ros_catkin_ws/src/rosconsole/src/rosconsole/impl/rosconsole_log4cxx.cpp:368:27: error: no matching function for call to 'log4cxx::Logger::removeAppender(ros::console::impl::Log4cxxAppender*&)'
  368 |     logger->removeAppender(g_log4cxx_appender);
      |     ~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~
/usr/include/log4cxx/logger.h:1450:22: bilgi: candidate: 'virtual void log4cxx::Logger::removeAppender(log4cxx::AppenderPtr)'
 1450 |                 void removeAppender(const AppenderPtr appender);
      |                      ^~~~~~~~~~~~~~
/usr/include/log4cxx/logger.h:1450:55: bilgi:   no known conversion for argument 1 from 'ros::console::impl::Log4cxxAppender*' to 'log4cxx::AppenderPtr' {aka 'std::shared_ptr<log4cxx::Appender>'}
 1450 |                 void removeAppender(const AppenderPtr appender);
      |                                     ~~~~~~~~~~~~~~~~~~^~~~~~~~
/usr/include/log4cxx/logger.h:1456:22: bilgi: candidate: 'virtual void log4cxx::Logger::removeAppender(const log4cxx::LogString&)'
 1456 |                 void removeAppender(const LogString& name);
      |                      ^~~~~~~~~~~~~~
/usr/include/log4cxx/logger.h:1456:54: bilgi:   no known conversion for argument 1 from 'ros::console::impl::Log4cxxAppender*' to 'const log4cxx::LogString&' {aka 'const std::__cxx11::basic_string<char>&'}
 1456 |                 void removeAppender(const LogString& name);
      |                                     ~~~~~~~~~~~~~~~~~^~~~
/home/erhangk/ros_catkin_ws/src/rosconsole/src/rosconsole/impl/rosconsole_log4cxx.cpp: 'void ros::console::impl::shutdown()' işlevinde:
/home/erhangk/ros_catkin_ws/src/rosconsole/src/rosconsole/impl/rosconsole_log4cxx.cpp:378:27: error: no matching function for call to 'log4cxx::Logger::removeAppender(ros::console::impl::Log4cxxAppender*&)'
  378 |     logger->removeAppender(g_log4cxx_appender);
      |     ~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~
/usr/include/log4cxx/logger.h:1450:22: bilgi: candidate: 'virtual void log4cxx::Logger::removeAppender(log4cxx::AppenderPtr)'
 1450 |                 void removeAppender(const AppenderPtr appender);
      |                      ^~~~~~~~~~~~~~
/usr/include/log4cxx/logger.h:1450:55: bilgi:   no known conversion for argument 1 from 'ros::console::impl::Log4cxxAppender*' to 'log4cxx::AppenderPtr' {aka 'std::shared_ptr<log4cxx::Appender>'}
 1450 |                 void removeAppender(const AppenderPtr appender);
      |                                     ~~~~~~~~~~~~~~~~~~^~~~~~~~
/usr/include/log4cxx/logger.h:1456:22: bilgi: candidate: 'virtual void log4cxx::Logger::removeAppender(const log4cxx::LogString&)'
 1456 |                 void removeAppender(const LogString& name);
      |                      ^~~~~~~~~~~~~~
/usr/include/log4cxx/logger.h:1456:54: bilgi:   no known conversion for argument 1 from 'ros::console::impl::Log4cxxAppender*' to 'const log4cxx::LogString&' {aka 'const std::__cxx11::basic_string<char>&'}
 1456 |                 void removeAppender(const LogString& name);
      |                                     ~~~~~~~~~~~~~~~~~^~~~
make[2]: *** [CMakeFiles/rosconsole_log4cxx.dir/build.make:76: CMakeFiles/rosconsole_log4cxx.dir/src/rosconsole/impl/rosconsole_log4cxx.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:318: CMakeFiles/rosconsole_log4cxx.dir/all] Error 2
make: *** [Makefile:146: all] Error 2
<== Failed to process package 'rosconsole': 
  Command '['/home/erhangk/ros_catkin_ws/install_isolated/env.sh', 'make', '-j8', '-l8']' returned non-zero exit status 2.

Reproduce this error by running:
==> cd /home/erhangk/ros_catkin_ws/build_isolated/rosconsole && /home/erhangk/ros_catkin_ws/install_isolated/env.sh make -j8 -l8

Command failed, exiting.
lavandejoey commented 1 year ago

For Ubuntu 22, it can be solved by #51 and #54