From 986662bed7f2af9f0e6ef9f8566b941bfacbdfa2 Mon Sep 17 00:00:00 2001 From: regro-cf-autotick-bot <36490558+regro-cf-autotick-bot@users.noreply.github.com> Date: Mon, 20 Jul 2026 23:53:12 +0000 Subject: [PATCH 1/5] updated v26.08 --- recipe/recipe.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/recipe/recipe.yaml b/recipe/recipe.yaml index 1d64a68..b002dbb 100644 --- a/recipe/recipe.yaml +++ b/recipe/recipe.yaml @@ -2,7 +2,7 @@ schema_version: 1 context: name: openusd - version: "26.05" + version: "26.08" package: name: ${{ name }} @@ -10,7 +10,7 @@ package: source: - url: https://github.com/PixarAnimationStudios/OpenUSD/archive/refs/tags/v${{ version }}.tar.gz - sha256: bf514f62ac9508d3c5b121dc1107f3b29bf3c954473b9b0bf8324b7cf04c64c1 + sha256: 4bccbb95cddda1dbeef2f74a08b9456352f2aa91bfd4578c0c613009c7950149 patches: - link_python_to_executables.patch - add_pxr_install_dll_in_bin.patch @@ -24,7 +24,7 @@ source: - fix_tbb_version_macro.patch build: - number: 2 + number: 0 skip: ppc64le requirements: From 53b3faec7344871b3d8daa96c4abd8d324cec70d Mon Sep 17 00:00:00 2001 From: regro-cf-autotick-bot <36490558+regro-cf-autotick-bot@users.noreply.github.com> Date: Mon, 20 Jul 2026 23:53:43 +0000 Subject: [PATCH 2/5] MNT: Re-rendered with conda-smithy 2026.6.14 and conda-forge-pinning 2026.07.20.18.55.4 --- .../linux_64_python3.10.____cpython.yaml | 2 +- .../linux_64_python3.11.____cpython.yaml | 2 +- .../linux_64_python3.12.____cpython.yaml | 2 +- .../linux_64_python3.13.____cp313.yaml | 2 +- .../linux_64_python3.14.____cp314.yaml | 2 +- .../linux_aarch64_python3.10.____cpython.yaml | 2 +- .../linux_aarch64_python3.11.____cpython.yaml | 2 +- .../linux_aarch64_python3.12.____cpython.yaml | 2 +- .../linux_aarch64_python3.13.____cp313.yaml | 2 +- .../linux_aarch64_python3.14.____cp314.yaml | 2 +- .github/workflows/conda-build.yml | 20 +++++++++---------- 11 files changed, 20 insertions(+), 20 deletions(-) diff --git a/.ci_support/linux_64_python3.10.____cpython.yaml b/.ci_support/linux_64_python3.10.____cpython.yaml index f9cdbc9..070b4fe 100644 --- a/.ci_support/linux_64_python3.10.____cpython.yaml +++ b/.ci_support/linux_64_python3.10.____cpython.yaml @@ -15,7 +15,7 @@ cxx_compiler: cxx_compiler_version: - '14' docker_image: -- quay.io/condaforge/linux-anvil-x86_64:alma9 +- quay.io/condaforge/linux-anvil-x86_64:alma10 pin_run_as_build: python: min_pin: x.x diff --git a/.ci_support/linux_64_python3.11.____cpython.yaml b/.ci_support/linux_64_python3.11.____cpython.yaml index 0627274..18c47ac 100644 --- a/.ci_support/linux_64_python3.11.____cpython.yaml +++ b/.ci_support/linux_64_python3.11.____cpython.yaml @@ -15,7 +15,7 @@ cxx_compiler: cxx_compiler_version: - '14' docker_image: -- quay.io/condaforge/linux-anvil-x86_64:alma9 +- quay.io/condaforge/linux-anvil-x86_64:alma10 pin_run_as_build: python: min_pin: x.x diff --git a/.ci_support/linux_64_python3.12.____cpython.yaml b/.ci_support/linux_64_python3.12.____cpython.yaml index 61ff684..61e3283 100644 --- a/.ci_support/linux_64_python3.12.____cpython.yaml +++ b/.ci_support/linux_64_python3.12.____cpython.yaml @@ -15,7 +15,7 @@ cxx_compiler: cxx_compiler_version: - '14' docker_image: -- quay.io/condaforge/linux-anvil-x86_64:alma9 +- quay.io/condaforge/linux-anvil-x86_64:alma10 pin_run_as_build: python: min_pin: x.x diff --git a/.ci_support/linux_64_python3.13.____cp313.yaml b/.ci_support/linux_64_python3.13.____cp313.yaml index 7bfd314..0e53876 100644 --- a/.ci_support/linux_64_python3.13.____cp313.yaml +++ b/.ci_support/linux_64_python3.13.____cp313.yaml @@ -15,7 +15,7 @@ cxx_compiler: cxx_compiler_version: - '14' docker_image: -- quay.io/condaforge/linux-anvil-x86_64:alma9 +- quay.io/condaforge/linux-anvil-x86_64:alma10 pin_run_as_build: python: min_pin: x.x diff --git a/.ci_support/linux_64_python3.14.____cp314.yaml b/.ci_support/linux_64_python3.14.____cp314.yaml index 952daf9..0bb3775 100644 --- a/.ci_support/linux_64_python3.14.____cp314.yaml +++ b/.ci_support/linux_64_python3.14.____cp314.yaml @@ -15,7 +15,7 @@ cxx_compiler: cxx_compiler_version: - '14' docker_image: -- quay.io/condaforge/linux-anvil-x86_64:alma9 +- quay.io/condaforge/linux-anvil-x86_64:alma10 pin_run_as_build: python: min_pin: x.x diff --git a/.ci_support/linux_aarch64_python3.10.____cpython.yaml b/.ci_support/linux_aarch64_python3.10.____cpython.yaml index 36682e9..c2dc4c7 100644 --- a/.ci_support/linux_aarch64_python3.10.____cpython.yaml +++ b/.ci_support/linux_aarch64_python3.10.____cpython.yaml @@ -15,7 +15,7 @@ cxx_compiler: cxx_compiler_version: - '14' docker_image: -- quay.io/condaforge/linux-anvil-x86_64:alma9 +- quay.io/condaforge/linux-anvil-x86_64:alma10 pin_run_as_build: python: min_pin: x.x diff --git a/.ci_support/linux_aarch64_python3.11.____cpython.yaml b/.ci_support/linux_aarch64_python3.11.____cpython.yaml index c3dd024..d226409 100644 --- a/.ci_support/linux_aarch64_python3.11.____cpython.yaml +++ b/.ci_support/linux_aarch64_python3.11.____cpython.yaml @@ -15,7 +15,7 @@ cxx_compiler: cxx_compiler_version: - '14' docker_image: -- quay.io/condaforge/linux-anvil-x86_64:alma9 +- quay.io/condaforge/linux-anvil-x86_64:alma10 pin_run_as_build: python: min_pin: x.x diff --git a/.ci_support/linux_aarch64_python3.12.____cpython.yaml b/.ci_support/linux_aarch64_python3.12.____cpython.yaml index 788388e..c553634 100644 --- a/.ci_support/linux_aarch64_python3.12.____cpython.yaml +++ b/.ci_support/linux_aarch64_python3.12.____cpython.yaml @@ -15,7 +15,7 @@ cxx_compiler: cxx_compiler_version: - '14' docker_image: -- quay.io/condaforge/linux-anvil-x86_64:alma9 +- quay.io/condaforge/linux-anvil-x86_64:alma10 pin_run_as_build: python: min_pin: x.x diff --git a/.ci_support/linux_aarch64_python3.13.____cp313.yaml b/.ci_support/linux_aarch64_python3.13.____cp313.yaml index c97e97e..2e624ad 100644 --- a/.ci_support/linux_aarch64_python3.13.____cp313.yaml +++ b/.ci_support/linux_aarch64_python3.13.____cp313.yaml @@ -15,7 +15,7 @@ cxx_compiler: cxx_compiler_version: - '14' docker_image: -- quay.io/condaforge/linux-anvil-x86_64:alma9 +- quay.io/condaforge/linux-anvil-x86_64:alma10 pin_run_as_build: python: min_pin: x.x diff --git a/.ci_support/linux_aarch64_python3.14.____cp314.yaml b/.ci_support/linux_aarch64_python3.14.____cp314.yaml index e3265de..75f25b0 100644 --- a/.ci_support/linux_aarch64_python3.14.____cp314.yaml +++ b/.ci_support/linux_aarch64_python3.14.____cp314.yaml @@ -15,7 +15,7 @@ cxx_compiler: cxx_compiler_version: - '14' docker_image: -- quay.io/condaforge/linux-anvil-x86_64:alma9 +- quay.io/condaforge/linux-anvil-x86_64:alma10 pin_run_as_build: python: min_pin: x.x diff --git a/.github/workflows/conda-build.yml b/.github/workflows/conda-build.yml index 957c888..03b6e7e 100644 --- a/.github/workflows/conda-build.yml +++ b/.github/workflows/conda-build.yml @@ -23,7 +23,7 @@ jobs: matrix: include: - CONFIG: linux_64_python3.10.____cpython - DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma9 + DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma10 STORE_BUILD_ARTIFACTS: False UPLOAD_PACKAGES: True build_workspace_dir: build_artifacts @@ -35,7 +35,7 @@ jobs: runs_on: ['ubuntu-latest'] tools_install_dir: ~/miniforge3 - CONFIG: linux_64_python3.11.____cpython - DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma9 + DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma10 STORE_BUILD_ARTIFACTS: False UPLOAD_PACKAGES: True build_workspace_dir: build_artifacts @@ -47,7 +47,7 @@ jobs: runs_on: ['ubuntu-latest'] tools_install_dir: ~/miniforge3 - CONFIG: linux_64_python3.12.____cpython - DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma9 + DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma10 STORE_BUILD_ARTIFACTS: False UPLOAD_PACKAGES: True build_workspace_dir: build_artifacts @@ -59,7 +59,7 @@ jobs: runs_on: ['ubuntu-latest'] tools_install_dir: ~/miniforge3 - CONFIG: linux_64_python3.13.____cp313 - DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma9 + DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma10 STORE_BUILD_ARTIFACTS: False UPLOAD_PACKAGES: True build_workspace_dir: build_artifacts @@ -71,7 +71,7 @@ jobs: runs_on: ['ubuntu-latest'] tools_install_dir: ~/miniforge3 - CONFIG: linux_64_python3.14.____cp314 - DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma9 + DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma10 STORE_BUILD_ARTIFACTS: False UPLOAD_PACKAGES: True build_workspace_dir: build_artifacts @@ -83,7 +83,7 @@ jobs: runs_on: ['ubuntu-latest'] tools_install_dir: ~/miniforge3 - CONFIG: linux_aarch64_python3.10.____cpython - DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma9 + DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma10 STORE_BUILD_ARTIFACTS: False UPLOAD_PACKAGES: True build_workspace_dir: build_artifacts @@ -95,7 +95,7 @@ jobs: runs_on: ['ubuntu-latest'] tools_install_dir: ~/miniforge3 - CONFIG: linux_aarch64_python3.11.____cpython - DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma9 + DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma10 STORE_BUILD_ARTIFACTS: False UPLOAD_PACKAGES: True build_workspace_dir: build_artifacts @@ -107,7 +107,7 @@ jobs: runs_on: ['ubuntu-latest'] tools_install_dir: ~/miniforge3 - CONFIG: linux_aarch64_python3.12.____cpython - DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma9 + DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma10 STORE_BUILD_ARTIFACTS: False UPLOAD_PACKAGES: True build_workspace_dir: build_artifacts @@ -119,7 +119,7 @@ jobs: runs_on: ['ubuntu-latest'] tools_install_dir: ~/miniforge3 - CONFIG: linux_aarch64_python3.13.____cp313 - DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma9 + DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma10 STORE_BUILD_ARTIFACTS: False UPLOAD_PACKAGES: True build_workspace_dir: build_artifacts @@ -131,7 +131,7 @@ jobs: runs_on: ['ubuntu-latest'] tools_install_dir: ~/miniforge3 - CONFIG: linux_aarch64_python3.14.____cp314 - DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma9 + DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma10 STORE_BUILD_ARTIFACTS: False UPLOAD_PACKAGES: True build_workspace_dir: build_artifacts From 348c3575d1a39e1a89ba868e584956d5636c7442 Mon Sep 17 00:00:00 2001 From: Jacob Oursland Date: Tue, 21 Jul 2026 13:49:30 -0600 Subject: [PATCH 3/5] Drop patches now redundant in OpenUSD 26.08 fix_tbb_version_macro.patch failed to apply (hunk #1 context not found): 26.08 restructured pxr/base/work/workTBB to include a new local header tbb_version.h, which uses __has_include to pull in (or the legacy tbb/tbb_stddef.h) and #errors if TBB_INTERFACE_VERSION_MAJOR is still undefined. That supersedes the downstream patch, so remove it. 3759.patch (upstream PR #3759, pxrConfig.cmake.in Python version pin) is merged into 26.08 and was already being skipped as "already applied"; remove it as well. --- recipe/3759.patch | 22 ------------------ recipe/fix_tbb_version_macro.patch | 36 ------------------------------ recipe/recipe.yaml | 7 ------ 3 files changed, 65 deletions(-) delete mode 100644 recipe/3759.patch delete mode 100644 recipe/fix_tbb_version_macro.patch diff --git a/recipe/3759.patch b/recipe/3759.patch deleted file mode 100644 index 2db26ae..0000000 --- a/recipe/3759.patch +++ /dev/null @@ -1,22 +0,0 @@ -From 8fabd1e8cc3e0161ff4935fcb4b1e7b6ae659e14 Mon Sep 17 00:00:00 2001 -From: Silvio Traversaro -Date: Tue, 29 Jul 2025 15:52:02 +0200 -Subject: [PATCH] pxrConfig.cmake.in : Do not pin exact Python patch version - ---- - pxr/pxrConfig.cmake.in | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/pxr/pxrConfig.cmake.in b/pxr/pxrConfig.cmake.in -index ae8d02c5c0..951ce5f7a2 100644 ---- a/pxr/pxrConfig.cmake.in -+++ b/pxr/pxrConfig.cmake.in -@@ -43,7 +43,7 @@ if(@PXR_ENABLE_PYTHON_SUPPORT@) - endif() - - if (NOT DEFINED Python3_VERSION) -- find_dependency(Python3 "@Python3_VERSION@" EXACT COMPONENTS Development) -+ find_dependency(Python3 "@Python3_VERSION_MAJOR@.@Python3_VERSION_MINOR@" EXACT COMPONENTS Development) - else() - find_dependency(Python3 COMPONENTS Development) - endif() diff --git a/recipe/fix_tbb_version_macro.patch b/recipe/fix_tbb_version_macro.patch deleted file mode 100644 index 3ac7eff..0000000 --- a/recipe/fix_tbb_version_macro.patch +++ /dev/null @@ -1,36 +0,0 @@ -Explicitly include so TBB_INTERFACE_VERSION_MAJOR is defined. - -OpenUSD's workTBB backend relies on to transitively -pull in the TBB version header (and thus define TBB_INTERFACE_VERSION_MAJOR) -before deciding between the legacy tbb::task API and the oneTBB task_group -API. This is no longer true with recent oneTBB releases (>= 2021/12.18, the -"tbb 2023" conda-forge migration), where does not -define TBB_INTERFACE_VERSION_MAJOR. As a result the `#if -TBB_INTERFACE_VERSION_MAJOR >= 12` guard evaluates as false and the code -falls back to the removed legacy tbb::task / tbb::empty_task / -tbb::task_group_context API, failing to compile. - -Including explicitly guarantees the macro is defined for the -preprocessor checks. The header is available in all relevant TBB versions. - -diff --git a/pxr/base/work/workTBB/dispatcher_impl.h b/pxr/base/work/workTBB/dispatcher_impl.h ---- a/pxr/base/work/workTBB/dispatcher_impl.h -+++ b/pxr/base/work/workTBB/dispatcher_impl.h -@@ -13,6 +13,7 @@ - // Blocked range is not used in this file, but this header happens to pull in - // the TBB version header in a way that works in all TBB versions. - #include -+#include - #include - #if TBB_INTERFACE_VERSION_MAJOR >= 12 - #include -diff --git a/pxr/base/work/workTBB/detachedTask_impl.h b/pxr/base/work/workTBB/detachedTask_impl.h ---- a/pxr/base/work/workTBB/detachedTask_impl.h -+++ b/pxr/base/work/workTBB/detachedTask_impl.h -@@ -10,5 +10,6 @@ - #include -+#include - #include "pxr/base/work/workTBB/dispatcher_impl.h" - #include "pxr/base/work/api.h" - - #if TBB_INTERFACE_VERSION_MAJOR >= 12 diff --git a/recipe/recipe.yaml b/recipe/recipe.yaml index b002dbb..0781aa9 100644 --- a/recipe/recipe.yaml +++ b/recipe/recipe.yaml @@ -14,14 +14,7 @@ source: patches: - link_python_to_executables.patch - add_pxr_install_dll_in_bin.patch - # Fix https://github.com/conda-forge/openusd-feedstock/issues/11 - - 3759.patch - remove_hardcoded_prefix.patch - # Explicitly include so TBB_INTERFACE_VERSION_MAJOR is - # defined when selecting the oneTBB task_group backend. Recent oneTBB - # (the "tbb 2023" migration) no longer defines it via , - # which made the workTBB backend fall back to the removed legacy tbb::task API. - - fix_tbb_version_macro.patch build: number: 0 From a0ba7567b796fa51b33ce7d4c1ac91fdf405e797 Mon Sep 17 00:00:00 2001 From: Jacob Oursland Date: Tue, 21 Jul 2026 19:24:14 -0600 Subject: [PATCH 4/5] Fix test step and Python bindings path for OpenUSD 26.08 Two 26.08 regressions surfaced once the patch-application failure was resolved: 1. ctest reported "No tests were found!!!" and failed the build. On some configurations (e.g. linux_64) OpenUSD registers no ctest tests at all; older ctest treated that as success (v26.05 logged the same message and passed), but recent ctest defaults the no-tests action to "error". Pass --no-tests=ignore to restore the prior behavior without masking real test failures on configurations that do register tests. 2. OpenUSD 26.08 added PXR_PYTHON_INSTALL_DIR, which now defaults to a lib/pythonX.Y/site-packages (Lib\site-packages on Windows) layout instead of the previously hard-coded lib/python. That breaks the "mv/move lib/python/pxr -> SP_DIR" step in build.sh/build.bat. Pin PXR_PYTHON_INSTALL_DIR=lib/python to keep the expected layout. --- recipe/build.bat | 8 +++++++- recipe/build.sh | 13 +++++++++++-- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/recipe/build.bat b/recipe/build.bat index 3ffa9c6..70ade39 100644 --- a/recipe/build.bat +++ b/recipe/build.bat @@ -1,6 +1,9 @@ mkdir build cd build +:: PXR_PYTHON_INSTALL_DIR pins the Python bindings to lib/python (the location +:: used before OpenUSD 26.08). As of 26.08 it defaults to a Lib\site-packages +:: layout, which would break the "move lib\python\pxr" step below. cmake %CMAKE_ARGS% ^ -G "Ninja" ^ -DCMAKE_INSTALL_PREFIX=%LIBRARY_PREFIX% ^ @@ -13,6 +16,7 @@ cmake %CMAKE_ARGS% ^ -DPXR_ENABLE_PYTHON_SUPPORT=ON ^ -DCMAKE_EXPORT_NO_PACKAGE_REGISTRY:BOOL=ON ^ -DPXR_PYTHON_SHEBANG="/usr/bin/env python" ^ + -DPXR_PYTHON_INSTALL_DIR=lib/python ^ -DPython3_EXECUTABLE=%PYTHON% ^ -DPython_EXECUTABLE=%PYTHON% ^ -DPXR_INSTALL_DLL_IN_BIN:BOOL=ON ^ @@ -36,7 +40,9 @@ if errorlevel 1 exit 1 :: resulting in a package (for example for a given Python version) silently not being uploaded :: testExecGeomXformable_Perf_Large is disabled as it is disabled upstream, see :: https://github.com/PixarAnimationStudios/OpenUSD/blob/v25.11/.github/workflows/buildusd.yml#L83 -ctest --output-on-failure -C Release -E "testWorkThreadLimits|testUsdResolverExample|TfPathUtils|testWorkDispatcher|testUsdUtilsFlattenLayerStack|testExecGeomXformable_Perf_Large" +:: --no-tests=ignore keeps ctest from erroring when no tests are registered +:: (recent ctest defaults that action to "error"). +ctest --output-on-failure --no-tests=ignore -C Release -E "testWorkThreadLimits|testUsdResolverExample|TfPathUtils|testWorkDispatcher|testUsdUtilsFlattenLayerStack|testExecGeomXformable_Perf_Large" if errorlevel 1 exit 1 :: The CMake install logic of openusd is not flexible, so let's fix the files diff --git a/recipe/build.sh b/recipe/build.sh index 6ca5115..1b2c612 100644 --- a/recipe/build.sh +++ b/recipe/build.sh @@ -32,6 +32,10 @@ if [[ "${build_platform}" != "${target_platform}" ]]; then CMAKE_ARGS="${CMAKE_ARGS} -DPYSIDEUICBINARY=$BUILD_PREFIX/lib/qt6/uic" fi +# PXR_PYTHON_INSTALL_DIR pins the Python bindings to lib/python (the hard-coded +# location used before OpenUSD 26.08). As of 26.08 it defaults to a +# lib/pythonX.Y/site-packages layout, which would break the "mv lib/python/pxr" +# step below. cmake ${CMAKE_ARGS} -GNinja .. \ -DCMAKE_BUILD_TYPE=Release \ -DBUILD_TESTING:BOOL=ON \ @@ -40,7 +44,8 @@ cmake ${CMAKE_ARGS} -GNinja .. \ -DPXR_BUILD_USD_IMAGING:BOOL=ON \ -DPXR_ENABLE_PYTHON_SUPPORT:BOOL=ON \ -DCMAKE_EXPORT_NO_PACKAGE_REGISTRY:BOOL=ON \ - -DPXR_PYTHON_SHEBANG="/usr/bin/env python" + -DPXR_PYTHON_SHEBANG="/usr/bin/env python" \ + -DPXR_PYTHON_INSTALL_DIR=lib/python cmake --build . --config Release cmake --build . --config Release --target install @@ -49,8 +54,12 @@ cmake --build . --config Release --target install # testJsIO is disabled as it now actually links usd_tf, and so the linker remove the link to Python # testExecGeomXformable_Perf_Large is disabled as it is disabled upstream, see # https://github.com/PixarAnimationStudios/OpenUSD/blob/v25.11/.github/workflows/buildusd.yml#L83 +# --no-tests=ignore keeps ctest from erroring when it registers no tests (the +# default action became "error" in recent ctest). On some configurations (e.g. +# linux_64) OpenUSD registers no ctest tests at all, which older ctest silently +# treated as success. if [[ "${CONDA_BUILD_CROSS_COMPILATION:-}" != "1" || "${CROSSCOMPILING_EMULATOR}" != "" ]]; then - ctest --output-on-failure -C Release -E "testWorkThreadLimits3|testJsIO|testExecGeomXformable_Perf_Large|${OPENUSD_ADDITIONAL_CTEST_TO_SKIP}" + ctest --output-on-failure --no-tests=ignore -C Release -E "testWorkThreadLimits3|testJsIO|testExecGeomXformable_Perf_Large|${OPENUSD_ADDITIONAL_CTEST_TO_SKIP}" fi # Workaround for https://github.com/prefix-dev/rattler-build/issues/1955 From 46492ac4ef1c46e0419a07358f8644b4e7f9e0ae Mon Sep 17 00:00:00 2001 From: Jacob Oursland Date: Wed, 22 Jul 2026 11:12:43 -0600 Subject: [PATCH 5/5] Link libpython into C++ ctest executables (macOS) On macOS, OpenUSD 26.08 fails 195 of 991 ctest tests, all standalone C++ test executables aborting at load with missing Python symbols, e.g.: dyld: symbol not found in flat namespace '__Py_NoneStruct' conda-forge's Python reports a static LDLIBRARY (libpythonX.Y.a) via sysconfig, so OpenUSD force-enables PXR_PY_UNDEFINED_DYNAMIC_LOOKUP. In that mode the USD C++ libraries reference Python C-API symbols (TfPython, boost::python glue) that are left undefined for runtime resolution, and libpython is only meant to be linked into EXECUTABLE targets. The existing link_python_to_executables.patch wires that up for the boost python interface target, but the executables built by pxr_build_test link only their explicit ${bt_LIBRARIES} and never pull in ${PYTHON_LIBRARIES}, so they load without libpython and cannot resolve those symbols. v26.05 linked this differently and passed 949/949. Add fix_macos_test_python_link.patch, which links ${PYTHON_LIBRARIES} into the test executables. Since a test target is an EXECUTABLE the generator expression resolves to the Python library for it (and to nothing for shared libraries), so the binaries load libpython and the flat-namespace symbols resolve at runtime. Only the non-installed test executables are affected; the shipped libraries are unchanged. --- recipe/fix_macos_test_python_link.patch | 38 +++++++++++++++++++++++++ recipe/recipe.yaml | 3 ++ 2 files changed, 41 insertions(+) create mode 100644 recipe/fix_macos_test_python_link.patch diff --git a/recipe/fix_macos_test_python_link.patch b/recipe/fix_macos_test_python_link.patch new file mode 100644 index 0000000..da079f7 --- /dev/null +++ b/recipe/fix_macos_test_python_link.patch @@ -0,0 +1,38 @@ +Link the Python libraries into C++ ctest executables. + +Since OpenUSD 26.08, PYTHON_LIBRARIES resolves (when +PXR_PY_UNDEFINED_DYNAMIC_LOOKUP is ON) to a generator expression that +links libpython only into EXECUTABLE targets, so that standalone +executables do not hit missing Python symbols while the shared libraries +themselves keep using -undefined dynamic_lookup. Regular CLI binaries get +this via the interface link libraries of the USD libraries they consume, +but the C++ test executables built by pxr_build_test only link +${bt_LIBRARIES} and never pull in ${PYTHON_LIBRARIES}. + +On macOS, conda-forge's Python reports a static LDLIBRARY +(libpythonX.Y.a) via sysconfig, which makes OpenUSD force +PXR_PY_UNDEFINED_DYNAMIC_LOOKUP ON. The USD C++ libraries reference +Python C-API symbols (TfPython, boost::python glue) that are left +undefined for runtime resolution, so a C++ test binary that does not link +libpython fails to load with errors such as: + + dyld: symbol not found in flat namespace '__Py_NoneStruct' + +This adds ${PYTHON_LIBRARIES} to the test link. Because a test target is +an EXECUTABLE, the generator expression evaluates to the Python library +for it (and to nothing for shared libraries), so the test binaries link +libpython and resolve those symbols. It only affects the (non-installed) +test executables, not the shipped libraries. + +diff --git a/cmake/macros/Public.cmake b/cmake/macros/Public.cmake +index 5f6a545..a019fe1 100644 +--- a/cmake/macros/Public.cmake ++++ b/cmake/macros/Public.cmake +@@ -661,6 +661,7 @@ function(pxr_build_test TEST_NAME) + ) + _pxr_target_link_libraries(${TEST_NAME} + ${bt_LIBRARIES} ++ ${PYTHON_LIBRARIES} + ) + + # Find libraries under the install prefix, which has the core USD diff --git a/recipe/recipe.yaml b/recipe/recipe.yaml index 0781aa9..b69ced5 100644 --- a/recipe/recipe.yaml +++ b/recipe/recipe.yaml @@ -15,6 +15,9 @@ source: - link_python_to_executables.patch - add_pxr_install_dll_in_bin.patch - remove_hardcoded_prefix.patch + # Link libpython into the C++ ctest executables so they don't fail to + # load with missing Python symbols (e.g. __Py_NoneStruct) on macOS. + - fix_macos_test_python_link.patch build: number: 0