build: drop CMake presets, move the wheel tree out of build/ - #916
Conversation
The presets existed to give each Python version its own directory, because the interpreter and ABI are baked into a build tree. That bought isolation at the cost of making `cmake -B build` — the form every other page and every plugin still used — the unsupported path, and it put the managed trees underneath build/ so `rm -rf build` took out all of them at once. Go back to `cmake -B build` as the one documented flow, and enforce the isolation directly instead: ISAAC_TELEOP_PYTHON_VERSION is now stamped into the cache, and changing it on an existing tree is a hard error pointing at a fresh directory. Previously it was silently ignored — the cache and the "Configuring for Python X" message would say 3.12 while the extensions compiled against the 3.11 venv. The scikit-build-core tree moves to build-wheel/<cache-tag>, out of build/, so pip and a classic configure cannot collide. Python bindings stay on by default. Signed-off-by: Jiwen Cai <jiwenc@nvidia.com>
|
Important Review skippedAuto incremental reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Enterprise Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
📝 WalkthroughWalkthroughThe PR removes CMake presets for Python 3.11, 3.12, and 3.13. CI workflows now configure and build explicit Estimated code review effort: 3 (Moderate) | ~20 minutes Possibly related PRs
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches 💡 1🛠️ Fix failing CI checks 💡
🧪 Generate unit tests (beta)
Comment |
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@docs/source/getting_started/build_from_source/index.rst`:
- Around line 272-277: Update the clean-build instructions in
docs/source/getting_started/build_from_source/index.rst:272-277,
docs/source/getting_started/lerobot/data_collection_sim.rst:180-181, and
docs/source/references/build.rst:150-154 so all three uses of `cmake -B build
--fresh` are compatible with the supported CMake 3.20 minimum, or consistently
raise the documented minimum to 3.24 if that support is intentionally dropped.
🪄 Autofix
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Enterprise
Run ID: cbc313b2-5755-4056-9a4c-69c89957122d
📒 Files selected for processing (10)
.github/workflows/build-ubuntu.yml.github/workflows/build-windows.yml.gitignoreCMakePresets.jsonCMakePresets.json.licensecmake/SetupPython.cmakedocs/source/getting_started/build_from_source/index.rstdocs/source/getting_started/lerobot/data_collection_sim.rstdocs/source/references/build.rstpyproject.toml
💤 Files with no reviewable changes (2)
- CMakePresets.json
- CMakePresets.json.license
The clean-rebuild instructions use `cmake --fresh`, which landed in CMake 3.24, while the floor was 3.20. Raise the floor rather than working around it. Ubuntu 22.04's apt cmake is 3.22 and no longer qualifies; the prerequisite list now points at Kitware's APT repo or pip. On the pip path scikit-build-core fetches a CMake from PyPI, so only the <4 cap still matters there. Signed-off-by: Jiwen Cai <jiwenc@nvidia.com>
The presets existed to give each Python version its own build directory, since the interpreter and ABI are baked into a build tree. That isolation came at a price:
cmake -B build— the form every other page and every plugin still used — became the unsupported path, and the managed trees sat underneathbuild/, sorm -rf buildtook out all of them at once.This goes back to
cmake -B buildas the single documented flow and enforces the isolation directly instead.ISAAC_TELEOP_PYTHON_VERSIONis stamped into the cache, and changing it on an existing tree is now a hard error naming a fresh directory to use.That guard is the one addition beyond the mechanical sweep, and it closes a real silent bug: passing
-DISAAC_TELEOP_PYTHON_VERSION=3.12to a tree configured for 3.11 previously printed "Configuring for Python 3.12" and cached 3.12 while still compiling against the 3.11 venv. Happy to drop it if you'd rather just document "use a fresh directory".The scikit-build-core tree moves to
build-wheel/<cache-tag>, outsidebuild/, so pip and a classic configure can't collide. Python bindings stay ON by default.CI keeps its 3-Python matrix via
-DISAAC_TELEOP_PYTHON_VERSION=; only GitHub-hosted runners build, so a plainbuild/is safe.Testing
On Ubuntu 24.04 aarch64:
cmake -B build→ build →cmake --install: green, 0 errors, produceswheels/isaacteleop-1.5+local-cp311-cp311-linux_aarch64.whl.ctest: 160/161. The one failure,cloudxr_test_launcher, is environmental (CloudXR SDK download 404, noNGC_API_KEYon this machine) and predates the change.TRUEare adopted silently rather than erroring — verified aTRUE-stamped cache reconfigures clean and re-stamps to3.11.sphinx -Wbuilds clean.Summary by CodeRabbit
Build Improvements
Documentation
Chores