Skip to content

Full Rebuild May 2026: bump ros2-distro-mutex to 0.9.0 and build_number to 18#403

Open
esteve wants to merge 13 commits into
RoboStack:mainfrom
esteve:humble-full-rebuild-20260511
Open

Full Rebuild May 2026: bump ros2-distro-mutex to 0.9.0 and build_number to 18#403
esteve wants to merge 13 commits into
RoboStack:mainfrom
esteve:humble-full-rebuild-20260511

Conversation

@esteve
Copy link
Copy Markdown
Contributor

@esteve esteve commented May 11, 2026

This PR prepares a new full rebuild for ROS Humble with the following fixes:

@esteve esteve force-pushed the humble-full-rebuild-20260511 branch from 1d086cd to 283f094 Compare May 11, 2026 14:40
@esteve esteve marked this pull request as ready for review May 11, 2026 14:41
@traversaro
Copy link
Copy Markdown
Member

Pin poco to 1.15.0 because the version of libfranka on conda-forge that ROS Humble depends is built for 1.15.0 and letting Pixi upgrade poco would cause a conflict.

I think we should have the abi_migration_branches active for all libfranka versions in conda-forge to avoid this, so we should be able to use 1.15.1 as done in https://github.com/conda-forge/conda-forge-pinning-feedstock/blob/9904691dfd1261cf018b55e2e6cb95f8a3fd69a4/recipe/conda_build_config.yaml#L892 . Currently we mantain 0.9.2 and 0.15.0 as old libfranka versions to be rebuilt with recent versions of deps, see https://github.com/conda-forge/libfranka-feedstock/blob/main/conda-forge.yml#L3-L5 . Can we use libfranka 0.21.2 here? If not, we can add 0.20.4 as abi migration branch in libfranka-feedstock (fyi @nmarticorena).

@traversaro
Copy link
Copy Markdown
Member

