fix(ci): use system packages in ROS builds to fix buildfarm compilation#72
Merged
facontidavide merged 2 commits intomainfrom Feb 24, 2026
Merged
fix(ci): use system packages in ROS builds to fix buildfarm compilation#72facontidavide merged 2 commits intomainfrom
facontidavide merged 2 commits intomainfrom
Conversation
Timple
reviewed
Feb 24, 2026
cloudini_lib/package.xml
Outdated
|
|
||
| <depend>libpcl-common</depend> | ||
| <depend>libpcl-io</depend> | ||
| <depend>libpcl-dev</depend> |
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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)
Owner
Author
There was a problem hiding this comment.
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>
bb5c280 to
4c4db1b
Compare
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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Jazzy Noble ARM64 (
cloudini_lib): buildfarm setsFETCHCONTENT_FULLY_DISCONNECTED=ON, butCLOUDINI_FORCE_VENDORED_DEPSwas forcedONin ament builds, skippingfind_package()and trying to CPM-download zstd/lz4. With no network access,file(GLOB)returned empty sources andadd_library()failed with "No SOURCES given to target". Fix: forceFORCE_VENDORED=OFFwhen ament is detected so system packages (already declared inpackage.xml) are used instead.Humble Jammy ARM64 (
cloudini_ros):libpcl-common+libpcl-iorosdep keys only install component runtime libs — they don't shipPCLConfig.cmake. Sofind_package(PCL QUIET)silently failed,pcl_conversion.cppwas excluded fromlibcloudini_lib.so, andPCLPointCloudDecodewas missing at link time when buildingcloudini_ros. Fix: replace withlibpcl-devwhich 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
cloudini_lib+cloudini_rosboth pass (system packages path)cloudini_libcompiles with vendored zstd/lz4 via CPM cache (vendored path unaffected)🤖 Generated with Claude Code