Repository navigation
RoboStack monorepo: remaining setup and maintainer feedback #54
Copy link
Copy link
Open
Description
Follow-ups from @traversaro's feedback on the monorepo, as far as they aren't done yet.
1. Mutex without run_constraints (almost done)
- Merge Drop the distro mutex's run_constraints #45: removes all mutex
run_constraints;rs checkand unit tests reject them coming back. - Mutex: honour mutex_package.build_number; run_constraints optional vinca#169: vinca publishes a new mutex build at the same version. With Drop the distro mutex's run_constraints #45 the monorepo pins Tobias-Fischer/vinca
cf6833a(also makesrun_constraintsoptional) until it's merged; re-pin to RoboStack/vinca afterwards. - After the next build, check that each distribution's new mutex build (e.g. lyrical
lyrical_28) is published with no constraints and is what solvers pick: humble_21, jazzy_26, lyrical_28 and rolling_30 are on the test channel for linux-64, osx-arm64 and win-64 withconstrains: [], and solvingros2-ros-base(test + release channel + conda-forge) picks them on all three platforms. Humble and jazzy on win-64 needchannel-priority = "disabled": with strict priority the shared test channel's lyrical-onlyros2-pybind11-vendorhides humble's and jazzy's from their release channels. That's an artifact of one test channel for all distributions; separate channels per distribution won't have it. - Remove the then-dead mutex-constraint code from
tools/check_dependency_compat.py(PIN MISMATCH,--mutex-only).
2. Where users open issues
- In each old repository (ros-humble, ros-jazzy, ros-lyrical, ros-rolling): an issue-template
config.ymlwithblank_issues_enabled: falseand a contact link pointing to the monorepo's issues. Keep the repositories unarchived, as suggested.(PRs: Point new issues to RoboStack/robostack ros-humble#430, Point new issues to RoboStack/robostack ros-jazzy#313, Point new issues to RoboStack/robostack ros-lyrical#88, Point new issues to RoboStack/robostack ros-rolling#58) - After the move: transfer the open issues with
gh issue transfer(only possible within the same owner) and label them by distribution (distro: humble, ...). - Update the website's "report an issue" links and
Contributing.md. Point humble, jazzy, lyrical and rolling to RoboStack/robostack and deprecate the rest robostack.github.io#206
3. vinca PRs to merge
- Resolve ros_distro selectors in package tests vinca#164:
ros_distroselectors in package tests (the shared tests use them). - vinca-snapshot: skip packages whose package.xml can't be read vinca#174:
vinca-snapshotskips packages without apackage.xml(humble's 2026-10-12 sync could not be snapshotted without it). - Skip-existing: only count packages built for this distribution vinca#175: skip-existing only counts packages built for the same distribution.
- Then re-pin the monorepo from Tobias-Fischer/vinca
robostack-integrationto RoboStack/vinca: CI fixes found by the rosdistro sync trials; vinca from RoboStack #96.
4. Channels
- Every distribution uploads to
robostack-<distro>on anaconda.org and prefix.dev directly, nothing torobostack-staging(humble:robostack-humble; rolling and lyrical get their anaconda.org channels populated): Upload every distribution to robostack-<distro> on anaconda.org and prefix.dev; noetic's staging copy moves here #97, which also moves noetic's hourly staging copy (robostack-staging→robostack-noetic) here from the website repository (Move the channel copy script to the RoboStack monorepo robostack.github.io#205 removes it there). Merge Upload every distribution to robostack-<distro> on anaconda.org and prefix.dev; noetic's staging copy moves here #97 once the channel setup in 5. is done, then #205.
5. Move to the RoboStack org: setup
- Move the repository to the RoboStack org (now RoboStack/robostack).
- robostack-bot: the GitHub App (
robostack-bot-dev, used viaROBOSTACK_BOT_CLIENT_ID/ROBOSTACK_BOT_PRIVATE_KEY) and theGHA_PATtoken belong to @Tobias-Fischer. Create the app under the RoboStack org, install it on RoboStack/robostack, and set the variable and secrets there. - prefix.dev, Repository Access (trusted publishing,
build.yaml, read/write) for RoboStack/robostack:-
robostack-rollingandrobostack-lyrical robostack-humbleandrobostack-jazzy: today mirrors of anaconda.org; they become regular channels first.
-
- anaconda.org:
- create
robostack-lyrical(robostack-humble,robostack-jazzyandrobostack-rollingexist); - secret
ANACONDA_API_TOKEN: a token of an account that can upload to all fourrobostack-<distro>channels; - secret
ROBOSTACK_NOETIC_ANACONDA_API_TOKENfor noetic's staging copy (as in the website repository).
- create
- Variable
ROBOSTACK_UPLOAD_CHANNEL: today the test channeltobias-fischer/robostack-distro-test; remove it (or set it tonone) once uploads should go to the release channels.
6. Later (optional)
- Follow the rosdistro sync PRs lyrical: rosdistro sync 2026-10-05 #60 (lyrical), jazzy: rosdistro sync 2026-10-05 #61 (jazzy) and humble: rosdistro sync 2026-10-12 #62 (humble) through to green; they also move each distribution to the shared conda-forge pinning.
🤖 Claude (AI assistant), on behalf of @Tobias-Fischer
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels
Activity
traversaro commentedon Oct 16, 2026
Definitely
robostack-humble.traversaro commentedon Oct 16, 2026
I would copy humble packages to robostack-humble, that is the channel we have document since years, so I think we should streamline that part. Also, I would take the occasion to populate the rolling and lyrical anaconda.org channels, as
-c robostack-rollingis much more user friendly then-c https://prefix.dev/robostack-rolling.ruben-arts commentedon Oct 16, 2026
Instead of a custom mirror job, can't the upload after build not just push to multiple channels?
traversaro commentedon Oct 16, 2026
That also works fine for me.
traversaro commentedon Oct 16, 2026
Also, I overlooked:
How does this
robostack-botworks?Tobias-Fischer commentedon Oct 16, 2026
It lives here: https://github.com/Tobias-Fischer/robostack-distros/blob/main/.github/workflows/bot.yaml
Upload every distribution to robostack-<distro> on anaconda.org and p…
[-]Before moving to the RoboStack org: remaining points from the maintainer feedback[/-][+]RoboStack monorepo: remaining setup and maintainer feedback[/+]