eProsima/FIROS2

Installation Failed

Closed this issue · 3 comments

Bug report

Required Info:

  • Environments:
    • Windows 10
    • Docker for Windows

Steps to Reproduce

  1. Create docker container based on osrf/ros2:ardent-ros1-bridge
    docker run --name firos2test -it osrf/ros2:ardent-ros1-bridge /bin/bash
  2. Install required software
    apt install -y curl git wget python3-vcstool ros-ardent-ament-*
  3. Installation of FIROS2
mkdir -p ~/ros2_ws/src
cd ~/ros2_ws
wget https://raw.githubusercontent.com/ros2/ros2/master/ros2.repos
vcs import ~/ros2_ws/src < ros2.repos
cd ~/ros2_ws/src/ros2
git clone --recursive https://github.com/eProsima/firos2
source /opt/ros/ardent/setup.bash
ament build --only-package firos2

Behavior

usage: ament build [-h] [-C DIRECTORY] [--build-space BUILD_SPACE]
                  [--install-space INSTALL_SPACE] [--build-tests]
                  [--make-flags [MAKE_FLAGS [MAKE_FLAGS ...]]] [--skip-build]
                  [--skip-install] [-s]
                  [--python-interpreter PYTHON_INTERPRETER] [--isolated]
                  [--start-with START_WITH] [--end-with END_WITH]
                  [--only-packages ONLY_PACKAGES [ONLY_PACKAGES ...]]
                  [--skip-packages [SKIP_PACKAGES [SKIP_PACKAGES ...]]]
                  [--parallel] [--force-ament-cmake-configure]
                  [--ament-cmake-args [AMENT_CMAKE_ARGS [AMENT_CMAKE_ARGS ...]]]
                  [--force-cmake-configure]
                  [--cmake-args [CMAKE_ARGS [CMAKE_ARGS ...]]]
                  [--ctest-args [CTEST_ARGS [CTEST_ARGS ...]]] [--use-ninja]
                  [basepath]
ament build: error: argument basepath: Path './src' does not exist

Additional information

In case of ament build firos2:

[ 63%] Linking CXX shared library libisrtpsngsiv2bridgelib.so
/usr/bin/ld: cannot find -lcurlpp
collect2: error: ld returned 1 exit status
CMakeFiles/isrtpsngsiv2bridgelib.dir/build.make:229: recipe for target 'libisrtpsngsiv2bridgelib.so' failed
make[2]: *** [libisrtpsngsiv2bridgelib.so] Error 1
CMakeFiles/Makefile2:67: recipe for target 'CMakeFiles/isrtpsngsiv2bridgelib.dir/all' failed
make[1]: *** [CMakeFiles/isrtpsngsiv2bridgelib.dir/all] Error 2
Makefile:127: recipe for target 'all' failed
make: *** [all] Error 2

<== Command '. /root/ros2_ws/src/ros2/build/firos2/cmake__build.sh && /usr/bin/make -j2 -l2' failed in '/root/ros2_ws/src/ros2/build/firos2' with exit code '2'
<== Command '. /root/ros2_ws/src/ros2/build/firos2/cmake__build.sh && /usr/bin/make -j2 -l2' failed in '/root/ros2_ws/src/ros2/build/firos2' with exit code '2'

The solution I found

  1. copy libcurlpp to
cd ~/ros2_ws/src/ros2/firos2/thirdparty
ament build curlpp
cd install/lib
cp libcurlpp.so* /usr/lib/x86_64-linux-gnu
  1. Rebuild the firos2
cd ~/ros2_ws/src/ros2
ament build firos2

Is it correct ,@JaimeMartin?

Hi @urabe0225
I just checked the issue and there is a lack of information in the documentation.
On Linux, in its current state, FIROS2 depends of boost/asio and cURLpp, so that packages should be installed before build FIROS2.
In the case ament build --only-package firos2 just cd ~/ros2_ws/ should do the trick, but note that the guide was written as a continuation of the linked ROS2 installation procedure.
In your case, sourcing an already installed ardent, you must adapt the build procedure, exactly as you done with ament build firos2.
We are working in a new release of FIROS2, that will use asio and cURLpp as thirdparty on Linux. We will update the documentation as well.

I close this issue. If you continue having any problem, you can open it again.