Replace uses of tl_expected with the vendored version in rcpputils, I've made it an explicit dependency, but it's included via rclcpp so there are some warnings about overdependency. tl_expected is deprecated and will be removed in ROS Lyrical Luth (see https://index.ros.org/p/tl_expected/#humble)

Can't we just use the conda-forge package for it? That is the conda equivalent to "Use tl/expected.hpp from libexpected-dev".

@traversaro
Copy link
Copy Markdown
Member

traversaro commented May 11, 2026

Replace uses of tl_expected with the vendored version in rcpputils, I've made it an explicit dependency, but it's included via rclcpp so there are some warnings about overdependency. tl_expected is deprecated and will be removed in ROS Lyrical Luth (see https://index.ros.org/p/tl_expected/#humble)

Can't we just use the conda-forge package for it? That is the conda equivalent to "Use tl/expected.hpp from libexpected-dev".

In a nutshell, I think we can just define the libexpected-dev rosdep key to cpp-expected, see https://prefix.dev/channels/conda-forge/packages/cpp-expected and http://github.com/conda-forge/cpp-expected-feedstock .

@traversaro
Copy link
Copy Markdown
Member

@esteve can we use the "Full Rebuild May 2026: bump ros2-distro-mutex to 0.9.0 and build_number to 18" title scheme, used in other PRs? That make it easier to find full rebuilds PR by specifying the build number and the mutex version.

@esteve esteve changed the title chore: full rebuild for humble (20260511) Full Rebuild May 2026: bump ros2-distro-mutex to 0.9.0 and build_number to 18 May 11, 2026
@esteve esteve force-pushed the humble-full-rebuild-20260511 branch 2 times, most recently from 87fb6af to ce47cd9 Compare May 11, 2026 17:05
@esteve
Copy link
Copy Markdown
Contributor Author

esteve commented May 11, 2026

Replace uses of tl_expected with the vendored version in rcpputils, I've made it an explicit dependency, but it's included via rclcpp so there are some warnings about overdependency. tl_expected is deprecated and will be removed in ROS Lyrical Luth (see https://index.ros.org/p/tl_expected/#humble)

Can't we just use the conda-forge package for it? That is the conda equivalent to "Use tl/expected.hpp from libexpected-dev".

In a nutshell, I think we can just define the libexpected-dev rosdep key to cpp-expected, see https://prefix.dev/channels/conda-forge/packages/cpp-expected and http://github.com/conda-forge/cpp-expected-feedstock .

I've replaced tl-expected with cpp-expected / libexpected-dev in 51e4152, does that address your feedback?

@esteve
Copy link
Copy Markdown
Contributor Author

esteve commented May 11, 2026

Pin poco to 1.15.0 because the version of libfranka on conda-forge that ROS Humble depends is built for 1.15.0 and letting Pixi upgrade poco would cause a conflict.

I think we should have the abi_migration_branches active for all libfranka versions in conda-forge to avoid this, so we should be able to use 1.15.1 as done in https://github.com/conda-forge/conda-forge-pinning-feedstock/blob/9904691dfd1261cf018b55e2e6cb95f8a3fd69a4/recipe/conda_build_config.yaml#L892 . Currently we mantain 0.9.2 and 0.15.0 as old libfranka versions to be rebuilt with recent versions of deps, see https://github.com/conda-forge/libfranka-feedstock/blob/main/conda-forge.yml#L3-L5 . Can we use libfranka 0.21.2 here? If not, we can add 0.20.4 as abi migration branch in libfranka-feedstock (fyi @nmarticorena).

I've removed the pin, Pixi should now pick whatever version of poco is compatible.

@traversaro
Copy link
Copy Markdown
Member

Pin poco to 1.15.0 because the version of libfranka on conda-forge that ROS Humble depends is built for 1.15.0 and letting Pixi upgrade poco would cause a conflict.

I think we should have the abi_migration_branches active for all libfranka versions in conda-forge to avoid this, so we should be able to use 1.15.1 as done in https://github.com/conda-forge/conda-forge-pinning-feedstock/blob/9904691dfd1261cf018b55e2e6cb95f8a3fd69a4/recipe/conda_build_config.yaml#L892 . Currently we mantain 0.9.2 and 0.15.0 as old libfranka versions to be rebuilt with recent versions of deps, see https://github.com/conda-forge/libfranka-feedstock/blob/main/conda-forge.yml#L3-L5 . Can we use libfranka 0.21.2 here? If not, we can add 0.20.4 as abi migration branch in libfranka-feedstock (fyi @nmarticorena).

I've removed the pin, Pixi should now pick whatever version of poco is compatible.

I bumped libfranka to 0.21.2, as the changes w.r.t. to 0.20.4 are minimal. I also added a fix for #397 .

@nmarticorena
Copy link
Copy Markdown
Contributor

I bumped libfranka to 0.21.2, as the changes w.r.t. to 0.20.4 are minimal. I also added a fix for #397 .

FWIW, I recently installed libfranka on a brand new FR3 manually using libfranka 0.21.2 from conda-forge and ros-humble, so I can confirm it works normally

@esteve
Copy link
Copy Markdown
Contributor Author

esteve commented May 12, 2026

@traversaro can you trigger another CI run? I've fixed the patches for Windows and macOS, but I have no way of testing them locally as I don't have either. Thanks.

@traversaro
Copy link
Copy Markdown
Member

I forced a full rebuild, it is possible that this exposed some new failures that were hidden by the cached results.

@traversaro
Copy link
Copy Markdown
Member

I am a bit confused by whole the:

autoware_trajectory:
  remove_host: ["ros-humble-tl-expected"]
  remove_run: ["ros-humble-tl-expected"]
  add_host: ["cpp-expected"]
  add_run: ["cpp-expected"]

As we are still building a ros-humble-tl-expected, that could conflict with conda-forge's cpp-expected. Perhaps it can make sense to just patch https://github.com/PickNikRobotics/cpp_polyfills/blob/main/tl_expected/CMakeLists.txt to avoid install its header file (so basically commenting out https://github.com/PickNikRobotics/cpp_polyfills/blob/main/tl_expected/CMakeLists.txt#L16-L19), and add a run dependeny for it on cpp-expected? In this way we do not need to patch all packages that uses ros-humble-tl-expected, and using ros-humble-tl-expected will do the "right" thing, instead of clobbering.

Copy link
Copy Markdown

@mhubii mhubii left a comment

Choose a reason for hiding this comment

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

lbr_fri_ros2_stack versions look good now (version mismatch #398).

@esteve
Copy link
Copy Markdown
Contributor Author

esteve commented May 12, 2026

As we are still building a ros-humble-tl-expected, that could conflict with conda-forge's cpp-expected. Perhaps it can make sense to just patch https://github.com/PickNikRobotics/cpp_polyfills/blob/main/tl_expected/CMakeLists.txt to avoid install its header file (so basically commenting out https://github.com/PickNikRobotics/cpp_polyfills/blob/main/tl_expected/CMakeLists.txt#L16-L19), and add a run dependeny for it on cpp-expected? In this way we do not need to patch all packages that uses ros-humble-tl-expected, and using ros-humble-tl-expected will do the "right" thing, instead of clobbering.

I don't think this is the right approach:

  • tl_expected already installs headers in a location separate from cpp-expected/libexpected-dev, so there's no conflict
  • Patching tl-expected to not install its headers is not necessary
  • I don't see the point of making cpp-expected depend tl-expected, messing with the dependency chain of a package feels wrong
  • tl-expected is declared as deprecated and will be removed soon

I added those add/remove lines because I assumed that each package was built in isolation and I wanted to make sure that tl-expected was not installed when building the the patched packages.

@traversaro
Copy link
Copy Markdown
Member

tl_expected already installs headers in a location separate from cpp-expected/libexpected-dev, so there's no conflict

Ah, I missed this. Then the current approach is fine for me.

@esteve
Copy link
Copy Markdown
Contributor Author

esteve commented May 12, 2026

The ubuntu-24.04-arm CI job is failing with this:

│ [INFO] [launch]: All log files can be found below /home/runner/.ros/log/2026-05-12-09-36-53-809415-runnervm6gd1v-53672
 │ [INFO] [launch]: Default logging verbosity is set to INFO
 │ [INFO] [robot_state_publisher-1]: process started with pid [53674]
 │ [robot_state_publisher-1] [INFO] [1778578613.889796056] [robot_state_publisher]: got segment base_link
 │ test_node_output (robot_state_publisher_smoke_test_launch.TestRobotStatePublisher.test_node_output) ... ok
 │ [robot_state_publisher-1] [INFO] [1778578613.890425406] [robot_state_publisher]: got segment child_link
 │ ----------------------------------------------------------------------
 │ Ran 1 test in 0.070s
 │ OK
 │ [INFO] [robot_state_publisher-1]: sending signal 'SIGINT' to process[robot_state_publisher-1]
 │ [robot_state_publisher-1] [INFO] [1778578613.893294590] [rclcpp]: signal_handler(SIGINT/SIGTERM)
 │ [robot_state_publisher-1] terminate called after throwing an instance of 'rclcpp::exceptions::RCLError'
 │ [robot_state_publisher-1]   what():  could not create subscription: rcl node's context is invalid, at /home/runner/work/ros-humble/ros-humble/output/bld/rattler-build_ros-humble-rcl_1778571403/work/ros-humble-rcl/src/work/src/rcl/node.c:428
Error: OR] [robot_state_publisher-1]: process has died [pid 53674, exit code -6, cmd '$PREFIX/lib/robot_state_publisher/robot_state_publisher --ros-args -r __node:=robot_state_publisher --params-file /tmp/launch_params_hq844pmy'].
 │ test_exit_codes (robot_state_publisher_smoke_test_launch.TestRobotStatePublisherPostShutdown.test_exit_codes) ... FAIL
 │ ======================================================================
 │ FAIL: test_exit_codes (robot_state_publisher_smoke_test_launch.TestRobotStatePublisherPostShutdown.test_exit_codes)
 │ ----------------------------------------------------------------------
 │ Traceback (most recent call last):
 │   File "$SRC_DIR/robot_state_publisher_smoke_test_launch.py", line 56, in test_exit_codes
 │     launch_testing.asserts.assertExitCodes(proc_info)
 │   File "$PREFIX/lib/python3.12/site-packages/launch_testing/asserts/assert_exit_codes.py", line 62, in assertExitCodes
 │     assert info.returncode in allowable_exit_codes, 'Proc {} exited with code {}'.format(
 │            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 │ AssertionError: Proc robot_state_publisher-1 exited with code -6
 │ ----------------------------------------------------------------------
 │ Ran 1 test in 0.001s
 │ FAILED (failures=1)

Seems to be an internal rclcpp/rcl issue not related to packaging, I don't know what is expected to be done in these cases.

@traversaro
Copy link
Copy Markdown
Member

Seems to be an internal rclcpp/rcl issue not related to packaging, I don't know what is expected to be done in these cases.

I think this was just a flaky failure, restarting seems that the test pass fine.

@esteve
Copy link
Copy Markdown
Contributor Author

esteve commented May 13, 2026

Looks like https://github.com/RoboStack/ros-humble/actions/runs/25725011648/job/75655014701?pr=403 (osx-arm64) built the packages fine, but there was a DNS resolution error for github.com that made the job fail. At least the Ubuntu jobs passed.

esteve added 5 commits May 13, 2026 09:58
Signed-off-by: Esteve Fernandez <esteve.fernandez@bonsairobotics.ai>
Signed-off-by: Esteve Fernandez <esteve.fernandez@bonsairobotics.ai>
Signed-off-by: Esteve Fernandez <esteve.fernandez@bonsairobotics.ai>
Signed-off-by: Esteve Fernandez <esteve.fernandez@bonsairobotics.ai>
Signed-off-by: Esteve Fernandez <esteve.fernandez@bonsairobotics.ai>
esteve and others added 8 commits May 13, 2026 09:58
@esteve esteve force-pushed the humble-full-rebuild-20260511 branch from 4c7f9c2 to 16cf4e8 Compare May 13, 2026 08:59
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.

4 participants