Skip to content

Comments

fix(ci): use system packages in ROS builds to fix buildfarm compilation#72

Merged
facontidavide merged 2 commits intomainfrom
fix_ros_buildfarm
Feb 24, 2026
Merged

fix(ci): use system packages in ROS builds to fix buildfarm compilation#72
facontidavide merged 2 commits intomainfrom
fix_ros_buildfarm

Conversation

@facontidavide
Copy link
Owner

Summary

  • Jazzy Noble ARM64 (cloudini_lib): buildfarm sets FETCHCONTENT_FULLY_DISCONNECTED=ON, but CLOUDINI_FORCE_VENDORED_DEPS was forced ON in ament builds, skipping find_package() and trying to CPM-download zstd/lz4. With no network access, file(GLOB) returned empty sources and add_library() failed with "No SOURCES given to target". Fix: force FORCE_VENDORED=OFF when ament is detected so system packages (already declared in package.xml) are used instead.

  • Humble Jammy ARM64 (cloudini_ros): libpcl-common + libpcl-io rosdep keys only install component runtime libs — they don't ship PCLConfig.cmake. So find_package(PCL QUIET) silently failed, pcl_conversion.cpp was excluded from libcloudini_lib.so, and PCLPointCloudDecode was missing at link time when building cloudini_ros. Fix: replace with libpcl-dev which ships the full CMake config.

  • Also updated find_package() calls to use CONFIG mode with lowercase names (zstd/lz4) matching Ubuntu's actual CMake config files, with fallback to module mode for compatibility.

Test plan

  • Colcon build with ROS Humble sourced: cloudini_lib + cloudini_ros both pass (system packages path)
  • Standalone cmake build without ROS: cloudini_lib compiles with vendored zstd/lz4 via CPM cache (vendored path unaffected)

🤖 Generated with Claude Code


<depend>libpcl-common</depend>
<depend>libpcl-io</depend>
<depend>libpcl-dev</depend>
Copy link

@Timple Timple Feb 24, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I believe everything with a -dev suffix should not be an exec dependency.

So this (and libzstd-dev) should be build and build_export dependencies.

edit: @Rayman did this for https://github.com/ros-perception/perception_pcl so he might have some insights here.

Copy link

@Rayman Rayman Feb 24, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You are correct!

  • libpcl-common and libpcl-io as <exec_depend>
  • libpcl-dev as <build_depend> and <build_export_depend> (if symbols are exported in headers)

Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

you are not wrong. I can fix that

Two buildfarm failures fixed:

1. Jazzy Noble ARM64 (cloudini_lib): buildfarm sets
   FETCHCONTENT_FULLY_DISCONNECTED=ON, but CLOUDINI_FORCE_VENDORED_DEPS
   was forced ON in ament builds, skipping find_package() and trying to
   CPM-download zstd/lz4. With no network, file(GLOB) returned empty
   sources and add_library() failed. Fix: force FORCE_VENDORED=OFF when
   ament is found so system packages (declared in package.xml) are used.

2. Humble Jammy ARM64 (cloudini_ros): libpcl-common + libpcl-io rosdep
   keys only install component libs without PCLConfig.cmake, so
   find_package(PCL QUIET) silently failed and pcl_conversion.cpp was
   excluded from libcloudini_lib.so. PCLPointCloudDecode was then
   missing at link time when building cloudini_ros. Fix: use libpcl-dev
   which ships the full CMake config.

Also fix find_package() calls to use CONFIG mode with lowercase package
names (zstd/lz4) matching the actual CMake config files provided by
Ubuntu's libzstd-dev and liblz4-dev packages, with fallback to module
mode for compatibility.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Bare runners fail because:
- Humble: setup-ros installs minimal ROS without typesupport
  implementations, causing "No rosidl_typesupport_c found"
- Jazzy: Ubuntu 24.04 PEP 668 Python isolation conflicts with
  setup-ros pip-installed tools, causing "No module ament_package"

Switch to rostooling/setup-ros-docker containers with ros-base
pre-installed, which have the correct ROS + Python environment.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@facontidavide facontidavide merged commit 06ea472 into main Feb 24, 2026
3 checks passed
@facontidavide facontidavide deleted the fix_ros_buildfarm branch February 24, 2026 15:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants