Change package prefix to ros- or ros2-#104
Conversation
|
Personally I would strongly prefer to also generate the old name, at least for a deprecation period, that from what I understand what was we had consensus on #97 (comment) . I really prefer to avoid breaking all existing robostack examples and existing human and llm knoledge (and I am happy to work on adding that). |
|
Makes sense. But then we let those point to the renamed packages instead of the other way around. |
Yes, sure! |
|
@baszalmstra do you want to implement the last small changes required so we can merge here? |
4c3b828 to
ebdfcee
Compare
ebdfcee to
338c234
Compare
|
@Tobias-Fischer @traversaro I implemented the changes and update the PR description to describe what happened. |
|
LGTM, what do you think @traversaro? |
|
Thanks and sorry for the delay! |
Why
ROS package names currently include the full ROS distribution, for example
ros-humble-rclcpp. This makes project configuration specific to one distribution and means package names have to change when moving from Humble to Jazzy, even though the selected channel and distro mutex already determine which ROS distribution is installed.Keeping the ROS major version in the name is still useful. It avoids collisions and makes it clear whether a package belongs to ROS 1 or ROS 2. The new names therefore use
ros-for ROS 1 andros2-for ROS 2, for exampleros2-rclcpp.What happens after this is merged
Nothing changes for existing Vinca configurations by default. They continue generating distro-qualified names such as
ros-humble-rclcpp.A distribution can start the migration by enabling
both. Vinca will then generate the new names alongside the old names. Installing an old name will install the corresponding package under its new name, which gives downstream repositories, examples, users, and tooling time to migrate without breaking existing configurations.Once the migration is complete, the distribution can switch to
newand stop generating the old compatibility names.What the legacy packages do
In
legacymode, distro-qualified packages remain normal packages and contain the ROS package itself, just as they do today.In
bothmode, the package under the new name contains the ROS package. The distro-qualified legacy package becomes a lightweight compatibility package that depends on the same version under its new name. For example, installingros-humble-rclcppinstallsros2-rclcpp. This preserves existing environment files and commands without building or installing two copies of RCLCPP.In
newmode, the legacy packages are no longer generated.Configuration
Use
package_name_modeinvinca.yamlto select the desired stage:Available values:
legacyis the default. It preserves the current distro-qualified packages and their current behavior.bothstarts the migration. The new names contain the ROS packages, while the old names remain as compatibility packages.newcompletes the migration by generating only the newros-orros2-names.Existing configurations that omit
package_name_moderemain onlegacy.Closes #97
Validation
All tests and GitHub CI checks pass on Ubuntu, macOS, and Windows.