Repository navigation
Skip-existing: only count packages built for this distribution - #175
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
Tobias-Fischer
marked this pull request as draft
October 13, 2026 18:57
ROS 2 packages share their names across distributions (ros2-*), and the skip check matched name and build number only, so a channel holding several distributions (e.g. one test upload channel) made lyrical skip plotjuggler because rolling's build 30 was there. A record counts only if its mutex dependency (or, for the mutex, its build string) names the distribution; records without a mutex dependency as before. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Tobias-Fischer
force-pushed
the
fix/skip-existing-per-distro
branch
from
October 13, 2026 18:59
96a6551 to
120d967
Compare
Tobias-Fischer
added a commit
to Tobias-Fischer/robostack-distros
that referenced
this pull request
Oct 14, 2026
…rk retries, vinca fixes (#92) * robostack-bot: one conda-forge pinning update for the shared pinning With every distribution on shared/pinning/conda_forge.yaml, the daily per-distribution update-conda-forge-pinning jobs would each rewrite that file (from their own dependencies) in competing pull requests. A distribution on the shared pinning now moves together with the others: the migrations are chosen for all of their dependencies, the file is written once, and each distribution's pins are re-rendered with its own rebuild plan, in one pull request (bot/update-conda-forge-pinning). A distribution with its own pinning in distro.yaml is still updated on its own. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * shared/ci.yaml build_distros: choose which distributions a PR builds A PR builds every distribution as soon as it touches anything outside distros/<d>/, e.g. a one-distribution rebuild that also changes shared/ or tools/. build_distros lists the ones to build instead (reset to [] before merging, like evict_cache); read by `rs changed-distros`, which the PR build's plan step already uses. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * PR builds retry network failures, like the staged builds retry index lag GitHub or prefix.dev being unreachable for a moment (git fetch, package download) ended multi-hour full-rebuild jobs four times in a day. `rs build` now goes through run_build, which retries such failures (at most twice); packages built before stay in the output folder, so a retry continues where it stopped. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * vinca 63469ba: skip packages without package.xml in snapshots; skip-existing per distribution - vinca-snapshot skips packages whose package.xml can't be read (humble's affordance_primitives in the 2026-10-12 sync crashed it), RoboStack/vinca#174 - skip-existing only counts packages built for this distribution (a channel shared by several distributions made lyrical skip plotjuggler), RoboStack/vinca#175 - qt6-main is a cross-compiling build dependency too, like qt-main Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * Build only rolling in this pull request (TEMPORARY, reset before merging) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * Network retries: up to 4, waiting 1, 2, 4 and 8 minutes; also on 'connection error' The Intel macOS runners lost their connection to prefix.dev for several minutes at a time, longer than two one-minute retries. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * build:<distro> PR labels instead of shared/ci.yaml build_distros A file setting had to be reset before merging, and the reset itself changed a shared file, so the last run of the pull request built every distribution anyway. Labels aren't part of the commit: nothing to reset. The plan step reads them at run time, so a re-run sees labels added after the push; adding one doesn't start a build (a labeled trigger would cancel the running build on any label, e.g. automerge). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Tobias-Fischer
marked this pull request as ready for review
October 15, 2026 20:39
Contributor
Author
|
This is ready for review @traversaro |
4 of 17 tasks
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.
The skip-existing check (
skip_existingchannels, and the additional-recipes check invinca-gha) treats a package as already built when its name and build number match. ROS 2 packages share their names across distributions (ros2-*), so a channel that holds builds of several distributions — e.g. a common test upload channel — makes one distribution skip packages that only another one has built.We hit this in a lyrical full rebuild: rolling's
ros2-plotjugglerbuild 30 was on the shared channel, so lyrical'splotjuggler(also build 30) was never built, andplotjuggler_rosthen failed to resolve.Now a repodata record only counts if it was built for this distribution:
ros2-distro-mutex 0.22.* lyrical_*), or<distro>_.Records without a mutex dependency are counted as before.
built_for_distro()lives invinca/utils.pyand has tests.🤖 Generated with Claude Code