Repository navigation
Compatibility packages: also require the distribution's mutex - #171
Merged
traversaro merged 1 commit intoOct 10, 2026
Merged
Conversation
ros-<distro>-<pkg> aliases only required ros2-<pkg> ==<version>. With several distributions publishing to one channel, another distribution's build of the same version satisfied the alias. Add the same mutex spec the canonical packages use (e.g. ros2-distro-mutex 0.21.* lyrical_*; a string-form mutex_package is used verbatim). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Tobias-Fischer
added a commit
to Tobias-Fischer/robostack-distros
that referenced
this pull request
Oct 10, 2026
…ex (#69) RoboStack/vinca#171 makes each ros-<distro>-<pkg> alias depend on its distribution's mutex as well as on ros2-<pkg> ==<version>; the check counted exactly one dependency and would treat such aliases as real packages. Both forms are accepted, so this can merge before the vinca pin moves. Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
traversaro
approved these changes
Oct 10, 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.
With
package_name_mode: both, eachros-<distro>-<pkg>alias only requiredros2-<pkg> ==<version>. When several distributions publish to one channel, another distribution's build of the same version satisfies that, so e.g.ros-lyrical-foocould pull in jazzy'sros2-foo.The alias now also requires the mutex spec the canonical packages get (
get_mutex_package_dependency, e.g.ros2-distro-mutex 0.21.* lyrical_*). Since every canonical build depends on its distribution's mutex and only one mutex build can be installed, this selects the rightros2-<pkg>build.Why not pin the exact build of
ros2-<pkg>: the alias is a separate recipe, so its build string (hash + number) isn't known when the recipe is generated (pin_subpackage(exact=True)only works within one recipe), and a rebuild ofros2-<pkg>would then need a rebuild of the alias too. The mutex is what already distinguishes distributions.String-form
mutex_package(legacy): the string is used verbatim, exactly as for the canonical packages; it disambiguates only as far as that string does (e.g.... humble/humble_*build string). Nomutex_package: unchanged.is_legacy_compatibility_outputnow matches on the first run requirement so it recognises the new aliases.Verified: new parametrized test (dict and string mutex); full vinca suite passes (263 passed); generated recipes for lyrical (on top of the current robostack-integration branch) contain e.g.
🤖 Generated with Claude Code