ros-naoqi / naoqi_driver

c++ bridge based on libqi
Apache License 2.0
54 stars 93 forks source link

Cannot compile under ROS Melodic in MacOS #133

Open iPsych opened 4 years ago

iPsych commented 4 years ago

In MacOS with ROS Melodic successfully installed, below error happens. I tried to tap ros/melodic but it shows "remote: Repository not found." Error.

Error: No available formula with the name "ros/melodic/naoqi_bridge_msgs" 
Please tap it and then try again: brew tap ros/melodic
Error: No available formula with the name "ros/melodic/naoqi_libqicore" 
Please tap it and then try again: brew tap ros/melodic
Error: No available formula with the name "ros/melodic/naoqi_libqi" 
Please tap it and then try again: brew tap ros/melodic
executing command [brew install ros/melodic/naoqi_bridge_msgs]
==> Tapping ros/melodic
Cloning into '/usr/local/Homebrew/Library/Taps/ros/homebrew-melodic'...
remote: Repository not found.
fatal: repository 'https://github.com/ros/homebrew-melodic/' not found
Error: Failure while executing; `git clone https://github.com/ros/homebrew-melodic /usr/local/Homebrew/Library/Taps/ros/homebrew-melodic` exited with 128.
ERROR: the following rosdeps failed to install
  homebrew: command [brew install ros/melodic/naoqi_bridge_msgs] failed
mikaelarguedas commented 4 years ago

AFAIK there is no tap or bottles for ROS. How did you install the rest of ROS Melodic ?

most likely you need to build from source all the dependencies of the package you are trying to build.

One convenient way to get a list of repos to download based on what you already have installed is using rosinstall_generator:

pip install rosinstall_generator vcstool
source /path/to/ros/melodic/setup.bash
mkdir -p /path/to/ws/src && cd /path/to/ws/
rosinstall_generator naoqi_driver --deps --exclude RPP --tar --rosdistro melodic > naoqi_driver_deps.rosinstall
vcs import src < naoqi_driver_deps.rosinstall

then you can install dependencies (using rosdep) and build like you were likely doing when encountering the error

iPsych commented 4 years ago

@mikaelarguedas Thanks. For the remaining ROS install, I followed the instruction of below URL and succeed. https://gist.github.com/ahoarau/dd521343494d9ec3ffb25da3f61f346d

I followed your instructions, but face below error.

make[1]: *** [naoqi_libqi/CMakeFiles/qi.dir/all] Error 2
make: *** [all] Error 2
make: INTERNAL: Exiting with 9 jobserver tokens available; should be 8!
Invoking "make -j8 -l8" failed

Which happened in below

