rattler-build recipe (i.e. conda recipe v1) generator for ROS packages
WARNING: This project is actively mantained and can frequently change based on the needs of the RoboStack project.
The tool generates conda rattler-build recipes to capture all the selected ROS packages.
The repo contains a vinca tool that reads a vinca.yaml file that contains all its metadata.
For an up-to-date example of how to write a vinca.yaml, check the repos of the maintained RoboStack distros:
- https://github.com/RoboStack/ros-noetic/
- https://github.com/RoboStack/ros-humble
- https://github.com/RoboStack/ros-jazzy/
The optional package_name_mode setting controls the transition from legacy distro-qualified names such as ros-humble-rclcpp to ROS-major-version names such as ros2-rclcpp:
legacy(default): generate only distro-qualified package names.both: generate the new names and compatibility packages under the legacy names. Each compatibility package depends on the corresponding new package at the same version.new: generate only the new names.
Existing configurations remain on legacy when this setting is omitted. To start migrating a distribution to the new names, use:
package_name_mode: bothOnce users and downstream projects have migrated, switch to new to stop generating the compatibility packages. New ROS 1 package names use the ros- prefix; new ROS 2 package names use ros2-.
RoboStack repositories can keep their global pins reproducible without copying and
manually editing conda-forge's full pinning file. Add a vinca_pinning.yaml file:
conda_forge_pinning_version: 2026.08.20.20.38.26
migrations:
- libboost190
pinning_overrides:
python:
- 3.14.* *_cp314
# Override every member of a zip_keys group together.
is_python_min:
- false
python_impl:
- cpythonRender the build-tool input with:
vinca-pinning-renderThe renderer downloads that exact conda-forge-pinning package and starts with its
conda_build_config.yaml. It sorts the named migrations by migrator_ts, just as
conda-smithy does, and combines each one using the CFEP-9 variant algebra.
For a full rebuild, update the base and eligible migrations with:
vinca-pinning-update --renderThe updater updates the base conda_forge_pinning_version to the latest one, but keeps pinning_overrides unchanged. It uses existing generated recipes
when available; otherwise it collects the would-be recipe dependencies for Linux,
macOS, and Windows without fully generating the recipes. The ROS distro model and
parsed group dependencies are reused across platforms. For each active, non-paused
conda-forge migration, it checks the public
conda-forge migration status and applies it only after all feedstocks producing the
external dependencies of the selected ROS recipes are marked done. Previously
applied migrations remain selected while they are active; migrations incorporated
into a newer base disappear from the list automatically.
Use repeatable --platform options to limit dependency discovery, and use -d when
the RoboStack repository is not the current directory.