Skip to content

Replace packages_skip_by_deps / packages_remove_from_deps with packages_exclude / packages_skip; don't build conda_index-mapped ROS packages - #162

Merged
traversaro merged 3 commits into
RoboStack:masterfrom
Tobias-Fischer:feat/packages-exclude
Oct 9, 2026
Merged

traversaro merged 3 commits into
RoboStack:masterfrom
Tobias-Fischer:feat/packages-exclude

Conversation

@Tobias-Fischer

@Tobias-Fischer Tobias-Fischer commented Oct 8, 2026 •

Copy link
Copy Markdown
Contributor

Two simplifications, prompted by RoboStack's move to one repository for all ROS 2 distributions, where one shared package selection is narrowed per distribution and platform.

packages_exclude and packages_skip replace the two old keys

packages_skip_by_deps and packages_remove_from_deps almost always listed the same packages, and neither removed a package from packages_select_by_deps, so a shared selection was hard to narrow. They are replaced by:

  • packages_exclude: not built, and dropped from other packages' dependencies. This covers what used to be in both lists.
  • packages_skip: not built, but dependents keep the dependency, e.g. on a build that is already published. This is what used to be only in packages_skip_by_deps.

Both take selectors (- if: win / then: [...]), and both also take the package out of packages_select_by_deps.

The old keys are rejected with a message explaining how to convert them, rather than being kept alongside, so there is one way to do it. This is a breaking change for configurations that use them: a package from packages_remove_from_deps goes into packages_exclude, and a package that was only in packages_skip_by_deps goes into packages_skip.

ROS packages mapped to conda packages

When a rosdep key in a conda_index (e.g. tl_expected -> cpp-expected, sophus) is also a ROS package of the distribution, vinca used to build the ROS package under the conda package's name. That shadowed the real conda-forge package (e.g. no tl-expected CMake config for rsl). Dependencies already resolve to the conda package, so such ROS packages are now skipped and listed in the output ("Mapped to conda packages, not built").

Tests: the new tests cover selectors per platform, dependency removal, rejection of the old keys, and the shadowing skip. The existing tests are moved to the new keys. All 260 tests pass, ruff and pyrefly are clean, and the README documents the keys and the conversion.

Checked against RoboStack: generating recipes with this branch for RoboStack's monorepo, which already uses the new keys, gives the same results as before (jazzy linux-64: 1182 recipes; humble linux-64 and win-64).

🤖 Generated with Claude Code

Tobias-Fischer and others added 2 commits October 8, 2026 09:59
…dex maps to conda packages

- packages_exclude: not built, and dropped from other packages' dependencies
  (packages_skip_by_deps + packages_remove_from_deps)
- packages_skip: not built, dependents keep the dependency (packages_skip_by_deps)
- both also remove the package from packages_select_by_deps, and take selectors, so a
  shared selection can be narrowed per platform or configuration
- a ROS package whose name a conda_index maps to a conda package (e.g. tl_expected ->
  cpp-expected) is skipped, instead of being built under the conda package's name

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…adding keys

vinca now knows only packages_exclude and packages_skip; the old keys are rejected with
a message on how to convert them.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@Tobias-Fischer Tobias-Fischer changed the title packages_exclude / packages_skip; don't build ROS packages a conda_index maps to conda packages Replace packages_skip_by_deps / packages_remove_from_deps with packages_exclude / packages_skip; don't build conda_index-mapped ROS packages Oct 8, 2026
@traversaro

Copy link
Copy Markdown
Member

Can we accept the old keys with a warning? As in the snapshot case, it is a good idea not to prevent old distro to use the latest vinca unless it is strictly necessary

…h a warning

So that existing configurations keep working with a newer vinca.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@Tobias-Fischer

Copy link
Copy Markdown
Contributor Author

Good point, done: packages_skip_by_deps / packages_remove_from_deps keep their previous behaviour and only emit a deprecation warning pointing to packages_exclude / packages_skip, so older distro repos keep working with the latest vinca. Test and README updated.

🤖 Claude (AI assistant), on behalf of @Tobias-Fischer

@Tobias-Fischer

Copy link
Copy Markdown
Contributor Author

@traversaro are you happy to merge here?

@traversaro

Copy link
Copy Markdown
Member

Thanks!

@traversaro
traversaro merged commit ca9a82f into RoboStack:master Oct 9, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants