Skip to content

camera_streamer: add cross_build.sh and deploy_sender.py development tools - #1477

Open
gareth-morgan-nv wants to merge 3 commits into
teng/5ef2afafrom
gmorgan/CameraStreamingTools
Open

gareth-morgan-nv wants to merge 3 commits into
teng/5ef2afafrom
gmorgan/CameraStreamingTools

Conversation

@gareth-morgan-nv

Copy link
Copy Markdown
Contributor

Summary

Two development tools for argus_sender that the runtime does not depend on: cross_build.sh to type-check and cross-compile on an x86 PC, and deploy_sender.py to build and try a release on a Jetson without activating it.

What changed

  • cross_build.sh syntax runs clang over every sender source against an Orin sysroot (no linking); cross_build.sh build [cmake args] builds an aarch64 argus_sender with the Arm toolchain (linked, not run). The sysroot, toolchain and CMake toolchain file live under ORIN_CROSS_ROOT; the script header lists what they must contain, and TESTING.md gets a short section.
  • deploy_sender.py:
    • check and discover only read (release, camera processes, disk, platform files, camera units).
    • deploy [--with-sipl] --name N copies the committed source (a git archive of HEAD) into a new ~/camera-streamer/releases/N, builds it on the target and runs the camera-free unit tests. It refuses an existing release name and a tree with uncommitted changes, and a failing unit test fails the deploy.
    • run --name N --config FILE [--seconds S] [--env NAME=VALUE] starts a built release for a bounded time. It prints a note, and stops nothing, if another camera process is running. It succeeds when the sender ends at its time limit and otherwise fails with the sender's exit status.
    • stop signals the senders that run started; linktest measures TCP throughput from the target to the desktop.
    • It never stops, replaces or starts a service.

Validation

  • pre-commit (REUSE, ruff, ruff format) clean on the script; --dry-run check prints the ssh commands without running them.
  • cross_build.sh syntax and build (with -DWITH_SIPL=ON and OFF) pass on a combined local build of the sender PRs, and earlier on this script alone. The plain base does not compile bundle_assembler without the Argus headers, so the script is meant for Orin-targeted trees.
  • deploy_sender.py was used for the native builds, unit-test runs and camera runs on a Jetson Orin behind the sender PRs: check, deploy --with-sipl (17 of 17 tests), run, stop and linktest.
  • The failure paths (a failing unit test, a sender that exits with an error) are read and dry-run but not exercised on a target.

Known limitations / follow-ups

  • A sender ended with stop is reported as "exited with status 1"; the script does not yet separate a signal stop from an error.
  • Tests that include Argus headers compile through cross_build.sh but run only on a Jetson.

Test plan

  • deploy_sender.py user@board check, then deploy into a new release name.
  • cross_build.sh syntax against your own Orin sysroot.
  • CI.

🤖 Generated with Claude Code

gareth-morgan-nv and others added 3 commits November 10, 2026 23:33
…n a Jetson without activating it

check and discover only read. deploy copies the committed argus_sender source into a new release directory
under ~/camera-streamer/releases/, configures and builds it on the target and runs the camera-free unit tests;
it never stops, replaces or starts a service and refuses an existing release. run starts a built release for a
bounded time with a config from this machine, stop signals the senders that run started, and linktest measures
TCP throughput from the target to this machine, connecting the way the camera stream does.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Signed-off-by: Gareth Morgan <gmorgan@nvidia.com>
A failing unit test now fails the deploy instead of being echoed and ignored. A run that reaches its time limit is a
success, and any other sender exit status is propagated instead of being turned into success. The scripts that run on the
target use [[ ]] for tests, as the repository's shell rule requires, and run takes repeatable --env NAME=VALUE options for
the sender.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Signed-off-by: Gareth Morgan <gmorgan@nvidia.com>
…rgus_sender on a PC

syntax runs clang over every sender source against an Orin sysroot's headers, and build produces an
aarch64 argus_sender (linked, not run) with an Arm GNU toolchain. The sysroot and toolchain live under
ORIN_CROSS_ROOT; the script header lists what they must contain. TESTING.md notes that tests which
include Argus headers compile this way but run only on the Orin.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Signed-off-by: Gareth Morgan <gmorgan@nvidia.com>
@coderabbitai

coderabbitai Bot commented Nov 11, 2026

Copy link
Copy Markdown
Contributor

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

Run configuration

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • Trigger review
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants