Repository navigation
vinca-gha: stage the generated recipes without resolving the distribution again - #172
Merged
Tobias-Fischer merged 2 commits intoOct 10, 2026
Merged
Conversation
…tion again vinca-gha regenerated the outputs of every package of the ROS distribution (build_all, ~1900 packages: package.xml downloads, license normalisation) only to read their host/run dependencies, although generate-recipes had just written the recipes it orders. The stages only order those recipes, so their own requirements are enough; vinca.yaml is still read for the distribution and the pixi versions. This also keeps recipes that the build_all tree lacked: it lists the live rosdistro release packages, so a recipe from a snapshot package no longer in the index (e.g. lyrical's easynav_gps_localizer, roboplan_core) was silently left out of the workflow. The recipes are read in sorted order so the workflow does not depend on the file system's directory order. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
traversaro
approved these changes
Oct 10, 2026
traversaro
left a comment
Member
There was a problem hiding this comment.
GReat! After you fix the conflict, I guess this is ready to merge.
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.
vinca-ghacalledget_full_tree(), which regenerates the outputs of every package of the distribution (build_all, ~1900 packages for lyrical: package.xml downloads, SPDX license normalisation, mutex generation again), only to read their host/run dependency names.vinca(generate-recipes) has just written the recipes the workflow orders, so their ownrequirements.host/runare enough to build the graph.vinca.yamlis still read (cheaply) forros_distroand the pixi versions.Side effects:
build_alltree lacked are no longer dropped.build_alluses the live rosdistro release packages, so a recipe for a snapshot package that is no longer in the index was silently left out of the workflow ("filter out packages that we are not actually building"). In lyrical that hiteasynav_gps_localizer,roboplan_common,roboplan_core(and dependents of the latter were staged without waiting for them).Measured locally (RoboStack monorepo,
rs <distro> generate-recipesthenrs <distro> gha --batch-size 25, vinca = current robostack-integration with/without this commit):The workflow is not byte-identical: within a dependency stage the package order (and so which packages share a batch job) followed the topological order of the full tree and now follows the recipes. Every package's dependency stage is identical: same jobs and per-package stage for jazzy/humble linux-64 and lyrical osx-arm64; for lyrical linux-64 the only differences are the packages listed above that were previously dropped, and the roboplan packages that now wait for
roboplan_core. The host/run dependency names read from the recipes equal those of the full tree for all 2229 common packages.Tests:
get_recipe_requirementsand amain()test that stages recipes from ./recipes without resolving anything; full vinca suite passes (263 passed).🤖 Generated with Claude Code