vector_vendor: no network fetch, split into its own repo - #432
Merged
Conversation
vector_vendor fetched its pinned Vector binary over the network at build time via file(DOWNLOAD ...), which the ROS buildfarm's network-isolated binarydeb jobs can't do (#423's network-isolated check proves it). Fixing that in-place would mean committing the binary (~106MB for both architectures) into this repo, which git never deduplicates across commits -- every future Vector version bump would permanently grow ros2_data_collection's own history by that much again, accepted and then rejected via Git LFS (evaluated: LFS content does survive bloom's release-tarball export step, contrary to initial assumption -- but GitHub's free LFS tier is 1GB/month, and ~106MB/bump would exhaust it in roughly 9 bumps). Instead, vector_vendor moves into its own repo entirely: github.com/Minipada/vector_vendor (default branch jazzy, tagged v0.57.0). Same CMakeLists.txt logic either way -- checked-in tarball, checksum-pinned, no network at build time -- just relocated so the binary's growth lands there instead of here. Pulled into this workspace via ros2_data_collection.repos (vcstool), pinned to the tag (not a branch) for reproducibility. tools/e2e/Containerfile's toolchain-base stage runs the `vcs import` (network required, same footing as the rosdep install right below it); every downstream colcon build -- including #423's --network=none check -- builds against the already-fetched result, unaffected by where the source physically came from. dc_bridge needs no changes: it locates the installed binary at lib/vector_vendor/vector (vector_vendor's own install path, unchanged) and declares <exec_depend>vector_vendor</exec_depend> in package.xml -- both resolve identically regardless of which repo the source came from, since colcon discovers packages by scanning src/ for package.xml, not by git origin. Verified directly, not assumed: the vendor-network-check stage builds vector_vendor under --network=none (both locally and on real CI infrastructure via a manually-triggered workflow_dispatch run); a full workspace build (colcon build + all 634 tests) succeeds with vector_vendor fetched from the external repo; the checked-in-binary-vs-LFS tradeoff was traced through the actual bloom/vcstools release code and tested against a throwaway LFS repo, not just reasoned about. This is a development-workspace convenience only (.repos/vcstool); it doesn't make vector_vendor apt-installable on its own -- that needs an independent bloom-release, not done here. See ADR-0002's amendment for the full reasoning and the considered-and-rejected alternatives (Git LFS, compiling Vector from source via `cargo vendor`, a C++ shipper alternative). Closes #424 Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019hV3DGw8o1QKsYbo8fQaS9 Signed-off-by: David Bensoussan <d.bensoussan@proton.me>
This was referenced Aug 28, 2026
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## jazzy #432 +/- ##
=======================================
Coverage 70.93% 70.93%
=======================================
Files 119 119
Lines 7401 7401
=======================================
Hits 5249 5249
Misses 2152 2152
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
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.
Summary
Supersedes #429 and #431, consolidated into one PR: those two stacked PRs would have had
jazzygain the checked-in binaries in #429's commit and then delete them again in #431's, via a rebase merge that lands each commit individually — meaning the ~106MB binary actually writes intojazzy's permanent history either way, just hidden from the final tree diff. This PR goes straight from the oldfile(DOWNLOAD ...)state to the final split state in one commit; the binary tarballs never touchros2_data_collection's history at all.vector_vendor'sfile(DOWNLOAD ...)network fetch is gone. Fixing that in-place would mean checking the binary into this repo, and git never deduplicates that ~106MB across future Vector version bumps.vector_vendormoves entirely into its own repo: https://github.com/Minipada/vector_vendor (default branchjazzy, taggedv0.57.0). SameCMakeLists.txtlogic (checked-in tarball, checksum-pinned, no network at build time) — just relocated.ros2_data_collection.repos(vcstool), pinned to the tag, not a branch, for reproducibility.tools/e2e/Containerfile'stoolchain-basestage runs thevcs import(network required, same footing as the rosdep install right below it); every downstreamcolcon build— including Network-isolated build verification harness for vendor packages #423's--network=nonecheck — builds against the already-fetched result.dc_bridgeneeds no changes: it locates the installed binary via the fixedlib/vector_vendor/vectorpath and an<exec_depend>, both unaffected by which repo the source came from.bloom/vcstoolscode — rejected anyway on GitHub's free LFS quota math, not on that original, now-disproven assumption), compiling Vector from source (cargo vendorcomes to ~1.6GB of dependency source, worse than the ~106MB binary), and a C++ shipper alternative (none with Vector's feature set exists).doc/src/dc/setup.md, fourtools/e2e/scripts/*.shthat readVECTOR_VERSIONout of the now-removedvector_vendor/CMakeLists.txt(now read fromros2_data_collection.reposinstead), and stale CI/doc comments.Test plan
prek run --all-files --skip build-docpasses./tools/e2e/scripts/verify_network_isolation.sh:vendor-network-checkbuildsvector_vendorunder--network=none, fetched via the external repo throughtoolchain-base'svcs importcolcon build+ all 634 tests) succeeds withvector_vendorfetched externally — verified locally and, for the underlying mechanism, on real CI infrastructure (a manually-triggered run against this work before consolidation)git rev-list --objectsthat this branch's commit contains zero binary blobs — the squash from the prior two-PR attempt correctly netted them out entirelyCloses #424
🤖 Generated with Claude Code
https://claude.ai/code/session_019hV3DGw8o1QKsYbo8fQaS9