Repository navigation
fix(appimage): bundle dlopen'd RMW and typesupport libraries - #15
Merged
Merged
Conversation
ldd only reports link-time dependencies, so the RMW providers and the rosidl typesupport libraries — both loaded with dlopen — were never copied and every 0.9.0 AppImage aborted at startup with "failed to load any RMW implementations" on a machine without ROS. Bundling moves out of the workflow into packaging/make_appdir.sh so it can be run and tested locally. Dependencies are walked from the original files because a copy's $ORIGIN rpath no longer resolves. No RMW is forced: both providers are shipped and RMW_IMPLEMENTATION is left to the environment, since it has to match the user's other nodes. Bundled message definitions are a fallback only — AMENT_PREFIX_PATH is appended, so a sourced workspace keeps priority for custom types. Verified in a clean ubuntu:24.04 container with no ROS: the AppImage starts and streams three topics; with a type missing from the bundle that topic is skipped without ROS sourced, and resolves once a workspace is sourced. Co-Authored-By: Claude Opus 5 <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.
Fixes #10.
Summary
lddonly reports link-time dependencies. The RMW providers and therosidl_typesupport_*libraries are loaded withdlopen, so they were never copied into the AppDir and every 0.9.0 AppImage aborted on a clean machine withfailed to load any RMW implementations.packaging/make_appdir.sh, so it can be run and tested locally instead of only in CI.$ORIGINrpath no longer resolves, which silently truncated the closure.RMW_IMPLEMENTATIONis left to the environment (it has to match the user's other nodes); both providers are shipped so either choice works.AMENT_PREFIX_PATHis appended, so a sourced workspace keeps priority. The AppImage is not self-sufficient for custom message types, by design.Size goes from ~20 MB to ~20 MB packed (AppDir 49 MB → 69 MB).
Test plan
ubuntu:24.04container with no ROS installed — the exact repro from AppImage (all distros) missing RMW provider .so — dlopen'd libs not captured by ldd bundling #10RMW_IMPLEMENTATIONunset andrmw_cyclonedds_cppboth work (matching publishers)🤖 Generated with Claude Code