Repository navigation
extends: build a vinca.yaml on top of a shared one - #163
Merged
traversaro merged 3 commits intoOct 15, 2026
Merged
Conversation
A configuration can extend another one (relative path). Package lists are combined, mutex_package is merged (run_constraints replaced per package), other keys of the extending file win. pkg_additional_info.yaml, dependencies.yaml, patches, tests and conda_index files of every layer are combined, each relative to its configuration. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…a-gha reads the layered configuration Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The recipe refers to patch/<file>; the template copies the patch from its configuration's patch directory. Before, a path relative to a common root was copied relative to the working directory, which broke for patches outside it (e.g. with extends). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Tobias-Fischer
force-pushed
the
feat/config-layering
branch
from
October 10, 2026 04:26
ee60ae5 to
b70f0f0
Compare
Member
Contributor
Author
Done :). Would you mind taking a quick look please @traversaro? |
traversaro
approved these changes
Oct 15, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This lets several configurations share one base, e.g. one
vinca.yamlper ROS 2 distribution on top of a shared one, as RoboStack's monorepo does:How the layers combine:
packages_select_by_deps,packages_excludeandpackages_skipare combined, base first.mutex_packageis merged: the extending file's keys win, and itsrun_constraintsreplace the base's constraint on the same package and add the others.pkg_additional_info.yamland<patch_dir>/dependencies.yaml: per package, the extending file's keys win;tests/: per package, the extending file's file wins;conda_indexfiles: the extending file's mappings are looked up first.Paths (
patch_dir, the snapshot paths,conda_indexfiles) are now resolved relative to the file that sets them, rather than the working directory. vinca is normally run in the directory of itsvinca.yaml, so that resolves to the same paths. vinca-gha's additional-recipes check now reads the layered configuration, soskip_existingfrom a base is seen too.Tests: six new tests cover lists, scalars, selectors, the mutex merge, per-layer files, file-relative paths and cycle detection. All 267 tests pass, ruff and pyrefly are clean, and the README documents
extends.Checked against RoboStack: RoboStack's monorepo previously did this merging in its own scripts. With this branch, its distributions'
vinca.yamlfiles just extend the shared one, and the generated recipes are identical (rolling, lyrical, jazzy and humble on linux-64, and humble on win-64).🤖 Generated with Claude Code