In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/__string:57:
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/algorithm:2494:5: error: static_assert failed due to requirement
      '__is_forward_iterator<boost::iterators::transform_iterator<unsigned long (*)(const boost::basic_string_ref<char, std::__1::char_traits<char> > &), std::__1::__wrap_iter<const
      boost::basic_string_ref<char, std::__1::char_traits<char> > *>, boost::iterators::use_default, boost::iterators::use_default> >::value' "std::max_element requires a ForwardIterator"
    static_assert(__is_forward_iterator<_ForwardIterator>::value,
    ^             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/algorithm:2512:19: note: in instantiation of function template specialization
      'std::__1::max_element<boost::iterators::transform_iterator<unsigned long (*)(const boost::basic_string_ref<char, std::__1::char_traits<char> > &), std::__1::__wrap_iter<const
      boost::basic_string_ref<char, std::__1::char_traits<char> > *>, boost::iterators::use_default, boost::iterators::use_default>, std::__1::__less<unsigned long, unsigned long> >' requested
      here
    return _VSTD::max_element(__first, __last,
                  ^
/usr/local/include/boost/range/algorithm/max_element.hpp:44:17: note: in instantiation of function template specialization 'std::__1::max_element<boost::iterators::transform_iterator<unsigned
      long (*)(const boost::basic_string_ref<char, std::__1::char_traits<char> > &), std::__1::__wrap_iter<const boost::basic_string_ref<char, std::__1::char_traits<char> > *>,
      boost::iterators::use_default, boost::iterators::use_default> >' requested here
    return std::max_element(boost::begin(rng), boost::end(rng));
                ^
/Users/eri/catkin_ws/src/naoqi_libqi/src/print.cpp:355:29: note: in instantiation of function template specialization 'boost::range::max_element<boost::range_detail::transformed_range<unsigned
      long (*)(const boost::basic_string_ref<char, std::__1::char_traits<char> > &), const std::__1::vector<boost::basic_string_ref<char, std::__1::char_traits<char> >,
      std::__1::allocator<boost::basic_string_ref<char, std::__1::char_traits<char> > > > > >' requested here
    const auto maxLabelIt = max_element(labels | transformed(boost::size<string_ref>));
In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/__string:57:
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/algorithm:2494:5: error: static_assert failed due to requirement
      '__is_forward_iterator<boost::iterators::transform_iterator<unsigned long (*)(const std::__1::basic_string<char> &), std::__1::__wrap_iter<const std::__1::basic_string<char> *>,
      boost::iterators::use_default, boost::iterators::use_default> >::value' "std::max_element requires a ForwardIterator"
    static_assert(__is_forward_iterator<_ForwardIterator>::value,
    ^             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/algorithm:2512:19: note: in instantiation of function template specialization
      'std::__1::max_element<boost::iterators::transform_iterator<unsigned long (*)(const std::__1::basic_string<char> &), std::__1::__wrap_iter<const std::__1::basic_string<char> *>,
      boost::iterators::use_default, boost::iterators::use_default>, std::__1::__less<unsigned long, unsigned long> >' requested here
    return _VSTD::max_element(__first, __last,
                  ^
/usr/local/include/boost/range/algorithm/max_element.hpp:44:17: note: in instantiation of function template specialization 'std::__1::max_element<boost::iterators::transform_iterator<unsigned
      long (*)(const std::__1::basic_string<char> &), std::__1::__wrap_iter<const std::__1::basic_string<char> *>, boost::iterators::use_default, boost::iterators::use_default> >' requested here
    return std::max_element(boost::begin(rng), boost::end(rng));
                ^
/Users/eri/catkin_ws/src/naoqi_libqi/src/print.cpp:320:30: note: in instantiation of function template specialization 'boost::range::max_element<boost::range_detail::transformed_range<unsigned
      long (*)(const std::__1::basic_string<char> &), const std::__1::vector<std::__1::basic_string<char>, std::__1::allocator<std::__1::basic_string<char> > > > >' requested here
      const auto maxElemIt = max_element(elementNames | transformed(boost::size<std::string>));
mikaelarguedas commented 4 years ago

Ok so you made progress and you are now failing the build on naoqi_libqi.

Unfortunately maintainers here are not maintainers of libqi and the packages here have been built only on Ubuntu Bionic with no attempt to support macos.

You may have more luck posting your question directly at: https://github.com/aldebaran/libqi


The error you are facing doesn't seem to be ROS related but rather boost and xcode related

Some leads to explore:

iPsych commented 4 years ago

@mikaelarguedas Thanks. I am repeatedly face to /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/algorithm:2494:5: error: static_assert failed due to requirement Which boost version was used in Linux compilation?

mikaelarguedas commented 4 years ago

The debian packages are built using boost 1.65.1 (version provided by Ubuntu 18.04)

iPsych commented 4 years ago

@mikaelarguedas I found it seems a clang bug error: static_assert failed due to requirement '__is_forward_iterator<boost::adj_list<unsigned long>::edge_iterator>::value' "std::max_element requires a ForwardIterator" :info:build static_assert(__is_forward_iterator<_ForwardIterator>::value, and discussed as below.

https://git.skewed.de/count0/graph-tool/-/merge_requests/19

https://www.mail-archive.com/llvm-bugs@lists.llvm.org/msg30845.html