Skip to content

feat(cloudxr): add optional experimental runtime packaging - #808

Merged
nv-mhaselton merged 1 commit into
NVIDIA:mainfrom
nv-mhaselton:feat/cloudxr-exp-bundle-enablement
Jul 23, 2026
Merged

feat(cloudxr): add optional experimental runtime packaging#808
nv-mhaselton merged 1 commit into
NVIDIA:mainfrom
nv-mhaselton:feat/cloudxr-exp-bundle-enablement

Conversation

@nv-mhaselton

@nv-mhaselton nv-mhaselton commented Jul 21, 2026

Copy link
Copy Markdown
Contributor

Description

Opt-in packaging for a sibling experimental CloudXR runtime package
(isaacteleop.cloudxr_exp with its own native/) in the same wheel as the
default isaacteleop.cloudxr bundle.

  • CMake: -DENABLE_CLOUDXR_EXP_BUNDLE=ON (default OFF) downloads/packages the
    exp tarball when available; ENABLE_CLOUDXR_BUNDLE_CHECK still owns hard-fail
    vs warn for missing artifacts.
  • Runtime: ISAAC_TELEOP_CLOUDXR_EXP selects stable vs exp via
    resolve_cloudxr_runtime_module() / get_sdk_path() (used by
    CloudXRLauncher). On Tegra T234, exp is preferred automatically when the
    env is unset; missing exp fails (set ISAAC_TELEOP_CLOUDXR_EXP=0 to force
    stable). Explicit ISAAC_TELEOP_CLOUDXR_EXP=1 also fails if exp is not in
    the wheel.
  • Docs: CloudXR reference covers runtime selection; build-from-source covers
    the cmake/tarball side (including Orin / TeleViz motivation for exp).

Public CI remains stable-only (flag stays OFF). Layout is ready for a later
dedicated-wheel split if needed.

Type of change

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to change)
  • Documentation update

Testing

  • Unit: test_runtime.py (selection helpers, resolve_cloudxr_runtime_module,
    get_sdk_path).
  • Local dual-bundle smoke:
    • CXR_RUNTIME_SDK_VERSION=222d1f93 cmake -B build -DENABLE_CLOUDXR_EXP_BUNDLE=ON
    • Installed cp311 wheel; ISAAC_TELEOP_CLOUDXR_EXP=0
      …/cloudxr/native (StreamSDK gcomp/rel/gs_04_86);
      ISAAC_TELEOP_CLOUDXR_EXP=1…/cloudxr_exp/native (StreamSDK
      gcomp/dev); both report CloudXR 6.3.0 via runtime_version() in
      separate processes.

Checklist

  • I have read and understood the contribution guidelines
  • I have run the linter and formatter with SKIP=check-copyright-year pre-commit run --all-files
  • I have made corresponding changes to the documentation
  • I have added tests that prove my fix/feature works (or explained why not)
  • I have signed off all my commits (git commit -s) per the DCO

Summary by CodeRabbit

  • New Features

    • Added optional support for packaging and using an experimental CloudXR runtime bundle.
    • Added environment-based runtime selection between standard and experimental CloudXR libraries.
    • Improved CloudXR SDK download support, including optional experimental releases.
  • Documentation

    • Added setup and usage instructions for downloading, packaging, and selecting the experimental runtime.
  • Tests

    • Added coverage for experimental runtime selection and missing-library handling.

@nv-mhaselton
nv-mhaselton requested a review from jiwenc-nv July 21, 2026 16:21
@github-actions

Copy link
Copy Markdown
Contributor

📝 Docs preview is not auto-deployed for fork PRs.

A maintainer with write access to NVIDIA/IsaacTeleop can deploy a preview by
commenting /preview-docs on this PR. Once deployed, the preview
will live at:

https://nvidia.github.io/IsaacTeleop/preview/pr-808/

@coderabbitai

coderabbitai Bot commented Jul 21, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

📝 Walkthrough

Walkthrough

Adds optional downloading and packaging of an experimental CloudXR SDK under native_exp/. CMake exposes configuration and dependency wiring for the bundle, while package metadata includes its native artifacts. Runtime helpers select and validate the standard or experimental SDK using ISAAC_TELEOP_CLOUDXR_EXP; launcher SSL setup, version lookup, and execution use the selected path. Documentation and tests cover setup, selection, and error handling.

Estimated code review effort: 4 (Complex) | ~45 minutes

Sequence Diagram(s)

sequenceDiagram
  participant Configure as CMake configure
  participant Download as SDK downloader
  participant Package as Python package
  participant Runtime as CloudXR runtime
  participant Launcher as CloudXRLauncher
  Configure->>Download: request standard and optional experimental SDKs
  Download-->>Configure: provide SDK tarballs
  Configure->>Package: extract native and native_exp bundles
  Runtime->>Package: select bundle using ISAAC_TELEOP_CLOUDXR_EXP
  Runtime->>Launcher: provide selected SDK path
  Launcher->>Runtime: start worker with selected library paths
Loading
🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly summarizes the main change: optional experimental CloudXR runtime packaging.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Comment @coderabbitai help to get the list of available commands.

@nv-mhaselton
nv-mhaselton requested a review from sgrizan-nv July 21, 2026 16:22
@nv-mhaselton
nv-mhaselton force-pushed the feat/cloudxr-exp-bundle-enablement branch from c8e156c to d82db26 Compare July 21, 2026 17:14
Comment thread docs/source/getting_started/build_from_source/index.rst Outdated
Comment thread docs/source/getting_started/build_from_source/index.rst Outdated
@nv-mhaselton
nv-mhaselton force-pushed the feat/cloudxr-exp-bundle-enablement branch 2 times, most recently from 3612dfc to 9ca50fc Compare July 22, 2026 18:28
@nv-mhaselton
nv-mhaselton force-pushed the feat/cloudxr-exp-bundle-enablement branch 3 times, most recently from e5b0c6a to b6c10e1 Compare July 22, 2026 21:54
Add -DENABLE_CLOUDXR_EXP_BUNDLE=ON to ship isaacteleop.cloudxr_exp
natives in the same wheel. Select with ISAAC_TELEOP_CLOUDXR_EXP; on
Tegra T234 prefer exp automatically (fail if missing;
ISAAC_TELEOP_CLOUDXR_EXP=0 forces stable).

Signed-off-by: Michael Haselton <mhaselton@nvidia.com>
@nv-mhaselton
nv-mhaselton force-pushed the feat/cloudxr-exp-bundle-enablement branch from b6c10e1 to 2433553 Compare July 22, 2026 21:57
@nv-mhaselton
nv-mhaselton requested a review from sgrizan-nv July 22, 2026 21:59
@nv-mhaselton
nv-mhaselton merged commit 6258095 into NVIDIA:main Jul 23, 2026
42 checks passed
@nv-mhaselton
nv-mhaselton deleted the feat/cloudxr-exp-bundle-enablement branch July 23, 2026 02:16
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.

3 participants