Conversation
There was a problem hiding this comment.
Review: Wheel Builder + Installation CI
Solid infrastructure PR — porting the wheel builder into the monorepo and adding a proper installation test framework is a big step forward for CI/CD hygiene. The test runner (run) is well-designed with Docker/native modes, cache volume reuse, and flexible pytest passthrough. A few things to address below, mostly around security, robustness, and some cleanup from the port.
Summary
- Scope: Adds
tools/wheel_builder/(build scripts, pyproject generator, package manifests),tools/install_ci/(pytest-based installation tests with Docker runner), a GH Actions workflow, and minor fixups to.gitignore/envs.py - Architecture: Clean separation between the wheel builder (build.sh + gen_pyproject.py) and the CI test harness (conftest.py + utils.py + test files). The Docker-based test isolation is the right approach.
- Quality: Generally good. Tests cover smoke (env creation, extension install) and heavy (full training loop) scenarios. The
UV_Utilsmixin pattern keeps test code DRY.
Key Issues
build.shusespip install --break-system-packagesinside the build stage — this modifies the host system Python when run natively (not just in Docker). Consider using a venv or--userinstall, or at minimum document that native execution is unsafe.res/__init__.pyhas dead code and uncertainty markers —bootstrap_kernel()is defined but commented out with# ???and# disable as we probably dont need it. Either remove it or add a proper TODO with context.- The
.gitignorechange fromtests/to/tests/is a broad scope change that affects the entire repo — worth calling out in the PR description since it could unignore nestedtests/dirs that were previously hidden. python_packages.tomlhas duplicate entries (numpy>=2,torch>=2.10,protobuf,tensorboardappear multiple times) — the dedup ingen_pyproject.pyhandles this, but the source file should be clean.- Wheel retagging is commented out in
build.sh— if this is intentional for the initial port, add a TODO issue reference.
…sim-kernel 6.0.0.0
…eft from hard isaacsim dependency
121f47d to
6931a48
Compare
8d64439 to
c638df7
Compare
c638df7 to
e6c0964
Compare
…larity and efficiency
Greptile SummaryThis PR ports an internal GitLab wheel builder into the IsaacLab repo and adds an integration test (
Confidence Score: 4/5Safe to merge after the constraint-deduplication bug in gen_pyproject.py is fixed; remaining findings are non-blocking. One P1 finding: the first-wins dependency deduplication in gen_pyproject.py silently drops tools/wheel_builder/gen_pyproject.py (constraint deduplication logic) and tools/wheel_builder/res/python_packages.toml (conflicting constraints + dead inventory section) Important Files Changed
Flowchart%%{init: {'theme': 'neutral'}}%%
flowchart TD
A[build.sh starts] --> B[Copy apps/ and source/ to BUILD_DIR/src/isaaclab/]
B --> C[Ensure apps/ sub-dirs have __init__.py]
C --> D[For each isaaclab_* sub-package: promote to top-level src/]
D --> D1[Copy inner Python package to src/pkg/]
D1 --> D2[Copy config/ and data/ resource dirs]
D2 --> D3[Patch EXT_DIR references in __init__.py]
D3 --> D4[Remove original from isaaclab bundle]
D4 --> E[Clean __pycache__ / egg-info / .pyc]
E --> F[Copy res/__init__.py and res/__main__.py]
F --> G[gen_pyproject.py: read python_packages.toml]
G --> G1[Deduplicate deps - first-wins]
G1 --> G2[Write pyproject.toml to BUILD_DIR]
G2 --> H[python3 -m pip install build wheel]
H --> I[python3 -m build --wheel]
I --> J[Wheel written to DIST_DIR/]
J --> K{Test: Test_Wheel_Builder}
K --> L[Install wheel into uv venv]
L --> M[test_import_isaaclab]
L --> N[test_version_matches_wheel]
L --> O[test_import_isaaclab_app]
L --> P[test_import_isaaclab_assets]
L --> Q[test_cli_help]
Reviews (2): Last reviewed commit: "--format" | Re-trigger Greptile |
…yright, use consistent python3 calls
Ports the external wheel builder (from the internal GitLab CI/CD repo) into the Isaac Lab, mostly replicating it's functionality, but fixing few issues with it.
Adds a test for Install CI.
This is step 2 (1 - install ci) on the path to resolve our installation bugs. Step 3 will be making project structure compatible with
python -m wheel build ., after GA.Type of change
Checklist
pre-commitchecks with./isaaclab.sh --formatconfig/extension.tomlfileCONTRIBUTORS.mdor my name already exists there