Fixes arm64 docker build failure#5408
Conversation
Greptile SummaryThis PR fixes the arm64 Docker build failure caused by Confidence Score: 5/5This PR is safe to merge; changes are arm64-conditional, well-documented, and consistent with existing Dockerfile patterns. No P0 or P1 issues found. The fix is narrowly scoped (arm64-only guards), correctly ordered (swig available before nlopt build, nlopt pre-installed before isaaclab.sh --install), and does not affect x86_64 builds. The hard-coded nlopt==2.6.2 version is intentional and matches the transitive pin. No files require special attention. Important Files Changed
Sequence DiagramsequenceDiagram
participant Docker as Docker Build
participant apt as apt-get
participant pip as pip (isaaclab.sh -p)
participant install as isaaclab.sh --install
Docker->>apt: Install base deps (cmake, build-essential)
alt arm64
Docker->>apt: Install arm64-only deps (GL/X11 headers + swig)
Docker->>pip: pip install --no-build-isolation nlopt==2.6.2
Note over pip: Builds nlopt from source using system swig+numpy
end
Docker->>install: isaaclab.sh --install
Note over install: nlopt==2.6.2 already satisfied on arm64 - skips rebuild
install->>Docker: Success on both x86_64 and arm64
Reviews (2): Last reviewed commit: "Fix arm64 docker build by pre-installing..." | Re-trigger Greptile |
f6fe8d4 to
8a94e71
Compare
8a94e71 to
cd344e3
Compare
# Description Follow-up to #5408. After that merged, the arm64 build still fails on the nlopt step with BackendUnavailable: Cannot import 'setuptools.build_meta'. With --no-build-isolation, pip uses the host Python to resolve the PEP 517 build backend, and IsaacSim's bundled arm64 Python does not expose setuptools.build_meta in that scope. Fix: pre-install setuptools, wheel, and numpy in IsaacSim's Python before the nlopt install step. Same change applied to Dockerfile.base and Dockerfile.curobo. Verified locally in a QEMU arm64 python:3.12-slim container: reproduced the BackendUnavailable error after pip uninstall setuptools wheel, then confirmed the install succeeds when those packages are pre-installed. ## Type of change - Bug fix (non-breaking change which fixes an issue) ## Checklist - [x] I have read and understood the contribution guidelines - [x] I have run the pre-commit checks with ./isaaclab.sh --format - [ ] I have made corresponding changes to the documentation - [x] My changes generate no new warnings - [ ] I have added tests that prove my fix is effective or that my feature works - [ ] I have updated the changelog and the corresponding version in the extension's config/extension.toml file - [x] I have added my name to the CONTRIBUTORS.md or my name already exists there
# Description Post-merge CI on develop has been failing on arm64. The chain is: isaaclab_teleop pulls isaacteleop[retargeters], which transitively pins nlopt==2.6.2, and nlopt 2.6.2 has no aarch64 wheel. Fix: add swig to apt deps and pre-install nlopt 2.6.2 with --no-build-isolation on arm64 before isaaclab.sh --install runs. The later install sees nlopt as already satisfied. Same change applied to Dockerfile.base and Dockerfile.curobo. Verified locally in a QEMU arm64 python:3.12-slim container running the same install path. ## Type of change - Bug fix (non-breaking change which fixes an issue) ## Checklist - [x] I have read and understood the contribution guidelines - [x] I have run the pre-commit checks with ./isaaclab.sh --format - [ ] I have made corresponding changes to the documentation - [x] My changes generate no new warnings - [ ] I have added tests that prove my fix is effective or that my feature works - [ ] I have updated the changelog and the corresponding version in the extension's config/extension.toml file - [x] I have added my name to the CONTRIBUTORS.md or my name already exists there
# Description Follow-up to isaac-sim#5408. After that merged, the arm64 build still fails on the nlopt step with BackendUnavailable: Cannot import 'setuptools.build_meta'. With --no-build-isolation, pip uses the host Python to resolve the PEP 517 build backend, and IsaacSim's bundled arm64 Python does not expose setuptools.build_meta in that scope. Fix: pre-install setuptools, wheel, and numpy in IsaacSim's Python before the nlopt install step. Same change applied to Dockerfile.base and Dockerfile.curobo. Verified locally in a QEMU arm64 python:3.12-slim container: reproduced the BackendUnavailable error after pip uninstall setuptools wheel, then confirmed the install succeeds when those packages are pre-installed. ## Type of change - Bug fix (non-breaking change which fixes an issue) ## Checklist - [x] I have read and understood the contribution guidelines - [x] I have run the pre-commit checks with ./isaaclab.sh --format - [ ] I have made corresponding changes to the documentation - [x] My changes generate no new warnings - [ ] I have added tests that prove my fix is effective or that my feature works - [ ] I have updated the changelog and the corresponding version in the extension's config/extension.toml file - [x] I have added my name to the CONTRIBUTORS.md or my name already exists there
#5538) ## Summary Two unrelated CI breakages on develop, bundled here so develop turns green in one PR. ### 1. Skip the failing viewergl test `test_cartpole_newton_visualizer_viewergl_rgb_motion[physx,newton]` started returning all-black frames on develop after `nvcr.io/nvidian/isaac-sim:latest-develop` flipped to a Kit 110.1.1 + USD 25.11 base. The failure has been deterministic across multiple PRs (#5523, #5495, #5408, …). Investigation so far has ruled out: - PR #5521 (revert in #5539 still failed) - Newton 1.0 → 1.2.0rc2 viewer code regression (only 7-line addition; ViewerGL alone yields 1.08M nonzero pixels) - warp 1.12 → 1.13 RegisteredGLBuffer ABI (byte-identical) - Module-load side effects of `isaaclab_physx.renderers` - CUDA-GL interop (PR #5540 diagnostic confirms direct CPU FBO readback also returns zeros, with `GL_NO_ERROR`) - GL context-currency (PR #5541 H6 attempt: still fails) - GL/CUDA sync (PR #5542 H4 attempt: still fails) Diagnostic output (PR #5540 v2): ``` [VIZDIAG] fbo=c_uint(8) pbo=None size=600x600 [VIZDIAG] glGetError before: GL_NO_ERROR [VIZDIAG] CPU-readback: nonzero=0/1080000 max=0 err=GL_NO_ERROR [VIZDIAG] PBO-result: nonzero=0/1080000 max=0 ``` The FBO itself is empty — Newton's pyglet/EGL renderer is not depositing pixels under Kit 110.1.1, even though `tiled_camera_rgb_non_black` (Kit RTX path) on the same env passes. Underlying root cause still being chased; this PR ships the skip to unblock develop. ### 2. Fix warp intersphinx 404 in docs build `https://nvidia.github.io/warp/objects.inv` started returning 404 — Warp's `objects.inv` only lives at `/stable/` and `/latest/` now. With Sphinx's `warnings_treated_as_errors`, the broken intersphinx fetch fails the docs build on every PR. Pinning to `/stable/` (matches the existing PyTorch `/docs/2.11/` workaround pattern in the same file). Verified `https://nvidia.github.io/warp/stable/objects.inv` returns 200. ## Test plan - [x] CI `isaaclab_visualizers` on this branch — was passing earlier with the skip; will re-verify with the bundled docs fix - [ ] CI `Build Latest Docs` on this branch — must turn green (was failing on every recent PR before this fix) ## Re-enable plan Once the underlying viewergl bug is identified and fixed, drop the `@pytest.mark.skip` decorator and remove the `jichuanh-disable-viewergl-flaky.skip` fragment.
Description
Post-merge CI on develop has been failing on arm64. The chain is: isaaclab_teleop pulls isaacteleop[retargeters], which transitively pins nlopt==2.6.2, and nlopt 2.6.2 has no aarch64 wheel.
Fix: add swig to apt deps and pre-install nlopt 2.6.2 with --no-build-isolation on arm64 before isaaclab.sh --install runs. The later install sees nlopt as already satisfied. Same change applied to Dockerfile.base and Dockerfile.curobo.
Verified locally in a QEMU arm64 python:3.12-slim container running the same install path.
Type of change
Checklist