Skip to content

Generate recipes and build workflows with vinca-rs - #221

Open
Tobias-Fischer wants to merge 1 commit into
mainfrom
vinca-rs/1-generate
Open

Tobias-Fischer wants to merge 1 commit into
mainfrom
vinca-rs/1-generate

Conversation

@Tobias-Fischer

@Tobias-Fischer Tobias-Fischer commented Nov 14, 2026 •

Copy link
Copy Markdown
Collaborator

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.xml parsing, the requirement rules and the build scripts, and rattler-build's crates for rendering.

Changes

  • 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.
  • rs <d> generate-recipes runs vinca-rs generate. Already-published recipes are matched by exact name, version and build string, which rattler-build's own renderer computes, so -n is gone from testpr.yaml.
  • rs <d> gha runs vinca-rs workflow from .github/build-template.yaml. That template carries what robostack.py used 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.
  • rs <d> create-snapshot runs vinca-rs snapshot: the same output as vinca-snapshot, in 23 s instead of 6 min.
  • check-deps, pinning and rebuild planning read requirements from vinca-rs requirements; check-deps solves in one vinca-rs process (humble osx-arm64: 161 s → 30 s).
  • The ros-<distro>-* compatibility packages are noarch: generic: every platform's jobs build and upload them, and 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: vinca-rs requires an 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:

Tested

  • Build-branch-style runs of the new workflow for humble with uploads off: linux-64 22/22 and win-64 19/19 built and tested.
  • pixi run rs check passes, and pytest tools/tests passes.

Notes

🤖 Generated with Claude Code

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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

build:none PR build: build no packages, only run the checks (tooling, CI or docs changes)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant