NVIDIA-ISAAC-ROS / NVIDIA-ISAAC-ROS/isaac_ros_common

Finding PCL dependency fails in Dev environment built with Dockerfile.x86_64

Open
#143 0 comments 1 reaction 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
C++
Stars
317
Forks
227
PR merge metrics
No merged PRs in 30d

Description

I used run_dev.sh to build the base Docker image on the host platform (x86_64).
I then built another Docker image layer on top of this base image that includes debian install of the pcl packages:

RUN apt-get update && apt-get install -y \
    [...]
    ros-humble-pcl-conversions \
    ros-humble-pcl-msgs \

However, when then building a set of my own ros2 packages with colcon build (inside the Docker container as part of another Dockerfile image layer on top), which contain a dependency on PCL and have the corresponding build depends, find()s, and includes in package.xml/CMakeLists.txt, I get the following Cmake build error:

Imported target "MPI::MPI_C" includes non-existent path
    "/opt/hpcx/ompi/lib/x86_64-linux-gnu/openmpi/include"
  in its INTERFACE_INCLUDE_DIRECTORIES.  Possible reasons include:

  * The path was deleted, renamed, or moved to another location.
  * An install or uninstall procedure did not complete successfully.
  * The installation package was faulty and references files it does not
  provide.

CMake Error at /usr/share/cmake-3.22/Modules/FindMPI.cmake:1264 (try_compile):
  Failed to generate test project build system.
Call Stack (most recent call first):
  /usr/share/cmake-3.22/Modules/FindMPI.cmake:1315 (_MPI_try_staged_settings)
  /usr/share/cmake-3.22/Modules/FindMPI.cmake:1638 (_MPI_check_lang_works)
  /usr/lib/x86_64-linux-gnu/cmake/vtk-9.1/VTK-vtk-module-find-packages.cmake:397 (find_package)
  /usr/lib/x86_64-linux-gnu/cmake/vtk-9.1/vtk-config.cmake:150 (include)
  /usr/lib/x86_64-linux-gnu/cmake/pcl/PCLConfig.cmake:270 (find_package)
  /usr/lib/x86_64-linux-gnu/cmake/pcl/PCLConfig.cmake:319 (find_VTK)
  /usr/lib/x86_64-linux-gnu/cmake/pcl/PCLConfig.cmake:540 (find_external_library)
  CMakeLists.txt:19 (find_package)


gmake: *** [Makefile:308: cmake_check_build_system] Error 1

Notably:

  • This error did not occur before the switch to Isaac-ROS 3 and the change of the 'run_dev' build process.
  • This error does not occur when compiled for arm64 with the "Dockerfile.aarch64" and the rest being the same set of build steps.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Read run_dev.sh and compare Dockerfile.x86_64 with Dockerfile.aarch64, focusing on how the base image is built. Trace the failure from CMakeLists.txt line 19 through PCLConfig.cmake and FindMPI.cmake. Done means an x86_64 Docker-based colcon build can find PCL without the missing MPI include path error.

Written by the indexing model from the issue text.

Assessment

Tech stack
cmake, cpp, docker
Domain
build-system, devops
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.