Repository navigation
Generate recipes, snapshots and build workflows with vinca-rs - #217
Tobias-Fischer wants to merge 27 commits into
Conversation
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- vinca-rs is a pixi source dependency (pixi-build-rust) - check-deps, pinning and rebuild planning read requirements from vinca-rs - create-snapshot runs vinca-rs snapshot - generate-recipes without -n: skip-existing compares exact build strings Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…b4c2b Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ain the rest vinca-rs requires an `override:` reason when an additional recipe replaces a package of the rosdistro snapshot (RoboStack/vinca#126). The autoware packages added to lyrical and rolling before their release there ("TODO: remove ... after they are released") are released now: they come from the releases again (rolling's autoware_lanelet2_extension patches refreshed for 1.1.0). The remaining ones get their reason: rplidar_ros (jazzy, lyrical), rtabmap (rolling), mujoco_vendor (humble), autoware_lanelet2_extension (lyrical: newer than its release). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…xtension includes; vinca-rs 839d695 - 276 jazzy snapshot entries had no dependencies, which vinca-rs requires: added from each entry's pinned release (`vinca-rs snapshot --fill-dependencies`), versions unchanged - rolling autoware_lanelet2_extension 1.1.0 uses rclcpp's clock and logging without including them - vinca-rs 839d695: published builds through pixi's repodata gateway Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… override reasons humble's mujoco_vendor 0.1.1 and rolling's rtabmap 0.23.13 are released, so the additional recipes (jazzy's 0.1.0 and 0.23.13) are no longer needed. rplidar_ros keeps its override, without a comment repeating it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
humble (osx-arm64): 161 s -> 30 s, the same report. Falls back to rattler-build per solve without vinca-rs. tools/pin_vinca_rs.py pins pixi.toml to the conda packages of a vinca-rs release. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
pixi.toml pins each platform's conda package of the vinca-rs release (tools/pin_vinca_rs.py), so no CI job compiles vinca-rs anymore (6-7 min each). The pixi-build preview and the git source dependency go. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ow's name Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…instead of per-platform release URLs Drops tools/pin_vinca_rs.py. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…v, python3-dbus, python3-pygnssutils-pip, python3-tabulate, python3-types-pyyaml, rtklib pixi-build-ros's robostack.yaml had these and the monorepo didn't; it will be generated from this repository's mappings. Its cartographer entry is left out: cartographer is a ROS package (removed from robostack.yaml on purpose, ros-humble 09bcd470). Recipes that change: plotjuggler gains lua (all distros), launch and nav2_common gain types-pyyaml (lyrical, rolling), orbbec_camera gains tabulate (rolling). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
plotjuggler (lua: all distributions), launch and nav2_common (types-pyyaml: lyrical, rolling), orbbec_camera (tabulate: rolling). robostack-bot rebuild. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ild-ros A daily PR on prefix-dev/pixi (crates/pixi_build_ros/robostack.yaml and robostack_distros.yaml), pushed to the fork vars.PIXI_FORK with secrets.PIXI_SYNC_TOKEN, once both are set: `pixi build` of ROS packages then maps rosdep keys as RoboStack does, and mappings are only edited here. distros/noetic/robostack.yaml: noetic's own mappings for pixi-build-ros (Qt 5, its xtensor), from RoboStack/ros-noetic. noetic isn't built here (no vinca.yaml); the sort and render-pinning tasks skip such folders. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Stacked three commits on this PR, so its CI is the end-to-end test of the shared rosdep mappings:
The lookup itself moves into pixi-build-ros (prefix-dev/pixi#7533); vinca-rs uses it in Tobias-Fischer/vinca-rs#3, which generates byte-identical recipes. — Claude (AI assistant), on behalf of @Tobias-Fischer |
…rors aren't conflicts - rs check reports entries in vinca.yaml packages_select_by_deps, patch/dependencies.yaml and pkg_additional_info.yaml for packages that the distribution (or, for shared/, no distribution) has: typos and leftovers that vinca silently ignores. - It found three in rolling, now removed: grid_map_octomap (add_host/add_run octomap), gz_launch_vendor (gz-launch 9.*, as lyrical), slam_toolbox (build: qt6-main when cross-compiling; host: libgl-devel and libopengl-devel on linux, blas-devel, ceres-solver * cpu*). None is in rolling's snapshot. - check_dependency_compat: a vinca-rs solve failure that isn't the solver's answer (render, network; its `error` field) raises instead of counting as a conflict. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ages vinca-rs builds them as noarch: generic (Tobias-Fischer/vinca-rs#5, from RoboStack/vinca#190 and RoboStack#212): every platform's jobs build and upload them, the upload skips what's already there, and generate's skip_existing reads the channel's noarch subdir. Takes effect with the vinca-rs release that has it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
vinca-rs 0.1.7: review fixes, the rosdep lookup, license, build scripts and requirement rules from pixi-build-ros, skip-existing matching from rattler-build, and ros-<distro>-* compatibility packages as noarch: generic. Its recipes for this repository (4 distributions x 5 platforms) differ from 0.1.6's only in: - noarch: generic in the 22501 compatibility recipes (each built once, uploaded from every platform's jobs, see the noarch upload commit); - humble tracetools: remove_host [pkg-config] now also removes the native-only host pkg-config (pkg-config stays in build), hence its rebuild (build_number 24). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Qt 5 / PyQt5 (kilted's rviz and rqt need Qt5) and xtensor 0.24.7, from RoboStack/ros-kilted, over shared/robostack.yaml's Qt 6. Mapping-only like noetic: kilted (EOL) isn't built here. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…orkspace/) vinca-rs copies files/<pkg>/ into that package's recipe directory (Tobias-Fischer/vinca-rs#7); until then, 0.1.7 keeps using its embedded copy. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Each layer's patch/dependencies.yaml is merged into its pkg_additional_info.yaml: a package's add_*/remove_* keys sit next to its build_number and cmake args. Both files were keyed, layered and merged per package the same way; vinca-rs 0.1.9 reads the fixes from there (Tobias-Fischer/vinca-rs#8). The merged files hold exactly what the two did (compared per package and key). import_distro merges an old repository's two files; the sort task, the unknown-entry check, docs and skills follow. vinca-rs 0.1.8+ also takes ros_workspace's activation scripts from shared/files/ and builds ament_cmake with Ninja on Windows. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ges on Windows Forces a rebuild of builtin_interfaces (where the long-path failure appeared in RoboStack/ros-humble#229), control_msgs, nav2_msgs, rcl_interfaces and rosbag2_interfaces, to check bld_ament_cmake.bat with Ninja and CMAKE_INTERMEDIATE_DIR_STRATEGY=SHORT (prefix-dev/pixi#7540 review). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The check passed: with Ninja, all five built on win-64 (run 43545144727). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
vinca-rs from its templates-check branch (pixi-build-ros at prefix-dev/pixi#7540's unified ament_cmake/cmake templates, built from source), and rebuilds of ros_workspace, ament_cmake_test, rcutils, builtin_interfaces, fastcdr and ruckig on every platform. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
5ba39f3 to
1438aef
Compare
|
Superseded by a stack of four PRs, one per commit, so each part can be reviewed (and merged) on its own: #221 (vinca-rs) → #222 (package fixes) → #223 (rosdep mappings shared with pixi-build-ros) → #224 (per-package files and dependency fixes). Together they hold exactly this PR's changes, without the temporary test commits. — Claude |
Recipes, snapshots and build workflows now come from vinca-rs, a Rust rewrite of vinca. It reuses pixi-build-ros for
package.xmlparsing and rattler-build's crates for rendering.Changes
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.--stage-barriersplans for its slots.rs <d> create-snapshotrunsvinca-rs snapshot. The output is identical to vinca-snapshot (jazzy atjazzy/2026-10-05: 2469 packages), in 23 s instead of 6 min.check-deps, pinning and rebuild planning read requirements fromvinca-rs requirements. Python vinca stays for pinning render/update, the rebuild planner and the sort tools.override:reason when an additional recipe replaces a released package (Raise an error if snapshot and additional_recipes are conflicting vinca#126).autoware_lanelet2_extensionpatches are refreshed for 1.1.0.What changes in the packages
vinca-rs was compared with vinca 74d1e85 (RoboStack/vinca#200) by meaning, for every distro and platform. It produces the same recipes (20/20: humble 2531/2467/2181/2181/1837, …), with the same sources, patches, build numbers, metadata and test files. The intended differences:
package_contentstest for itspackage.xml(Automatically add existence tests vinca#108).generate_dummy_package_with_run_deps) depend on just it and the mutex. Their variant hash changes, so about 20 per distro and platform are rebuilt once.build_catkinbecomesbuild_cmake.<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). For lyrical it produces the same recipes as vinca.Tested
rs humble buildbuilt and tested the 20 recipes that skip-existing left.pixi run rs checkpasses, andpytest tools/testsgives 81 passed.Notes
🤖 Generated with Claude Code