ROS plugins v2 misc fixes
Metadata
Current evaluation
Merged ROS v2 plugin fixes to detect local ROS packages in the part install or underlay and skip rosdep resolution for them, with added core20 spread coverage.
Resolution: closed resolved
Reason: PR #3536 was approved and merged into master via commit 1f23bb377.
Evaluated by: mr-cal-bot
No scores available.
Issue body
This PR most notably,
- looks for ROS packages in `$SNAPCRAFT_PART_INSTALL/opt/ros/$ROS_DISTRO` in case the workspace exists (e.g. provided by a build-snap) during the build step
- does not `rosdep resolve` packages that are available locally in `$SNAPCRAFT_PART_INSTALL/opt/ros/$ROS_DISTRO` during stage step. Such locally available package may be part of the built sources or provided by a stage-snap. Furthermore, it fixes the following current issue; if the source contains packages `foo` & `bar` - two packages that are not released in the rosdistro database - where `foo` depends on `bar`, staging fails as it tries to `rosdep resolve` the `bar` key (which does not exists since it is not released). With this fix, it finds `bar` locally and thus does not try to resolve it.
- port 'test-snapcraft-fake-ros-package-core18' to core20 to test the above 2 bullets
Note:
- I own the test-snapcraft-fake-ros-package-core20 snap that's used in the new spread test, I imagine we should transfer ownership
- [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] Have you successfully run `./runtests.sh static`?
- [x] Have you successfully run `./runtests.sh tests/unit`?
-----
Evaluation history
| Date | Model | Scores | Action | Summary |
|---|---|---|---|---|
| stealth/space-bunny-alpha | — | closed resolved | Merged ROS v2 plugin fixes to detect local ROS packages in the part install or underlay and skip rosdep resolution for them, with added core20 spread coverage. | |
| stealth/space-bunny-alpha | — | closed resolved | Merged via commit 1f23bb377: ROS v2 plugins now use local ROS underlays and avoid rosdep resolution for locally available packages; core20 spread coverage was added. | |
| stealth/space-bunny-alpha | — | closed resolved | Merged (commit 1f23bb377): ROS v2 plugins now look for local packages in $SNAPCRAFT_PART_INSTALL/opt/ros/$ROS_DISTRO during build/stage and skip rosdep resolve for them, fixing staging failures for non-rosdistro packages; core20 spread test added. | |
| stealth/space-bunny-alpha | — | closed resolved | Merged in canonical/snapcraft#3536 (commit 1f23bb377): ROS plugins v2 now detect local ROS packages and skip rosdep resolution for them; core20 spread coverage was added. | |
| qwen/qwen3.6-35b-a3b | — | — | Merged. Fixes ROS plugins v2 staging failures by checking local ROS directories and skipping rosdep resolution for locally available packages. Updated tests for core20. Approved by two reviewers and passed CI. | |
| qwen3.6-35b-a3b-mtp-q6 | — | — | Merged into master. Fixed ROS plugins v2 to check local install paths and skip rosdep resolution for locally available packages, preventing staging failures. Added a core20 test. Author acknowledged a related user issue for future investigation. |
Update history
No update history recorded yet.
Related issues
| Issue | Project | State | Summary | Similarity |
|---|---|---|---|---|
| #3566 ROS 2 plugins v2 misc fixes | snapcraft | merged | Merged #3566 via 6f80a4cee, fixing ROS 2 v2 install paths and local-package staging, with new spread tests. | |
| #1882288 ROS plugins: allow skip keys for rosdep | snapcraft (launchpad) | closed | Fixed in snapcraft plugins V2 via PR #3536 and #3566. Rosdep resolution was changed to use locally available packages, making a 'skip keys' option unnecessary. | |
| #3664 ROS plugins v2: respect source-subdir key | snapcraft | merged | Merged PR #3664, with commit 09eb744e5, made ROS v2 Colcon/catkin plugins respect source-subdir, removed a redundant dependency, and added subdirectory tests. | |
| #3570 ROS V2 plugins: resolve conditional dependencies | snapcraft | merged | Merged PR #3570 in commit 1fa5484b9, enabling ROS V2 plugins to resolve package.xml dependencies conditioned on ROS_VERSION, ROS_DISTRO, or ROS_PYTHON_VERSION. | |
| #3676 ROS plugins v2: Exclude packages in stage snap from fetched packages during staging | snapcraft | closed | Closed unmerged as outdated; the maintainer said the ROS v2 stage-snap package-exclusion workaround needed a new discussion before proceeding. |