Skip to content

ROS: How to deal with the package naming of source build ros packages #355

@ruben-arts

Description

@ruben-arts

TL;DR: Should we prefix the package names with ros-<distro>- or not?

Current behavior

We currently always prefix a package name that we can find in the provided ROS Distro with ros-<distro>-. We did this as Pixi then understands that it has to use the local package and not redownload it from the robostack channel.

Problem

This introduces some issues, what if there is a package in the package.xml that is not in the distro and not in the robostack.yaml?
We currently just say, that is not a package we know, use the same name in the dependencies.

For example, this is an issue in trying to convert https://github.com/ros-navigation/navigation2.
navigation2 depends on nav2_ros_common which is not yet in the jazzy distro (might never be, but that is not the point).
Because it's a ROS package, the backend will prefix it with the ros-<distro> on building it, but the packages that depend on it will not be able to resolve the name as a ROS package as it can't be found in the distro.

Thus, with the current setup, we can not build the workspace.

Solution ideas

  • We could add configuration to the [workspace] or [package] where you can define a custom map of some sorts to extend the mapping logic of the backend. But this would be a burden to understand and use.
  • We could not prefix the packages with the distro and do the distro specification through a dependency on a mutex package that defines the distro, but that would require a rebuild of RoboStack to also use that logic and would avoid users from installing multiple distro's at the same time in one environment.

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions