Skip to content

ABI problems when mixing packages.o.o debian packages and ROS vendor packages #15

@j-rivero

Description

@j-rivero

Problem appeared in osrf/vrx#839. The docker image for VRX installs both the packages.o.o debians and the ROS vendor jazzy binary packages since it requires the Python bindings. While it is true that sdformat binary releases are ABI compatible following the semver schema but that mix of both package sets can end up calling Python files from debians that use the libsdformat from ROS vendor packages which is not compatible with the Python code.

Possible solutions or workaround:

  • Best solution for this problem is to resolve Enable Python Bindings #2
  • The workflow of releasing does not guarantee that the gazebo-release/${GZLIB}_vendor.git vendor repositories are in sync with the debian releases. It is complicated to redesign the process so this is avoided.
  • We can build the ROS Gazebo vendor packages in a colcon workspace after installing the .deb packages. That will make the ROS Gazebo vendor packages to use the underlying .deb packages and solve the problem. This however is fragile when using the rosdep installations or other ros-jazzy-* installation since dependencies could bring the ROS Gazebo vendor packages back. Sourcing the colcon workspace in the right order can make the setup to work but still not a solid solution.
  • Using LD_PRELOAD (suggested here) on the ros2 binary we can add a workaround but it would need a lot of manual lib configurations to cover all libraries and adds an overhead on ros2 calls even if gazebo not used.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions