Skip to content
Closed
Show file tree
Hide file tree
Changes from 13 commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
f003ec7
Bump usd-core dependency to 26.05 to fix USD physics crash
mataylor-nvidia Jul 14, 2026
b9883d4
Fix benchmark test fixture expecting stale usd-core 25.11 version
mataylor-nvidia Jul 14, 2026
b639c8a
patch usd-core ext path
mataylor-nvidia Jul 14, 2026
45d5da8
bat usd-core patch
mataylor-nvidia Jul 14, 2026
1279e7e
update
mataylor-nvidia Jul 14, 2026
052b52f
Fix pxr conflict with omni.usd.schema.usd_particle_field in OV enviro…
mataylor-nvidia Jul 14, 2026
1e280e3
revert
mataylor-nvidia Jul 14, 2026
c8e1595
fix
mataylor-nvidia Jul 14, 2026
3c0deaa
update
mataylor-nvidia Jul 15, 2026
bb65e2e
cleanup
mataylor-nvidia Jul 15, 2026
c7757b6
use small python script
mataylor-nvidia Jul 16, 2026
e850085
cleanup
mataylor-nvidia Jul 16, 2026
b755878
fix format
mataylor-nvidia Jul 16, 2026
328fb7f
fix
mataylor-nvidia Jul 16, 2026
29a0fb5
fix
mataylor-nvidia Jul 16, 2026
2c3a052
fix
mataylor-nvidia Jul 16, 2026
8d6a542
fix
mataylor-nvidia Jul 16, 2026
812c51b
fix
mataylor-nvidia Jul 16, 2026
9975b67
Surface read-only pxr promotion failure with a warning
mataylor-nvidia Jul 16, 2026
8d97c56
fix
mataylor-nvidia Jul 16, 2026
2e1efd3
fix
mataylor-nvidia Jul 16, 2026
6dc7638
fix
mataylor-nvidia Jul 16, 2026
437190a
_find_extscache
mataylor-nvidia Jul 20, 2026
9391637
update
mataylor-nvidia Jul 21, 2026
cc3c00f
fix
mataylor-nvidia Jul 21, 2026
7949221
Merge branch 'develop' into mataylor/bump-usd-26.05
mataylor-nvidia Jul 21, 2026
ea91a4c
revert
mataylor-nvidia Jul 21, 2026
579f763
Merge branch 'mataylor/bump-usd-26.05' of github.com:mataylor-nvidia/…
mataylor-nvidia Jul 21, 2026
cf0df85
update
mataylor-nvidia Jul 21, 2026
368476c
update
mataylor-nvidia Jul 21, 2026
f6a6c99
undo
mataylor-nvidia Jul 21, 2026
3c5d45b
update
mataylor-nvidia Jul 21, 2026
294ccf1
update
mataylor-nvidia Jul 21, 2026
b38daf5
fix
mataylor-nvidia Jul 22, 2026
ecd7233
fix
mataylor-nvidia Jul 22, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions isaaclab.bat
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,19 @@ if exist "%ISAACLAB_PATH%\_isaac_sim\" (
)
)

rem If omni.usd.libs is present, prepend it to PYTHONPATH and its bin\ to PATH
rem so its patched pxr is found before usd-core's pxr and the native USD shared
rem libraries are resolvable, resolving TfType::AddAlias conflicts.
rem
rem omni.usd.libs\pxr\ is a namespace package (no __init__.py), but Python
rem prefers a regular package (with __init__.py) over a namespace package
rem regardless of sys.path order. Write a minimal __init__.py to promote it
rem to a regular package so the PYTHONPATH prepend actually takes effect.
for /f "delims=" %%d in ('"%python_exe%" "%ISAACLAB_PATH%\tools\setup_usd_libs.py" 2^>nul') do (
set "PYTHONPATH=%%d;!PYTHONPATH!"
set "PATH=%%d\bin;!PATH!"
)

rem Execute CLI.
"%python_exe%" -c "from isaaclab.cli import cli; cli()" %*

Expand Down
18 changes: 18 additions & 0 deletions isaaclab.sh
Original file line number Diff line number Diff line change
Expand Up @@ -61,5 +61,23 @@ if [ -d "$ISAACLAB_PATH/_isaac_sim" ]; then
fi
fi

# If omni.usd.libs is present, prepend it to PYTHONPATH and its bin/ to
# LD_LIBRARY_PATH so its patched pxr is found before usd-core's pxr and the
# native USD shared libraries are resolvable. This resolves TfType::AddAlias
# conflicts when omni.usd.schema packages (ovrtx/ovphysx) are also installed.
#
# omni.usd.libs/pxr/ is a namespace package (no __init__.py), but Python's
# import system always prefers a regular package (with __init__.py) over a
# namespace package, regardless of sys.path order. Since usd-core installs a
# regular pxr package, prepending omni.usd.libs to PYTHONPATH alone does nothing.
# We write a minimal __init__.py into omni.usd.libs/pxr/ to promote it to a
# regular package, making the sys.path order actually take effect.
_ov_usd_libs_dir=$("$python_exe" "$ISAACLAB_PATH/tools/setup_usd_libs.py" 2>/dev/null)
Comment thread
mataylor-nvidia marked this conversation as resolved.
Outdated
if [ -n "$_ov_usd_libs_dir" ]; then
export PYTHONPATH="$_ov_usd_libs_dir:$PYTHONPATH"
export LD_LIBRARY_PATH="$_ov_usd_libs_dir/bin:$LD_LIBRARY_PATH"
fi
Comment thread
mataylor-nvidia marked this conversation as resolved.
unset _ov_usd_libs_dir

