catkin plugin: support recursive rosinstall files
Metadata
Current evaluation
Merged. Introduces a recursive-rosinstall boolean option to the Catkin plugin, enabling automatic resolution of nested rosinstall files unsupported by wstool. Defaults to false. Resolves #1714 following successful review and CI checks.
Suggested action: —
No scores available.
Issue body
- [x] Have you followed the [guidelines for contributing](https://github.com/snapcore/snapcraft/blob/master/CONTRIBUTING.md)?
- [x] Have you signed the [CLA](http://www.ubuntu.com/legal/contributors/)?
- [x] If this is a bugfix. Have you checked that there is a bug report open for the issue you are trying to fix on [bug reports](https://bugs.launchpad.net/snapcraft)?
- [x] If this is a new feature. Have you discussed the design on the [forum](https://forum.snapcraft.io)?
- [x] Have you successfully run `./runtests.sh static`?
- [x] Have you successfully run `./runtests.sh unit`?
-----
Currently, the Catkin plugin supports rosinstall files in that, if you hand it a list of rosinstall files in the source, it'll merge them into the workspace and fetch the repositories listed therein. However, what happens if _those_ repositories have rosinstall files of their own? This is not a situation wstool handles, and is something vendors script around.
This PR resolves #1714 by adding explicit support in Snapcraft for this situation by way of a new boolean option: `recursive-rosinstall`. This option defaults to false (since that's typically how wstool behaves), but if it's true, it'll continue merging/updating the workspace with newly-fetched rosinstall files until no more are found.
Evaluation history
| Date | Model | Scores | Action | Summary |
|---|---|---|---|---|
| qwen/qwen3.6-35b-a3b | — | — | Merged. Introduces a recursive-rosinstall boolean option to the Catkin plugin, enabling automatic resolution of nested rosinstall files unsupported by wstool. Defaults to false. Resolves #1714 following successful review and CI checks. | |
| qwen3.6-35b-a3b-mtp-q6 | — | — | Merged. Adds a recursive-rosinstall boolean option to Snapcraft's Catkin plugin, enabling recursive fetching and merging of nested rosinstall files to work around wstool limitations. Defaults to false. | |
| qwen3.6-35b-a3b-mtp-q6 | — | — | Merged. Adds a recursive-rosinstall boolean option to the Catkin plugin, enabling automatic fetching and merging of nested rosinstall files. Defaults to false to match wstool behavior. Resolves #1714. |
Update history
No update history recorded yet.
Related issues
| Issue | Project | State | Summary | Similarity |
|---|---|---|---|---|
| #1714 catkin plugin: recursively merge rosinstall files | snapcraft | closed | The request to recursively merge rosinstall files in the catkin plugin was closed without implementation or discussion. The feature was not added and the issue appears abandoned. | |
| #1314 catkin plugin: add support for rosinstall files | snapcraft | merged | Merged. Introduces a rosinstall-files property to the Catkin plugin, allowing Snapcraft to manage ROS workspace dependencies. Approved by a reviewer and merged after resolving CI test delays. Resolves Launchpad bug 1533735. | |
| #1927 catkin plugin: extract Wstool into its own module | snapcraft | merged | Merged after resolving conflicts. Extracts Wstool from the catkin plugin into a standalone module to support recursive rosinstall file parsing. Approved by two reviewers with passing CI checks. | |
| #1473 catkin plugin: rosinstall-files is a pull property | snapcraft | merged | Merged a maintainer correction updating the catkin plugin. The rosinstall-files property was incorrectly configured as a push property and has been changed to a pull property. Approved by two reviewers with a three-line fix across two files. | |
| #1715 catkin plugin: detect and gracefully handle rosinstall clashes | snapcraft | closed | Rejected. Maintainer cancelled the feature because vendors do not require recursive rosinstall parsing or clash detection, and recursive fetching is already supported. Low demand and implementation complexity led to abandonment. | |
| #1533735 Catkin plugin: Support rosinstall files | snapcraft (launchpad) | closed | Closed without implementation. The request to add rosinstall file support to the Catkin plugin was abandoned due to zero comments and prolonged inactivity. | |
| #152 Catkin plugin: Add support for ROS tools. | snapcraft | merged | Merged Catkin plugin updates to properly install ROS packages, include non-source files, and enable ROS tools via an updated wrapper environment. Resolved an xml2-config conflict while planning to remove the redundant roscore plugin. Tests doubled. |