Skip to content

Migrate from tl_expected to libexpected-dev system package#81

Open
nbbrooks wants to merge 3 commits into
mainfrom
nbbrooks/migrate-tl-expected-to-libexpected-dev
Open

Migrate from tl_expected to libexpected-dev system package#81
nbbrooks wants to merge 3 commits into
mainfrom
nbbrooks/migrate-tl-expected-to-libexpected-dev

Conversation

@nbbrooks

Copy link
Copy Markdown
Member

Summary

cpp_polyfills 2.0.x (lyrical/rolling) dropped the tl_expected sub-package as part of the migration outlined in PickNikRobotics/generate_parameter_library#311. pick_ik's existing <depend>tl_expected</depend> breaks bloom-release for lyrical and rolling on Ubuntu Resolute (rosdep key unresolvable).

This PR follows the same migration pattern as PickNikRobotics/RSL#159:

  • package.xml dep: tl_expectedlibexpected-dev
  • CMake find_package: tl_expectedtl-expected (note dash, not underscore)
  • CMake target: tl_expected::tl_expectedtl::expected
  • Source includes: <tl_expected/expected.hpp><tl/expected.hpp>

libexpected-dev provides tl-expectedConfig.cmake on jammy/noble/resolute, so the change works for all 5 currently-active ROS distros (humble through rolling).

Test plan

  • CI passes on humble/jazzy/kilted (where tl_expected was previously available — confirms backwards compatibility)
  • CI passes on rolling (where the change is actually required)
  • After merge, bloom-release succeeds to lyrical and rolling (the blockers this PR unblocks)

🤖 Generated with Claude Code

nbbrooks and others added 3 commits June 26, 2026 18:41
cpp_polyfills 2.0.x (lyrical/rolling) dropped the tl_expected
sub-package, so packages depending on the rosdep key tl_expected
fail to resolve on ubuntu:resolute (lyrical and rolling base).

Follow the migration pattern from RSL #159:
- package.xml dep: tl_expected -> libexpected-dev
- CMake find_package: tl_expected -> tl-expected (dash)
- CMake target: tl_expected::tl_expected -> tl::expected
- source includes: <tl_expected/expected.hpp> -> <tl/expected.hpp>

libexpected-dev provides tl-expectedConfig.cmake on jammy/noble/
resolute, so the change works for all 5 ROS distros.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
The CI container ghcr.io/picknikrobotics/pick_ik:ci is built by
docker.yaml only on push (not pull_request), so PRs that change
package.xml always run against a stale image.

Running rosdep install at CI time picks up new system deps (like
the libexpected-dev migration in this PR) without waiting for a
container rebuild after merge.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
The pre-built CI container has the ROS GPG key baked into its
apt trusted.gpg keyring, and that key has now expired
(EXPKEYSIG F42ED6FBAB17C654). apt-get update fails for the
ros2-testing source, so rosdep install can't fetch any new
deps either.

Fetch the current ros.key from rosdistro at CI time. This is
already the recommended workaround in the ROS Discourse threads
on the topic.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
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.

1 participant