Comment thread
mataylor-nvidia marked this conversation as resolved.
# Execute CLI.
exec "$python_exe" -c "from isaaclab.cli import cli; cli()" "$@"
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ dependencies = [
# OpenUSD (kit-less mode). Both packages vendor a complete ``pxr`` runtime, so
# they must never co-install: usd-core supplies pxr where it has wheels (x86_64),
# usd-exchange supplies it on aarch64 (where usd-core has no wheel).
"usd-core>=25.11,<26.0 ; platform_machine in 'x86_64 AMD64'",
"usd-core>=26.05,<27.0 ; platform_machine in 'x86_64 AMD64'",
Comment thread
mataylor-nvidia marked this conversation as resolved.
Comment thread
mataylor-nvidia marked this conversation as resolved.
"usd-exchange>=2.2 ; platform_machine in 'aarch64 arm64'",
# avoid broken hf-xet pre-release cached on NVIDIA Artifactory
"hf-xet>=1.4.1,<2.0.0 ; platform_machine in 'x86_64 AMD64 aarch64 arm64'",
Expand Down
5 changes: 5 additions & 0 deletions source/isaaclab/changelog.d/mataylor-golden-sim-usd.minor.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
Changed
^^^^^^^

* Bumped ``usd-core`` dependency from ``>=25.11,<26.0`` to ``>=26.05,<27.0`` on x86_64 to resolve
a crash in ``libusd_ms`` triggered by USD physics loading (``LoadUsdPhysicsFromRange``) for kitless runs.
4 changes: 2 additions & 2 deletions source/isaaclab/test/benchmark/test_capture.py
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ def test_capture_versions_preserves_runtime_packages():
StringMetadata(name="ovphysx_version", data="3.0.5"),
StringMetadata(name="mujoco_version", data="3.8.1"),
StringMetadata(name="cuda_bindings_version", data="12.9.4"),
StringMetadata(name="usd_core_version", data="25.11"),
StringMetadata(name="usd_core_version", data="26.05"),
StringMetadata(name="isaaclab_release_version", data="3.0.0"),
]
bm = _Bm({"VersionInfo": _Rec(MeasurementData(measurements=[], metadata=md, artefacts=[]))})
Expand All @@ -89,7 +89,7 @@ def test_capture_versions_preserves_runtime_packages():
assert versions.ovphysx == "3.0.5"
assert versions.mujoco == "3.8.1"
assert versions.cuda_bindings == "12.9.4"
assert versions.usd_core == "25.11"
assert versions.usd_core == "26.05"
assert versions.isaaclab_release == "3.0.0"


Expand Down
6 changes: 3 additions & 3 deletions source/isaaclab/test/cli/test_source_package_metadata.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,16 +23,16 @@ def _repo_root() -> Path:
raise RuntimeError("Could not find Isaac Lab repository root.")


def test_isaaclab_usd_core_pin_stays_on_isaacsim_compatible_usd25_abi():
"""The kit-less USD package must stay on the Isaac Sim compatible USD 25 ABI."""
def test_isaaclab_usd_core_pin_stays_on_isaacsim_compatible_usd26_abi():
"""The kit-less USD package must stay on the Isaac Sim compatible USD 26 ABI."""
with (_repo_root() / "pyproject.toml").open("rb") as f:
pyproject = tomllib.load(f)

usd_core_dependencies = [
dependency for dependency in pyproject["project"]["dependencies"] if dependency.startswith("usd-core")
]

assert usd_core_dependencies == ["usd-core>=25.11,<26.0 ; platform_machine in 'x86_64 AMD64'"]
assert usd_core_dependencies == ["usd-core>=26.05,<27.0 ; platform_machine in 'x86_64 AMD64'"]

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe we can just get rid of these tests, since they're just checking that a hardcoded value is the correct hardcoded value? I don't see anything in this test file that's actually a useful test.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

sure sounds good to me



def test_isaaclab_standalone_usd_providers_are_platform_disjoint():
Expand Down
28 changes: 28 additions & 0 deletions tools/setup_usd_libs.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
# Copyright (c) 2022-2026, The Isaac Lab Project Developers (https://github.com/isaac-sim/IsaacLab/blob/main/CONTRIBUTORS.md).
# All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause

"""Locate the omni.usd.libs extension and promote its pxr package to a regular package.

Prints the resolved directory path to stdout (empty string if not found).
Called by isaaclab.sh / isaaclab.bat before launching the CLI so that the
shell can prepend the path to PYTHONPATH / LD_LIBRARY_PATH / PATH.
"""

import contextlib
import glob
import os

extscache = os.path.join(os.environ.get("ISAACLAB_PATH", ""), "_isaac_sim", "extscache")
candidates = sorted(glob.glob(os.path.join(extscache, "omni.usd.libs-*")))
if not candidates:
print("", end="")
else:
usd_libs_dir = candidates[-1]
pxr_dir = os.path.join(usd_libs_dir, "pxr")
init_py = os.path.join(pxr_dir, "__init__.py")
if os.path.isdir(pxr_dir) and not os.path.isfile(init_py):
with contextlib.suppress(OSError):
open(init_py, "w").close()
print(usd_libs_dir, end="")
Comment thread
mataylor-nvidia marked this conversation as resolved.
Outdated
Loading