Skip to content

vinca-snapshot: skip packages whose package.xml can't be read - #174

Draft
Tobias-Fischer wants to merge 1 commit into
RoboStack:masterfrom
Tobias-Fischer:fix/snapshot-skip-unreadable-package-xml
Draft

Tobias-Fischer wants to merge 1 commit into
RoboStack:masterfrom
Tobias-Fischer:fix/snapshot-skip-unreadable-package-xml

Conversation

@Tobias-Fischer

Copy link
Copy Markdown
Contributor

When a package's release repository has been deleted, the rosdistro cache has no package.xml for it, and vinca-snapshot crashed on parsing None:

TypeError: a bytes-like object is required, not 'NoneType'

This happened for humble's affordance_primitives in the humble/2026-10-12 sync (its release repository PickNikRobotics/affordance_primitives-release is gone), so no humble snapshot could be created at all.

Now such a package is skipped with a warning, the same way packages without a version already are:

Package 'affordance_primitives': can't read its package.xml (a bytes-like object is required, not 'NoneType'), skipping...

🤖 Generated with Claude Code

@Tobias-Fischer
Tobias-Fischer marked this pull request as draft October 13, 2026 18:57
A release repository that was deleted (humble's affordance_primitives in the
2026-10-12 sync) leaves no package.xml in the rosdistro cache, and parsing None
crashed the whole snapshot. Warn and skip the package instead, like packages
without a version.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@Tobias-Fischer
Tobias-Fischer force-pushed the fix/snapshot-skip-unreadable-package-xml branch from a4d02c7 to be1e132 Compare October 13, 2026 18:59
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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant