Repository navigation
Generate recipes and build workflows with vinca-rs - #221
Open
Tobias-Fischer wants to merge 1 commit into
Open
Tobias-Fischer wants to merge 1 commit into
Tobias-Fischer wants to merge 1 commit into
Conversation
This was referenced Nov 14, 2026
vinca-rs (https://github.com/Tobias-Fischer/vinca-rs) replaces vinca: it generates the recipes of every distribution and platform and the staged build workflows. - tools/robostack.py: generate-recipes, create-snapshot, check-deps, the pinning and rebuild planning go through vinca-rs (requirements, snapshot, generate, workflow); generate's skip-existing compares exact build strings, so `-n` is gone. check-deps solves in one vinca-rs process (humble osx-arm64: 161 s -> 30 s). - vinca-rs 0.1.7 comes as a conda package from the prefix.dev channel tobias-fischer/robostack-tools (built by its release workflow), so no CI job compiles it. pixi.lock from pixi 0.81, the version CI uses. - The build template (.github/build-template.yaml) and the build-recipes action run the generated jobs; tests for the workflow generation and the build timings. - The ros-<distro>-* compatibility packages are noarch: every platform's jobs build and upload them, the upload skips what's already there. - CI: the pull request workflow and its jobs are named by what they do, and its runs are grouped by a fixed key. - Additional recipes need an `override:` reason when they replace a released package (RoboStack/vinca#126): those replaced by releases are dropped (lyrical and rolling autoware packages, humble mujoco_vendor, rolling rtabmap), the rest are explained. rolling autoware_lanelet2_extension's patches are refreshed for its release 1.1.0 (rclcpp includes; the GCC-only warning flag not for MSVC). - humble tracetools is rebuilt (remove_host pkg-config now also removes the native-only host pkg-config). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Tobias-Fischer
force-pushed
the
vinca-rs/1-generate
branch
from
November 14, 2026 12:07
b6e27df to
2ed15d1
Compare
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.
Each PR in this stack (#221 → #222 → #223 → #224 → #225) is one commit and builds on the previous one; together they supersede #217.
Recipes, snapshots and build workflows now come from vinca-rs, a Rust rewrite of vinca. It reuses pixi-build-ros for
package.xmlparsing, the requirement rules and the build scripts, and rattler-build's crates for rendering.Changes
tobias-fischer/robostack-tools, built by its release workflow, so no CI job compiles it.rs <d> generate-recipesrunsvinca-rs generate. Already-published recipes are matched by exact name, version and build string, which rattler-build's own renderer computes, so-nis gone fromtestpr.yaml.rs <d> gharunsvinca-rs workflowfrom.github/build-template.yaml. That template carries whatrobostack.pyused to patch into vinca-gha's output: run name, concurrency, per-distro token secret,contents: read, env. The job steps live in.github/actions/build-recipes, so a job is a few lines and many more jobs fit GitHub's 500 KiB limit.needsonly the jobs building its dependencies, not the whole previous stage. A failure then only skips what depends on it.vinca-rs workflow --jsonwrites vinca-gha --json: write the batched stages instead of a workflow vinca#201's stage format, with the same ids, so Staged builds for pull requests and releases #216 can switch to it.rs <d> create-snapshotrunsvinca-rs snapshot: the same output as vinca-snapshot, in 23 s instead of 6 min.check-deps, pinning and rebuild planning read requirements fromvinca-rs requirements; check-deps solves in one vinca-rs process (humble osx-arm64: 161 s → 30 s).ros-<distro>-*compatibility packages arenoarch: generic: every platform's jobs build and upload them, and the upload skips what's already there.override:reason when an additional recipe replaces a released package (Raise an error if snapshot and additional_recipes are conflicting vinca#126). Those the releases caught up with are dropped: the autoware packages that lyrical and rolling took from humble "until released", humble's mujoco_vendor and rolling's rtabmap. rolling's autoware_lanelet2_extension thus builds its release 1.1.0, with its patches refreshed (rclcpp includes; the GCC-only warning flag not passed to MSVC). The remaining overrides got reasons.What changes in the packages
vinca-rs was compared with vinca 74d1e85 (RoboStack/vinca#200) by meaning, for every distro and platform: the same recipes, sources, patches, build numbers, metadata and test files. The intended differences:
package_contentstest for itspackage.xml(Automatically add existence tests vinca#108).<build_type>that builds withament_cmake*is ament (async_web_server_cpp,mrt_cmake_modules).conditional_python_dependency(Conditionally build Python-dependent Lyrical libraries across Pythons 3.12-3.14 #193) is supported, with conditions evaluated (conditionpart of the dependency tag is ignored in some case vinca#189).remove_host: [pkg-config]now also removes the native-only host pkg-config.Tested
pixi run rs checkpasses, andpytest tools/testspasses.Notes
🤖 Generated with Claude Code