From e5e39faa2ed2f94ed6f314d11138952e7f797d62 Mon Sep 17 00:00:00 2001 From: Nick Avramoussis <4256455+Idclip@users.noreply.github.com> Date: Fri, 7 Nov 2025 20:48:26 +1300 Subject: [PATCH 01/14] wip --- .github/workflows/build.yml | 66 +++++-------------------------- .github/workflows/core.yaml | 79 +++++++++++++++++++++++++++++++++++++ 2 files changed, 89 insertions(+), 56 deletions(-) create mode 100644 .github/workflows/core.yaml diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 299aaba7be..31f7d13dc3 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -53,71 +53,25 @@ defaults: jobs: linux-vfx: - # VFX platform jobs. These are run on the appropriate CentOS images from - # the provided ASWF docker containers if: | github.event_name != 'workflow_dispatch' || github.event.inputs.type == 'all' || github.event.inputs.type == 'linux' - runs-on: ${{ (github.repository_owner == 'AcademySoftwareFoundation' && 'ubuntu-22.04-8c-32g-300h') || 'ubuntu-latest' }} - name: > - linux:${{ matrix.config.image }}-abi:${{ matrix.config.abi }}-cxx:${{ matrix.config.cxx }}-type:${{ matrix.config.build }} - container: - image: aswf/ci-openvdb:${{ matrix.config.image }} - env: - CXX: ${{ matrix.config.cxx }} - CCACHE_DIR: /tmp/ccache strategy: matrix: config: - - { cxx: clang++, image: '2026', abi: '13', build: 'Release', cmake: '-DOPENVDB_USE_FUTURE_ABI_13=ON' } - - { cxx: g++, image: '2026', abi: '13', build: 'Release', cmake: '-DOPENVDB_USE_FUTURE_ABI_13=ON' } - - { cxx: clang++, image: '2026', abi: '13', build: 'Debug', cmake: '-DOPENVDB_USE_FUTURE_ABI_13=ON' } + - { cxx: clang++, image: '2026', abi: '13', build: 'Release', cmake: '' } + - { cxx: g++, image: '2026', abi: '13', build: 'Release', cmake: '' } + - { cxx: clang++, image: '2026', abi: '13', build: 'Debug', cmake: '' } - { cxx: clang++, image: '2025-clang19.1', abi: '12', build: 'Release', cmake: '' } - { cxx: clang++, image: '2024-clang17.2', abi: '11', build: 'Release', cmake: '-DDISABLE_DEPENDENCY_VERSION_CHECKS=ON' } - fail-fast: false - steps: - - uses: actions/checkout@v3 - - name: nanobind - run: ./ci/install_nanobind.sh 2.5.0 - # 2026 images are broken with gtest/glfw installs - - name: deps - if: contains(matrix.config.image, '2026') - run: | - ./ci/install_gtest.sh latest - ./ci/install_glfw.sh latest - - name: timestamp - id: timestamp - run: echo "timestamp=$(date -u +'%Y-%m-%dT%H:%M:%SZ')" >> $GITHUB_OUTPUT - - name: ccache - # don't use ccache for debug builds - if: matrix.config.build == 'Release' - id: ccache - uses: actions/cache@v3 - with: - path: /tmp/ccache - key: linux-vfx${{ matrix.config.image }}-abi${{ matrix.config.abi }}-${{ matrix.config.cxx }}-${{ steps.timestamp.outputs.timestamp }} - restore-keys: linux-vfx${{ matrix.config.image }}-abi${{ matrix.config.abi }}-${{ matrix.config.cxx }}- - - name: build - run: > - ./ci/build.sh -v - --build-type=${{ matrix.config.build }} - --components=\"core,python,bin,view,render,test\" - --cargs=\" - ${{ matrix.config.cmake }} - -DOPENVDB_CXX_STRICT=ON - -DOPENVDB_ABI_VERSION_NUMBER=${{ matrix.config.abi }} - \" - - name: test - # Skip Debug on commits as they take a while. - if: github.event_name == 'schedule' || github.event_name == 'workflow_dispatch' || matrix.config.build == 'Release' - run: | - cd build && ctest -V - cd - && ./ci/test_install.sh - # Keep ccache light by stripping out any caches not accessed in the last day - - name: ccache_clean - if: matrix.config.build == 'Release' - run: ccache --evict-older-than 1d + uses: ./.github/workflows/core.yaml + with: + cxx: ${{ matrix.config.cxx }} + image: ${{ matrix.config.image }} + abi: ${{ matrix.config.abi }} + build: ${{ matrix.config.build }} + cmake: ${{ matrix.config.cmake }} windows: # Windows CI. Tests a dynamic build with MD. diff --git a/.github/workflows/core.yaml b/.github/workflows/core.yaml new file mode 100644 index 0000000000..4cca026715 --- /dev/null +++ b/.github/workflows/core.yaml @@ -0,0 +1,79 @@ +name: OpenVDB Build + +on: + workflow_call: + inputs: + cxx: + required: false + default: 'clang++' + type: string + image: + required: false + default: '2026' + type: string + abi: + required: false + default: 13 + type: number + components: + required: false + default: 'core' + type: string + build: + required: false + default: 'Release' + type: string + cmake: + required: false + type: string + +jobs: + linux: + runs-on: ${{ (github.repository_owner == 'AcademySoftwareFoundation' && 'ubuntu-22.04-8c-32g-300h') || 'ubuntu-latest' }} + name: linux:${{ inputs.image }}-abi:${{ inputs.abi }}-cxx:${{ inputs.cxx }}-type:${{ inputs.build }} + container: + image: aswf/ci-openvdb:${{ inputs.image }} + env: + CXX: ${{ inputs.cxx }} + CCACHE_DIR: /tmp/ccache + steps: + - uses: actions/checkout@v3 + - name: nanobind + if: contains(inputs.components, 'python') + run: ./ci/install_nanobind.sh 2.5.0 + - name: timestamp + id: timestamp + run: echo "timestamp=$(date -u +'%Y-%m-%dT%H:%M:%SZ')" >> $GITHUB_OUTPUT + - name: ccache + # don't use ccache for debug builds + if: inputs.build == 'Release' + id: ccache + uses: actions/cache@v3 + with: + path: /tmp/ccache + key: linux-vfx${{ inputs.image }}-abi${{ inputs.abi }}-${{ inputs.cxx }}-${{ steps.timestamp.outputs.timestamp }} + restore-keys: linux-vfx${{ inputs.image }}-abi${{ inputs.abi }}-${{ inputs.cxx }}- + - name: build + run: > + ./ci/build.sh -v + --build-type=${{ inputs.build }} + --components=\"${{ inputs.components }}\" + --cargs=\" + ${{ inputs.cmake }} + -DOPENVDB_CXX_STRICT=ON + -DOPENVDB_AX_TEST_CMD_DOWNLOADS=ON + -DOPENVDB_ABI_VERSION_NUMBER=${{ inputs.abi }} + \" + - name: test + # Skip Debug on commits as they take a while. + if: github.event_name == 'schedule' || github.event_name == 'workflow_dispatch' || matrix.config.build == 'Release' + run: | + cd build && ctest -V + cd - && ./ci/test_install.sh + - name: test_doxygen_examples + if: contains(inputs.components, 'ax') + run: ./ci/extract_test_examples.sh + # Keep ccache light by stripping out any caches not accessed in the last day + - name: ccache_clean + if: inputs.build == 'Release' + run: ccache --evict-older-than 1d From 7fada72b58d5fab77c718b9954d5f7a205a05f46 Mon Sep 17 00:00:00 2001 From: Nick Avramoussis <4256455+Idclip@users.noreply.github.com> Date: Fri, 7 Nov 2025 23:41:25 +1300 Subject: [PATCH 02/14] wip --- .github/workflows/abi-checker.yaml | 106 +++++ .github/workflows/ax.yml | 147 +----- .github/workflows/build.yml | 177 ++++--- .github/workflows/houidni-fetch.yaml | 126 +++++ .github/workflows/nanovdb.yml | 189 -------- .../{core.yaml => template-linux.yaml} | 19 +- .github/workflows/template-macos.yaml | 55 +++ .github/workflows/template-windows.yaml | 84 ++++ .github/workflows/weekly.yml | 447 ------------------ 9 files changed, 492 insertions(+), 858 deletions(-) create mode 100644 .github/workflows/abi-checker.yaml create mode 100644 .github/workflows/houidni-fetch.yaml delete mode 100644 .github/workflows/nanovdb.yml rename .github/workflows/{core.yaml => template-linux.yaml} (82%) create mode 100644 .github/workflows/template-macos.yaml create mode 100644 .github/workflows/template-windows.yaml diff --git a/.github/workflows/abi-checker.yaml b/.github/workflows/abi-checker.yaml new file mode 100644 index 0000000000..e389e247d9 --- /dev/null +++ b/.github/workflows/abi-checker.yaml @@ -0,0 +1,106 @@ +# This workflow runs once a week and tests a variety of configurations, +# dependencies and other specific or expensive checkes (sanitizers). +# It also contains the Houdini Cache jobs which update the CI cache +# with new Houdini releases. + +name: Weekly + +on: + schedule: + # run this workflow Sunday 00:00 UTC + - cron: '0 0 * * 0' + workflow_dispatch: + inputs: + type: + description: 'The type of CI to run (all, houdini, latest, extra, ax, blosc, abi)' + required: true + default: 'all' + +# Allow subsequent pushes to the same PR or REF to cancel any previous jobs. +concurrency: + group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} + cancel-in-progress: true + +defaults: + run: + shell: bash + +jobs: + linux-abi-checker: + if: | + github.event_name == 'workflow_dispatch' && + (github.event.inputs.type == 'all' || + github.event.inputs.type == 'abi') + runs-on: ubuntu-22.04 + env: + # The 'abicheck' build type sets these, but older versions of the library + # may not have this build type. See OpenVDBCXX.cmake + CXXFLAGS: "-gdwarf-4 -g3 -ggdb -Og" + steps: + - name: Enable Node 16 + run: | + echo "ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true" >> $GITHUB_ENV + - uses: actions/checkout@v3 + with: + fetch-depth: 0 + fetch-tags: true + # Compute the latest major version - that is used as our baseline + # note: For CI forks, make sure you have your tags synced + - name: get_major_version + run: | + LATEST_VERSION_TAG=$(git tag --merged | sort --version-sort | tail -n1) + echo "Computed latest VDB tag: ${LATEST_VERSION_TAG}" + VDB_MAJOR_VERSION=$(echo ${LATEST_VERSION_TAG} | cut -f1 -d '.' | tr -d -c 0-9) + echo "Using major version: ${VDB_MAJOR_VERSION}" + echo "VDB_MAJOR_VERSION=${VDB_MAJOR_VERSION}" >> "$GITHUB_ENV" + - name: install_deps + run: sudo apt-get -q install -y libboost-iostreams-dev libtbb-dev libblosc-dev elfutils + - name: install_abi_checker + run: sudo apt-get -q install -y abi-dumper abi-compliance-checker + - name: build_new + run: > + ./ci/build.sh -v + --build-dir=build_new + --build-type=abicheck + --target=openvdb_shared + --components=\"core\" + --cargs=\'-DUSE_EXPLICIT_INSTANTIATION=OFF -DDISABLE_DEPENDENCY_VERSION_CHECKS=ON\' + - name: checkout_baseline + run: git checkout v${VDB_MAJOR_VERSION}.0.0 + - name: build_old + run: > + ./ci/build.sh -v + --build-dir=build_old + --build-type=abicheck + --target=openvdb_shared + --components=\"core\" + --cargs=\'-DUSE_EXPLICIT_INSTANTIATION=OFF -DDISABLE_DEPENDENCY_VERSION_CHECKS=ON\' + - name: abi_dump + run: | + abi-dumper build_new/openvdb/openvdb/libopenvdb.so -o ABI-NEW.dump -lver 1 + abi-dumper build_old/openvdb/openvdb/libopenvdb.so -o ABI-OLD.dump -lver 2 + # Replace the version namespace in the latest ABI dump with the baseline + # version we're comparing against. We should probably instead build the + # latest with the baseline version number but no CMake/defines allow us to + # do this. + - name: replace_symbols + run: sed -i -E 's/openvdb([^v]*)v[0-9]*_[0-9]/openvdb\1v'${VDB_MAJOR_VERSION}'_0/g' ABI-NEW.dump + - name: abi_check + # -strict treats warnings as errors + # -extended checks all member data + # we check everything _not_ in openvdb::**::internal namespace + run: > + abi-compliance-checker -l OPENVDB + -old ABI-OLD.dump + -new ABI-NEW.dump + -skip-internal-symbols "\d(openvdb.*internal)" + -skip-internal-types "(openvdb.*internal)::" + -strict + -extended + - name: upload_report + uses: actions/upload-artifact@v4 + if: always() + with: + name: abi_report + path: ./compat_reports/OPENVDB/2_to_1/compat_report.html + retention-days: 5 diff --git a/.github/workflows/ax.yml b/.github/workflows/ax.yml index ce4d496d3f..33445234e0 100644 --- a/.github/workflows/ax.yml +++ b/.github/workflows/ax.yml @@ -2,37 +2,6 @@ name: AX on: - push: - branches: - - 'master' - - 'feature/**' - - 'pr/**' - paths-ignore: - - 'CHANGES' - - 'CODEOWNERS' - - 'doc/**' - - 'nanovdb/**' - - 'openvdb_maya/**' - - 'openvdb_houdini/**' - - 'fvdb/**' - - 'pendingchanges/**' - - '**.md' - pull_request: - branches: - - '**' - paths-ignore: - - 'CHANGES' - - 'CODEOWNERS' - - 'doc/**' - - 'nanovdb/**' - - 'openvdb_maya/**' - - 'openvdb_houdini/**' - - 'fvdb/**' - - 'pendingchanges/**' - - '**.md' - schedule: - # run this workflow every day 7am UTC - - cron: '0 7 * * *' workflow_dispatch: inputs: type: @@ -40,127 +9,15 @@ on: required: true default: 'all' -# Allow subsequent pushes to the same PR or REF to cancel any previous jobs. -concurrency: - group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} - cancel-in-progress: true - defaults: run: shell: bash jobs: - linux-ax: - if: | - github.event_name != 'workflow_dispatch' || - github.event.inputs.type == 'all' || - github.event.inputs.type == 'linux' - runs-on: ${{ (github.repository_owner == 'AcademySoftwareFoundation' && 'ubuntu-22.04-8c-32g-300h') || 'ubuntu-latest' }} - name: > - linux-ax:${{ matrix.config.image }}-cxx:${{ matrix.config.cxx }}-${{ matrix.config.build }} - container: - image: aswf/ci-openvdb:${{ matrix.config.image }} - env: - CXX: ${{ matrix.config.cxx }} - CCACHE_DIR: /tmp/ccache - strategy: - matrix: - # Only test unified builds (core+ax). weekly CI should test standalone - config: - - { image: '2026', cxx: 'clang++', build: 'Release', cmake: '' } - - { image: '2026', cxx: 'g++', build: 'Release', cmake: '' } - - { image: '2026', cxx: 'clang++', build: 'Debug', cmake: '' } - - { image: '2025-clang19.1', cxx: 'clang++', build: 'Release', cmake: '' } - - { image: '2024-clang16.2', cxx: 'clang++', build: 'Release', cmake: '' } - # Needed to test LLVM 15.X - - { image: '2023-clang15', cxx: 'clang++', build: 'Release', cmake: '-DDISABLE_DEPENDENCY_VERSION_CHECKS=ON' } - fail-fast: false - steps: - - uses: actions/checkout@v3 - - name: nanobind - run: ./ci/install_nanobind.sh 2.5.0 - # 2026 images are broken with gtest/glfw installs - - name: deps - if: contains(matrix.config.image, '2026') - run: ./ci/install_gtest.sh latest - - name: timestamp - id: timestamp - run: echo "timestamp=$(date -u +'%Y-%m-%dT%H:%M:%SZ')" >> $GITHUB_OUTPUT - - name: ccache - # don't use ccache for debug builds - if: matrix.config.build == 'Release' - id: ccache - uses: actions/cache@v3 - with: - path: /tmp/ccache - key: linux-ax${{ matrix.config.image }}-${{ matrix.config.cxx }}-${{ steps.timestamp.outputs.timestamp }} - restore-keys: linux-ax${{ matrix.config.image }}-${{ matrix.config.cxx }}- - - name: build - run: > - ./ci/build.sh -v - --build-type=${{ matrix.config.build }} - --components='core,python,axcore,axbin,axtest' - --cargs=\" - ${{ matrix.config.cmake }} - -DOPENVDB_AX_TEST_CMD_DOWNLOADS=ON - -DUSE_EXPLICIT_INSTANTIATION=OFF - \" - - name: test - run: cd build && ctest -V - - name: test_doxygen_examples - run: ./ci/extract_test_examples.sh - # Keep ccache light by stripping out any caches not accessed in the last day - - name: ccache_clean - if: matrix.config.build == 'Release' - run: ccache --evict-older-than 1d - - macos-ax: - if: | - github.event_name != 'workflow_dispatch' || - github.event.inputs.type == 'all' || - github.event.inputs.type == 'mac' - runs-on: ${{ matrix.config.runner }} - name: macos-cxx:${{ matrix.config.cxx }}-llvm:${{ matrix.config.llvm }}-${{ matrix.config.build }} - env: - CXX: ${{ matrix.config.cxx }} - strategy: - matrix: - config: - - { runner: 'macos-15', cxx: 'clang++', build: 'Release', llvm: '21' } - - { runner: 'macos-14', cxx: 'clang++', build: 'Release', llvm: '21' } - - { runner: 'macos-14', cxx: 'clang++', build: 'Release', llvm: '20' } - - { runner: 'macos-14', cxx: 'clang++', build: 'Release', llvm: '19' } - - { runner: 'macos-14', cxx: 'clang++', build: 'Release', llvm: '18' } - - { runner: 'macos-14', cxx: 'clang++', build: 'Release', llvm: '17' } - - { runner: 'macos-14', cxx: 'clang++', build: 'Release', llvm: '16' } - fail-fast: false - steps: - - uses: actions/checkout@v3 - - name: install_deps - run: | - ./ci/install_macos.sh ${{ matrix.config.llvm }} - ./ci/install_tbb_macos.sh - - name: build - run: > - ./ci/build.sh -v - --build-type=${{ matrix.config.build }} - --components="core,python,axcore,axbin,axtest" - --cargs=\" - -DOPENVDB_AX_TEST_CMD_DOWNLOADS=ON - -DUSE_EXPLICIT_INSTANTIATION=OFF - -DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/install - -DLLVM_DIR=/opt/homebrew/opt/llvm@${{ matrix.config.llvm }}/lib/cmake/llvm - \" - - name: test - run: cd build && ctest -V - - name: test_doxygen_examples - run: ./ci/extract_test_examples.sh - gen-grammar: if: | - github.event_name == 'workflow_dispatch' && - github.event.inputs.type == 'grammar' - runs-on: ${{ (github.repository_owner == 'AcademySoftwareFoundation' && 'ubuntu-22.04-8c-32g-300h') || 'ubuntu-latest' }} + github.event_name == 'workflow_dispatch' + runs-on: ubuntu-latest container: image: aswf/ci-openvdb:2025-clang19.1 steps: diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 31f7d13dc3..9dd5eacede 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -13,8 +13,6 @@ on: - 'doc/**' - 'openvdb_maya/**' - 'openvdb_houdini/**' - - 'openvdb_ax/**' - - 'nanovdb/**' - 'fvdb/**' - 'pendingchanges/**' - '**.md' @@ -27,8 +25,6 @@ on: - 'doc/**' - 'openvdb_maya/**' - 'openvdb_houdini/**' - - 'openvdb_ax/**' - - 'nanovdb/**' - 'fvdb/**' - 'pendingchanges/**' - '**.md' @@ -60,92 +56,127 @@ jobs: strategy: matrix: config: - - { cxx: clang++, image: '2026', abi: '13', build: 'Release', cmake: '' } - - { cxx: g++, image: '2026', abi: '13', build: 'Release', cmake: '' } - - { cxx: clang++, image: '2026', abi: '13', build: 'Debug', cmake: '' } - - { cxx: clang++, image: '2025-clang19.1', abi: '12', build: 'Release', cmake: '' } - - { cxx: clang++, image: '2024-clang17.2', abi: '11', build: 'Release', cmake: '-DDISABLE_DEPENDENCY_VERSION_CHECKS=ON' } - uses: ./.github/workflows/core.yaml + - { cxx: clang++, image: '2026', abi: '13', build: 'Release', components: 'core,python,bin,view,render,test,', cmake: '' } + - { cxx: g++, image: '2026', abi: '13', build: 'Release', components: 'core,python,bin,view,render,test,', cmake: '' } + - { cxx: clang++, image: '2026', abi: '13', build: 'Debug', components: 'core,python,bin,view,render,test,', cmake: '' } + - { cxx: clang++, image: '2025-clang19.1', abi: '12', build: 'Release', components: 'core,python,bin,view,render,test,', cmake: '' } + - { cxx: clang++, image: '2024-clang17.2', abi: '11', build: 'Release', components: 'core,python,bin,view,render,test,', cmake: '-DDISABLE_DEPENDENCY_VERSION_CHECKS=ON' } + # Weekly + - { name: 'all', cxx: clang++, image: '2026', build: 'Release', components: 'core,python,bin,view,render,test', cmake: '-DUSE_BLOSC=ON -DUSE_ZLIB=ON -DUSE_EXR=ON -DUSE_PNG=ON' } + - { name: 'lite', cxx: clang++, image: '2026', build: 'Release', components: 'core,python,bin,view,render,test', cmake: '-DUSE_BLOSC=OFF -DUSE_ZLIB=OFF -DUSE_EXR=OFF -DUSE_PNG=OFF -DOPENVDB_USE_DELAYED_LOADING=OFF' } + - { name: 'half', cxx: clang++, image: '2026', build: 'Release', components: 'core,python,bin,view,render,test', cmake: '-DUSE_BLOSC=OFF -DUSE_IMATH_HALF=ON' } + - { name: 'sse', cxx: clang++, image: '2026', build: 'Release', components: 'core,python,bin,view,render,test', cmake: '-DOPENVDB_SIMD=SSE42' } + - { name: 'avx', cxx: clang++, image: '2026', build: 'Release', components: 'core,python,bin,view,render,test', cmake: '-DOPENVDB_SIMD=AVX' } + - { name: 'pygrid', cxx: clang++, image: '2026', build: 'Release', components: 'core,python,bin,view,render,test', cmake: '-DOPENVDB_PYTHON_WRAP_ALL_GRID_TYPES=ON' } + - { name: 'asan', cxx: clang++, image: '2026', build: 'asan', components: 'core,test', cmake: '-DDISABLE_DEPENDENCY_VERSION_CHECKS=ON -DNANOVDB_USE_OPENVDB=ON -DOPENVDB_AX_STATIC=OFF -DOPENVDB_CORE_STATIC=OFF -DUSE_BLOSC=OFF' } # We never called blosc_destroy(), so disable blosc to silence these errors + - { name: 'ubsan', cxx: clang++, image: '2026', build: 'ubsan', components: 'core,test', cmake: '-DDISABLE_DEPENDENCY_VERSION_CHECKS=ON -DCMAKE_CXX_FLAGS="-Wno-deprecated-declarations" ' } + - { name: 'c++20', cxx: clang++, image: '2026', build: 'Release', components: 'core,test', cmake: '-DCMAKE_CXX_STANDARD=20' } + - { name: 'conf', cxx: clang++, image: '2026', build: 'Release', components: 'core,python,bin,view,render,test', cmake: '-DCMAKE_FIND_PACKAGE_PREFER_CONFIG=ON' } + # AX + - { cxx: clang++, image: '2026', abi: '13', build: 'Release', components: 'core,python,bin,view,render,test,axcore,axbin,axtest', cmake: '' } + - { cxx: g++, image: '2026', abi: '13', build: 'Release', components: 'core,python,bin,view,render,test,axcore,axbin,axtest', cmake: '' } + - { cxx: clang++, image: '2026', abi: '13', build: 'Debug', components: 'core,python,bin,view,render,test,axcore,axbin,axtest', cmake: '' } + - { cxx: clang++, image: '2025-clang19.1', abi: '12', build: 'Release', components: 'core,python,bin,view,render,test,axcore,axbin,axtest', cmake: '' } + - { cxx: clang++, image: '2024-clang17.2', abi: '11', build: 'Release', components: 'core,python,bin,view,render,test,axcore,axbin,axtest', cmake: '-DDISABLE_DEPENDENCY_VERSION_CHECKS=ON' } + # For AX builds, to test LLVM 15/16 + - { cxx: clang++, image: '2024-clang16.2', abi: '13', build: 'Release', components: 'core,python,axcore,axbin,axtest', cmake: '-DDISABLE_DEPENDENCY_VERSION_CHECKS=ON' } + - { cxx: clang++, image: '2023-clang15', abi: '13', build: 'Release', components: 'core,python,axcore,axbin,axtest', cmake: '-DDISABLE_DEPENDENCY_VERSION_CHECKS=ON' } + # NanoVDB + # NOTE: CMAKE_POSITION_INDEPENDENT_CODE set to fix default behaviour change in clang 14 + # https://github.com/AcademySoftwareFoundation/aswf-docker/issues/228 + - { cxx: g++, image: '2024-clang17.2', build: 'Release', components: 'core,nano,nanotest,nanoexam,nanobench,nanotool', cmake: '-DCMAKE_POSITION_INDEPENDENT_CODE=ON -DUSE_BLOSC=OFF -DUSE_EXPLICIT_INSTANTIATION=OFF' } + - { cxx: g++, image: '2024-clang17.2', build: 'Debug', components: 'core,nano,nanotest,nanoexam,nanobench,nanotool', cmake: '-DCMAKE_POSITION_INDEPENDENT_CODE=ON -DUSE_BLOSC=OFF -DUSE_EXPLICIT_INSTANTIATION=OFF' } + - { cxx: clang++, image: '2024-clang17.2', build: 'Release', components: 'core,nano,nanotest,nanoexam,nanobench,nanotool', cmake: '-DCMAKE_POSITION_INDEPENDENT_CODE=ON -DUSE_BLOSC=OFF -DUSE_EXPLICIT_INSTANTIATION=OFF' } + - { cxx: clang++, image: '2024-clang17.2', build: 'Debug', components: 'core,nano,nanotest,nanoexam,nanobench,nanotool', cmake: '-DCMAKE_POSITION_INDEPENDENT_CODE=ON -DUSE_BLOSC=OFF -DUSE_EXPLICIT_INSTANTIATION=OFF' } + - { cxx: clang++, image: '2024-clang17.2', build: 'Release', components: 'nanotest', cmake: '-DNANOVDB_USE_OPENVDB=OFF -DNANOVDB_USE_CUDA=OFF' } + fail-fast: false + uses: ./.github/workflows/template-linux.yaml with: cxx: ${{ matrix.config.cxx }} image: ${{ matrix.config.image }} abi: ${{ matrix.config.abi }} build: ${{ matrix.config.build }} + components: ${{ matrix.config.components }} cmake: ${{ matrix.config.cmake }} - windows: - # Windows CI. Tests a dynamic build with MD. + macos-vfx: if: | github.event_name != 'workflow_dispatch' || github.event.inputs.type == 'all' || - github.event.inputs.type == 'win' - runs-on: ${{ (github.repository_owner == 'AcademySoftwareFoundation' && 'windows-2022-8c-32g-300h') || 'windows-latest' }} - name: windows - env: - VCPKG_DEFAULT_TRIPLET: x64-windows + github.event.inputs.type == 'mac' strategy: + matrix: + config: + - { image: 'macos-14', build: 'Release', components: 'core,python,bin,view,render,test', llvm: '', cmake: '' } + - { image: 'macos-15', build: 'Release', components: 'core,python,bin,view,render,test', llvm: '', cmake: '' } + # core,python,axcore,axbin,axtest + - { image: 'macos-15', build: 'Release', components: 'core,python,axcore,axbin,axtest', llvm: '21' } + - { image: 'macos-14', build: 'Release', components: 'core,python,axcore,axbin,axtest', llvm: '21' } + - { image: 'macos-14', build: 'Release', components: 'core,python,axcore,axbin,axtest', llvm: '20' } + - { image: 'macos-14', build: 'Release', components: 'core,python,axcore,axbin,axtest', llvm: '19' } + - { image: 'macos-14', build: 'Release', components: 'core,python,axcore,axbin,axtest', llvm: '18' } + - { image: 'macos-14', build: 'Release', components: 'core,python,axcore,axbin,axtest', llvm: '17' } + - { image: 'macos-14', build: 'Release', components: 'core,python,axcore,axbin,axtest', llvm: '16' } + - { image: 'macos-latest', build: 'Release', components: 'core,python,axcore,axbin,axtest', llvm: '20', cmake: '-DUSE_EXPLICIT_INSTANTIATION=OFF ' } + # Nano + - { image: 'macos-14', build: 'Release', components: 'core,nano,nanotest,nanoexam,nanobench,nanotool', cmake: '-DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/install -DUSE_EXPLICIT_INSTANTIATION=OFF -DNANOVDB_USE_CUDA=OFF -DNANOVDB_USE_OPENVDB=ON' } + - { image: 'macos-14', build: 'Debug', components: 'core,nano,nanotest,nanoexam,nanobench,nanotool', cmake: '-DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/install -DUSE_EXPLICIT_INSTANTIATION=OFF -DNANOVDB_USE_CUDA=OFF -DNANOVDB_USE_OPENVDB=ON' } fail-fast: false - steps: - - uses: actions/checkout@v3 - - name: path - shell: pwsh - run: | - # note: system path must be modified in a previous step to it's use - echo "$Env:VCPKG_INSTALLATION_ROOT\installed\x64-windows\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append - echo "${{github.workspace}}\build\openvdb\openvdb\Release" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append - - name: install - shell: powershell - run: .\ci\install_windows.ps1 - - name: install_numpy - shell: powershell - run: .\ci\install_windows_numpy.ps1 - - name: build - run: > - ./ci/build.sh -v - --config='Release' - --components='core,bin,view,render,python,test' - --cargs=\' - -A x64 -G \"Visual Studio 17 2022\" -DOPENVDB_CORE_STATIC=OFF - -DMSVC_COMPRESS_PDB=ON - -DUSE_EXR=ON - -DUSE_PNG=ON - -DVCPKG_TARGET_TRIPLET=${VCPKG_DEFAULT_TRIPLET} - -DCMAKE_TOOLCHAIN_FILE=\"${VCPKG_INSTALLATION_ROOT}\\scripts\\buildsystems\\vcpkg.cmake\" - \' - - name: size - # Print the build directy size (monitor if we're hitting runner limits) - run: du -h build - - name: test - run: cd build && ctest -V -C Release + uses: ./.github/workflows/template-macos.yaml + with: + image: ${{ matrix.config.image }} + build: ${{ matrix.config.build }} + components: ${{ matrix.config.components }} + cmake: ${{ matrix.config.cmake }} + llvm: ${{ matrix.config.llvm }} - macos: + windows: + # Windows CI. Tests a dynamic build with MD. if: | github.event_name != 'workflow_dispatch' || github.event.inputs.type == 'all' || - github.event.inputs.type == 'mac' - runs-on: ${{ matrix.config.image }} - name: ${{ matrix.config.image }} - env: - CXX: clang++ + github.event.inputs.type == 'win' strategy: matrix: config: - - { image: macos-14 } - - { image: macos-15 } - steps: - - uses: actions/checkout@v3 - - name: install - run: | - ./ci/install_macos.sh - ./ci/install_tbb_macos.sh - - name: build - run: > - ./ci/build.sh -v - --build-type=Release - --components=\"core,python,bin,view,render,test\" - --cargs=\' - -DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/install - \' - - name: test - run: cd build && ctest -V + # static build of blosc from vcpkg does not build internal sources. + # USE_STATIC_DEPENDENCIES is required for IlmBase/OpenEXR defines and + # Boost as both shared and static libs are installed. + # USE_EXPLICIT_INSTANTIATION is disabled for debug static libraries + # due to disk space constraints + - { vc: 'x64-windows-static', build: 'Release', components: 'core,bin,view,render,test', cmake: '-DOPENVDB_CORE_SHARED=OFF -DUSE_STATIC_DEPENDENCIES=ON -DBLOSC_USE_EXTERNAL_SOURCES=ON' } + - { vc: 'x64-windows', build: 'Release', components: 'core,bin,view,render,python,test', cmake: '-DOPENVDB_CORE_STATIC=OFF' } + - { vc: 'x64-windows', build: 'Debug', components: 'core,bin,view,render,python,test', cmake: '-DOPENVDB_CORE_STATIC=OFF' } + # AX + # static build of blosc from vcpkg does not build internal sources. + # USE_STATIC_DEPENDENCIES is required for IlmBase/OpenEXR defines and + # Boost as both shared and static libs are installed. + # @todo We don't currently run the axtests with shared builds of ax + # due to symbol issues using LLVM as a static lib (which is the only + # option on Windows). + # @note currently only test static builds with MT as building LLVM as + # a shared lib on windows is a bit dicey + - { vc: 'x64-windows-static', llvm: '18.1.0', crt: 'MultiThreaded', components: 'core,axcore,axbin,axtest', build: 'Release', cmake: '-DOPENVDB_AX_TEST_CMD_DOWNLOADS=OFF -DUSE_EXPLICIT_INSTANTIATION=OFF -DOPENVDB_CORE_SHARED=OFF -DOPENVDB_AX_SHARED=OFF -DUSE_STATIC_DEPENDENCIES=ON -DBLOSC_USE_EXTERNAL_SOURCES=ON' } + - { vc: 'x64-windows-static', llvm: '18.1.0', crt: 'MultiThreadedDebug', components: 'core,axcore,axbin,axtest', build: 'Debug', cmake: '-DOPENVDB_AX_TEST_CMD_DOWNLOADS=OFF -DUSE_EXPLICIT_INSTANTIATION=OFF -DOPENVDB_CORE_SHARED=OFF -DOPENVDB_AX_SHARED=OFF -DUSE_STATIC_DEPENDENCIES=ON -DBLOSC_USE_EXTERNAL_SOURCES=ON' } + - { vc: 'x64-windows', llvm: '18.1.0', crt: 'MultiThreadedDLL', components: 'core,axcore,axbin', build: 'Release', cmake: '-DOPENVDB_AX_TEST_CMD_DOWNLOADS=OFF -DUSE_EXPLICIT_INSTANTIATION=OFF -DOPENVDB_CORE_STATIC=OFF -DOPENVDB_AX_STATIC=OFF' } + - { vc: 'x64-windows-static', llvm: '15.0.0', crt: 'MultiThreaded', components: 'core,axcore,axbin,axtest', build: 'Release', cmake: '-DOPENVDB_AX_TEST_CMD_DOWNLOADS=OFF -DUSE_EXPLICIT_INSTANTIATION=OFF -DOPENVDB_CORE_SHARED=OFF -DOPENVDB_AX_SHARED=OFF -DUSE_STATIC_DEPENDENCIES=ON -DBLOSC_USE_EXTERNAL_SOURCES=ON' } + # Nano + - { build: 'Release', components: 'core,nano,nanotest,nanoexam,nanobench,nanotool', cmake: '-DDUSE_EXPLICIT_INSTANTIATION=OFF' } + # static build of blosc from vcpkg does not build internal sources. + # USE_STATIC_DEPENDENCIES is required for IlmBase/OpenEXR defines and + # Boost as both shared and static libs are installed. + - { vc: 'x64-windows-static', build: 'Release', cmake: '-DOPENVDB_CORE_SHARED=OFF -DUSE_STATIC_DEPENDENCIES=ON -DBLOSC_USE_EXTERNAL_SOURCES=ON -DCMAKE_MSVC_RUNTIME_LIBRARY=MultiThreaded' } + - { vc: 'x64-windows-static', build: 'Debug', cmake: '-DOPENVDB_CORE_SHARED=OFF -DUSE_STATIC_DEPENDENCIES=ON -DBLOSC_USE_EXTERNAL_SOURCES=ON -DCMAKE_MSVC_RUNTIME_LIBRARY=MultiThreadedDebug' } + - { vc: 'x64-windows', build: 'Release', cmake: '-DOPENVDB_CORE_STATIC=OFF' } + - { vc: 'x64-windows', build: 'Debug', cmake: '-DOPENVDB_CORE_STATIC=OFF' } + fail-fast: false + uses: ./.github/workflows/template-windows.yaml + with: + vc: ${{ matrix.config.vc }} + image: ${{ matrix.config.image }} + build: ${{ matrix.config.build }} + components: ${{ matrix.config.components }} + cmake: ${{ matrix.config.cmake }} + llvm: ${{ matrix.config.llvm }} + crt: ${{ matrix.config.crt }} diff --git a/.github/workflows/houidni-fetch.yaml b/.github/workflows/houidni-fetch.yaml new file mode 100644 index 0000000000..400efe4289 --- /dev/null +++ b/.github/workflows/houidni-fetch.yaml @@ -0,0 +1,126 @@ +# This workflow runs once a week and tests a variety of configurations, +# dependencies and other specific or expensive checkes (sanitizers). +# It also contains the Houdini Cache jobs which update the CI cache +# with new Houdini releases. + +name: Weekly + +on: + schedule: + # run this workflow Sunday 00:00 UTC + - cron: '0 0 * * 0' + workflow_dispatch: + inputs: + type: + description: 'The type of CI to run (all, houdini, latest, extra, ax, blosc, abi)' + required: true + default: 'all' + +# Allow subsequent pushes to the same PR or REF to cancel any previous jobs. +concurrency: + group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} + cancel-in-progress: true + +defaults: + run: + shell: bash + +jobs: + ############################################################################# + ################################## Houdini ################################## + ############################################################################# + + # Check that valid github secrets have been set for the ability to + # download Houdini and cache it. The secrets are used in download_houdini.py + checksecret: + name: Verify Houdini Secrets + runs-on: ubuntu-latest + outputs: + HOUDINI_SECRETS: ${{ steps.check.outputs.HOUDINI_SECRETS }} + steps: + - id: check + env: + HOUDINI_CLIENT_ID: ${{ secrets.HOUDINI_CLIENT_ID }} + HOUDINI_SECRET_KEY: ${{ secrets.HOUDINI_SECRET_KEY }} + run: echo "HOUDINI_SECRETS=${{ env.HOUDINI_CLIENT_ID != '' && env.HOUDINI_SECRET_KEY != '' }}" >> $GITHUB_OUTPUT + - name: Skip Next Jobs + if: steps.check.outputs.HOUDINI_SECRETS != 'true' + run: echo "HOUDINI_CLIENT_ID and HOUDINI_SECRET_KEY GitHub Action Secrets needs to be set to install Houdini builds" + # Explicitly error on the ASWF repo, we expect this secret to always exist + - name: Error ASWF + if: steps.check.outputs.HOUDINI_SECRETS != 'true' && github.repository_owner == 'AcademySoftwareFoundation' + run: exit 1 + + # download the latest production version of Houdini X, strip out headers, + # libraries and binaries required for building OpenVDB and put it into + # the GitHub Actions cache + linux_houdini: + needs: [checksecret] + if: | + (needs.checksecret.outputs.HOUDINI_SECRETS == 'true') && + (github.event_name != 'workflow_dispatch' || + github.event.inputs.type == 'all' || + github.event.inputs.type == 'houdini') + runs-on: ${{ (github.repository_owner == 'AcademySoftwareFoundation' && 'ubuntu-22.04-8c-32g-300h') || 'ubuntu-latest' }} + name: linux-houdini:${{ matrix.config.hou_hash }} + env: + CXX: clang++ + HOUDINI_CLIENT_ID: ${{ secrets.HOUDINI_CLIENT_ID }} + HOUDINI_SECRET_KEY: ${{ secrets.HOUDINI_SECRET_KEY }} + strategy: + matrix: + config: + - { houdini_version: '21.0', platform: 'linux_x86_64_gcc11.2', hou_hash: '21_0' } + - { houdini_version: '20.5', platform: 'linux_x86_64_gcc11.2', hou_hash: '20_5' } + fail-fast: false + container: + image: aswf/ci-base:2024 + steps: + - uses: actions/checkout@v3 + - name: timestamp + id: timestamp + run: echo "timestamp=$(date -u +'%Y-%m-%dT%H:%M:%SZ')" >> $GITHUB_OUTPUT + - name: download_houdini + run: ./ci/download_houdini.sh ${{ matrix.config.houdini_version }} ${{ matrix.config.platform }} --prod + - name: install_houdini + run: | + mkdir $HOME/houdini_install + cp hou/hou.tar.gz $HOME/houdini_install/hou.tar.gz + cd $HOME/houdini_install && tar -xzf hou.tar.gz && cd - + - name: write_houdini_cache + uses: actions/cache/save@v3 + with: + path: hou + key: vdb-v5-houdini${{ matrix.config.hou_hash }}-${{ steps.timestamp.outputs.timestamp }} + + macos_houdini: + needs: [checksecret] + if: | + (needs.checksecret.outputs.HOUDINI_SECRETS == 'true') && + (github.event_name != 'workflow_dispatch' || + github.event.inputs.type == 'all' || + github.event.inputs.type == 'houdini') + # Note that macos-14 (current macos-latest) switches to M1. We could instead test + # the arm build here instead of the x86 one. + runs-on: macos-latest + name: macos-houdini + env: + HOUDINI_CLIENT_ID: ${{ secrets.HOUDINI_CLIENT_ID }} + HOUDINI_SECRET_KEY: ${{ secrets.HOUDINI_SECRET_KEY }} + steps: + - uses: actions/checkout@v3 + - name: timestamp + id: timestamp + run: echo "timestamp=$(date -u +'%Y-%m-%dT%H:%M:%SZ')" >> $GITHUB_OUTPUT + - name: download_houdini + run: ./ci/download_houdini.sh 21.0 macosx_arm64_clang15.0_14 --prod + - name: install_houdini + run: | + mkdir $HOME/houdini_install + cp hou/hou.tar.gz $HOME/houdini_install/hou.tar.gz + cd $HOME/houdini_install && tar -xzf hou.tar.gz && cd - + - name: write_houdini_cache + uses: actions/cache/save@v3 + with: + path: hou + key: vdb-v5-houdini-macos-${{ steps.timestamp.outputs.timestamp }} diff --git a/.github/workflows/nanovdb.yml b/.github/workflows/nanovdb.yml deleted file mode 100644 index d66266735b..0000000000 --- a/.github/workflows/nanovdb.yml +++ /dev/null @@ -1,189 +0,0 @@ - -name: NanoVDB - -on: - push: - branches: - - 'master' - - 'feature/**' - - 'pr/**' - paths-ignore: - - 'CHANGES' - - 'CODEOWNERS' - - 'doc/**' - - 'openvdb_ax/**' - - 'openvdb_maya/**' - - 'openvdb_houdini/**' - - 'fvdb/**' - - 'pendingchanges/**' - - '**.md' - pull_request: - branches: - - '**' - paths-ignore: - - 'CHANGES' - - 'CODEOWNERS' - - 'doc/**' - - 'openvdb_ax/**' - - 'openvdb_maya/**' - - 'openvdb_houdini/**' - - 'fvdb/**' - - 'pendingchanges/**' - - '**.md' - schedule: - # run this workflow every day 7am UTC - - cron: '0 7 * * *' - workflow_dispatch: - inputs: - type: - description: 'The type of CI to run (all, linux, win, mac)' - required: true - default: 'all' - -# Allow subsequent pushes to the same PR or REF to cancel any previous jobs. -concurrency: - group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} - cancel-in-progress: true - -jobs: - linux-nanovdb: - if: | - github.event_name != 'workflow_dispatch' || - github.event.inputs.type == 'all' || - github.event.inputs.type == 'linux' - runs-on: ${{ (github.repository_owner == 'AcademySoftwareFoundation' && 'ubuntu-22.04-8c-32g-300h') || 'ubuntu-latest' }} - name: > - linux-nanovdb:cxx:${{ matrix.config.cxx }}-${{ matrix.config.build }} - container: - image: aswf/ci-openvdb:${{ matrix.config.image }} - env: - CXX: ${{ matrix.config.cxx }} - strategy: - matrix: - config: - - { cxx: g++, image: '2024-clang17.2', build: 'Release' } - - { cxx: g++, image: '2024-clang17.2', build: 'Debug' } - - { cxx: clang++, image: '2024-clang17.2', build: 'Release' } - - { cxx: clang++, image: '2024-clang17.2', build: 'Debug' } - fail-fast: false - steps: - - uses: actions/checkout@v3 - - name: setup_cuda_12 - run: | - echo "/usr/local/cuda-12/bin" >> $GITHUB_PATH - echo "LD_LIBRARY_PATH=/usr/local/cuda-12/lib64:$LD_LIBRARY_PATH" >> $GITHUB_ENV - - name: build - # NOTE: CMAKE_POSITION_INDEPENDENT_CODE set to fix default behaviour change in clang 14 - # https://github.com/AcademySoftwareFoundation/aswf-docker/issues/228 - run: > - ./ci/build.sh -v - --build-type=${{ matrix.config.build }} - --components=core,nano,nanotest,nanoexam,nanobench,nanotool - --cargs=\' - -DUSE_EXPLICIT_INSTANTIATION=OFF - -DNANOVDB_USE_CUDA=ON - -DCMAKE_CUDA_ARCHITECTURES="80" - -DNANOVDB_USE_OPENVDB=ON - -DCMAKE_INSTALL_PREFIX=`pwd` - -DUSE_BLOSC=OFF - -DCMAKE_POSITION_INDEPENDENT_CODE=ON - \' - - name: test - run: cd build && sudo ctest -V -E ".*cuda.*|.*mgpu.*" - - windows-nanovdb: - if: | - github.event_name != 'workflow_dispatch' || - github.event.inputs.type == 'all' || - github.event.inputs.type == 'win' - runs-on: ${{ (github.repository_owner == 'AcademySoftwareFoundation' && 'windows-2022-8c-32g-300h') || 'windows-latest' }} - env: - VCPKG_DEFAULT_TRIPLET: 'x64-windows' - visual_studio: "Visual Studio 17 2022" - cuda: "12.4.0" - strategy: - fail-fast: false - steps: - - uses: actions/checkout@v3 - - name: path - run: | - # note: system path must be modified in a previous step to it's use - echo "$Env:VCPKG_INSTALLATION_ROOT\installed\x64-windows\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append - echo "${{github.workspace}}\build\openvdb\openvdb\Release" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append - - name: install_cuda - shell: powershell - run: .\ci\install_windows_cuda.ps1 - - name: install - shell: powershell - run: .\ci\install_windows.ps1 - - name: build - # nvcc doesn't set _WIN32 when run in bash so we need to set it manually - shell: bash - run: > - ./ci/build.sh -v - --config=Release - --components=core,nano,nanotest,nanoexam,nanobench,nanotool - --cargs=\' - -A x64 -G \"Visual Studio 17 2022\" -DOPENVDB_CORE_STATIC=OFF - -DMSVC_COMPRESS_PDB=ON - -DUSE_EXPLICIT_INSTANTIATION=OFF - -DNANOVDB_USE_CUDA=ON - -DCMAKE_CUDA_ARCHITECTURES="80" - -DCMAKE_CUDA_FLAGS="-D_WIN32" - -DNANOVDB_USE_OPENVDB=ON - -DVCPKG_TARGET_TRIPLET=${VCPKG_DEFAULT_TRIPLET} - -DCMAKE_TOOLCHAIN_FILE=\"${VCPKG_INSTALLATION_ROOT}\\scripts\\buildsystems\\vcpkg.cmake\" - \' - - name: test - shell: bash - run: cd build && ctest -V -E ".*cuda.*|.*mgpu.*" - - macos-nanovdb: - if: | - github.event_name != 'workflow_dispatch' || - github.event.inputs.type == 'all' || - github.event.inputs.type == 'mac' - runs-on: ${{ matrix.config.runner }} - env: - CXX: ${{ matrix.config.cxx }} - strategy: - matrix: - config: - - { runner: 'macos-14', cxx: 'clang++', build: 'Release' } - - { runner: 'macos-14', cxx: 'clang++', build: 'Debug' } - fail-fast: false - steps: - - uses: actions/checkout@v3 - - name: install_deps - run: | - ./ci/install_macos.sh - ./ci/install_tbb_macos.sh - - name: build - run: > - ./ci/build.sh -v - --build-type=${{ matrix.config.build }} - --components=core,nano,nanotest,nanoexam,nanobench,nanotool - --cargs=\'-DUSE_EXPLICIT_INSTANTIATION=OFF -DNANOVDB_USE_CUDA=OFF -DNANOVDB_USE_OPENVDB=ON -DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/install \' - - name: test - run: cd build && ctest -V -E ".*cuda.*|.*mgpu.*" - - nanovdb-lite: - if: | - github.event_name != 'workflow_dispatch' || - github.event.inputs.type == 'all' || - github.event.inputs.type == 'linux' - runs-on: ${{ (github.repository_owner == 'AcademySoftwareFoundation' && 'ubuntu-22.04-8c-32g-300h') || 'ubuntu-latest' }} - container: - image: aswf/ci-openvdb:2024-clang17.2 - steps: - - uses: actions/checkout@v3 - - name: install_gtest - run: ./ci/install_gtest.sh latest - - name: build_and_test - run: | - cd nanovdb/nanovdb - sudo mkdir .build - cd .build - sudo cmake -DUSE_EXPLICIT_INSTANTIATION=OFF -DNANOVDB_BUILD_UNITTESTS=ON -DNANOVDB_USE_OPENVDB=OFF -DNANOVDB_USE_CUDA=OFF ../ - sudo make -j8 install - sudo ctest -V diff --git a/.github/workflows/core.yaml b/.github/workflows/template-linux.yaml similarity index 82% rename from .github/workflows/core.yaml rename to .github/workflows/template-linux.yaml index 4cca026715..8cb63f900a 100644 --- a/.github/workflows/core.yaml +++ b/.github/workflows/template-linux.yaml @@ -1,4 +1,4 @@ -name: OpenVDB Build +name: OpenVDB Linux Build on: workflow_call: @@ -26,6 +26,9 @@ on: cmake: required: false type: string + flags: + required: false + type: string jobs: linux: @@ -41,6 +44,11 @@ jobs: - name: nanobind if: contains(inputs.components, 'python') run: ./ci/install_nanobind.sh 2.5.0 + - name: setup_cuda_12 + if: contains(inputs.flags, 'cuda') + run: | + echo "/usr/local/cuda-12/bin" >> $GITHUB_PATH + echo "LD_LIBRARY_PATH=/usr/local/cuda-12/lib64:$LD_LIBRARY_PATH" >> $GITHUB_ENV - name: timestamp id: timestamp run: echo "timestamp=$(date -u +'%Y-%m-%dT%H:%M:%SZ')" >> $GITHUB_OUTPUT @@ -59,18 +67,21 @@ jobs: --build-type=${{ inputs.build }} --components=\"${{ inputs.components }}\" --cargs=\" - ${{ inputs.cmake }} -DOPENVDB_CXX_STRICT=ON -DOPENVDB_AX_TEST_CMD_DOWNLOADS=ON -DOPENVDB_ABI_VERSION_NUMBER=${{ inputs.abi }} + -DNANOVDB_USE_CUDA=ON + -DNANOVDB_USE_OPENVDB=ON + -DCMAKE_CUDA_ARCHITECTURES="80" + ${{ inputs.cmake }} \" - name: test # Skip Debug on commits as they take a while. if: github.event_name == 'schedule' || github.event_name == 'workflow_dispatch' || matrix.config.build == 'Release' run: | - cd build && ctest -V + cd build && ctest -V -E ".*cuda.*|.*mgpu.*" cd - && ./ci/test_install.sh - - name: test_doxygen_examples + - name: test_ax_doxygen_examples if: contains(inputs.components, 'ax') run: ./ci/extract_test_examples.sh # Keep ccache light by stripping out any caches not accessed in the last day diff --git a/.github/workflows/template-macos.yaml b/.github/workflows/template-macos.yaml new file mode 100644 index 0000000000..f56eaf1832 --- /dev/null +++ b/.github/workflows/template-macos.yaml @@ -0,0 +1,55 @@ +name: OpenVDB MacOS Builds + +on: + workflow_call: + inputs: + image: + required: false + default: 'macos-latest' + type: string + components: + required: false + default: 'core' + type: string + build: + required: false + default: 'Release' + type: string + cmake: + required: false + type: string + llvm: + required: false + type: number + +jobs: + macos: + runs-on: ${{ inputs.image }} + name: macos:${{ inputs.image }}-type:${{ inputs.build }} + env: + CXX: clang++ + steps: + - uses: actions/checkout@v3 + - name: install_llvm + if: ${{ inputs.llvm != '' }} + run: ./ci/install_macos.sh ${{ inputs.llvm }} + - name: install_deps + run: ./ci/install_tbb_macos.sh + - name: build + run: > + ./ci/build.sh -v + --build-type=${{ inputs.build }} + --components="${{ inputs.components }}" + --cargs=\" + -DOPENVDB_AX_TEST_CMD_DOWNLOADS=ON + -DUSE_EXPLICIT_INSTANTIATION=OFF + -DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/install + -DLLVM_DIR=/opt/homebrew/opt/llvm@${{ inputs.llvm }}/lib/cmake/llvm + ${{ inputs.cmake }} + \" + - name: test + run: cd build && ctest -V -E ".*cuda.*|.*mgpu.*" + - name: test_ax_doxygen_examples + if: contains(inputs.components, 'ax') + run: ./ci/extract_test_examples.sh + diff --git a/.github/workflows/template-windows.yaml b/.github/workflows/template-windows.yaml new file mode 100644 index 0000000000..43926eff89 --- /dev/null +++ b/.github/workflows/template-windows.yaml @@ -0,0 +1,84 @@ +name: OpenVDB Windows Builds + +on: + workflow_call: + inputs: + vc: + required: false + default: 'x64-windows' + type: string + components: + required: false + default: 'core' + type: string + build: + required: false + default: 'Release' + type: string + cmake: + required: false + type: string + llvm: + required: false + type: string + crt: + required: false + type: string + +jobs: + windows: + runs-on: ${{ (github.repository_owner == 'AcademySoftwareFoundation' && 'windows-2022-8c-32g-300h') || 'windows-latest' }} + name: windows + env: + VCPKG_DEFAULT_TRIPLET: ${{ inputs.vc }} + visual_studio: "Visual Studio 17 2022" + # Read by install_windows_cuda + cuda: "12.4.0" + strategy: + fail-fast: false + steps: + - uses: actions/checkout@v3 + - name: path + shell: pwsh + run: | + # note: system path must be modified in a previous step to it's use + echo "$Env:VCPKG_INSTALLATION_ROOT\installed\x64-windows\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append + echo "${{github.workspace}}\build\openvdb\openvdb\Release" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append + - name: install + shell: powershell + run: .\ci\install_windows.ps1 + - name: llvm + if: contains(inputs.components, 'ax') + shell: bash + run: ./ci/install_llvm_windows.sh ${{ inputs.llvm }} ${{ inputs.crt }} + - name: install_numpy + shell: powershell + if: ${{ !contains(inputs.vc, 'static')}} + run: .\ci\install_windows_numpy.ps1 + - name: install_cuda + if: contains(inputs.components, 'nano') + shell: powershell + run: .\ci\install_windows_cuda.ps1 + - name: build + run: > + ./ci/build.sh -v + --config='Release' + --components='core,bin,view,render,python,test' + --cargs=\' + -A x64 -G \"Visual Studio 17 2022\" + -DMSVC_COMPRESS_PDB=ON + -DUSE_EXR=ON + -DUSE_PNG=ON + -DVCPKG_TARGET_TRIPLET=${VCPKG_DEFAULT_TRIPLET} + -DCMAKE_TOOLCHAIN_FILE=\"${VCPKG_INSTALLATION_ROOT}\\scripts\\buildsystems\\vcpkg.cmake\" + -DNANOVDB_USE_CUDA=ON + -DNANOVDB_USE_OPENVDB=ON + -DCMAKE_CUDA_ARCHITECTURES="80" + -DCMAKE_CUDA_FLAGS="-D_WIN32" + ${{ inputs.cmake }} + \' + - name: size + # Print the build directy size (monitor if we're hitting runner limits) + run: du -h build + - name: test + run: cd build && ctest -V -C Release -E ".*cuda.*|.*mgpu.*" diff --git a/.github/workflows/weekly.yml b/.github/workflows/weekly.yml index 353303e54c..f67e43ba6b 100644 --- a/.github/workflows/weekly.yml +++ b/.github/workflows/weekly.yml @@ -26,157 +26,10 @@ defaults: shell: bash jobs: - ############################################################################# - ################################## Houdini ################################## - ############################################################################# - - # Check that valid github secrets have been set for the ability to - # download Houdini and cache it. The secrets are used in download_houdini.py - checksecret: - name: Verify Houdini Secrets - runs-on: ubuntu-latest - outputs: - HOUDINI_SECRETS: ${{ steps.check.outputs.HOUDINI_SECRETS }} - steps: - - id: check - env: - HOUDINI_CLIENT_ID: ${{ secrets.HOUDINI_CLIENT_ID }} - HOUDINI_SECRET_KEY: ${{ secrets.HOUDINI_SECRET_KEY }} - run: echo "HOUDINI_SECRETS=${{ env.HOUDINI_CLIENT_ID != '' && env.HOUDINI_SECRET_KEY != '' }}" >> $GITHUB_OUTPUT - - name: Skip Next Jobs - if: steps.check.outputs.HOUDINI_SECRETS != 'true' - run: echo "HOUDINI_CLIENT_ID and HOUDINI_SECRET_KEY GitHub Action Secrets needs to be set to install Houdini builds" - # Explicitly error on the ASWF repo, we expect this secret to always exist - - name: Error ASWF - if: steps.check.outputs.HOUDINI_SECRETS != 'true' && github.repository_owner == 'AcademySoftwareFoundation' - run: exit 1 - - # download the latest production version of Houdini X, strip out headers, - # libraries and binaries required for building OpenVDB and put it into - # the GitHub Actions cache - linux_houdini: - needs: [checksecret] - if: | - (needs.checksecret.outputs.HOUDINI_SECRETS == 'true') && - (github.event_name != 'workflow_dispatch' || - github.event.inputs.type == 'all' || - github.event.inputs.type == 'houdini') - runs-on: ${{ (github.repository_owner == 'AcademySoftwareFoundation' && 'ubuntu-22.04-8c-32g-300h') || 'ubuntu-latest' }} - name: linux-houdini:${{ matrix.config.hou_hash }} - env: - CXX: clang++ - HOUDINI_CLIENT_ID: ${{ secrets.HOUDINI_CLIENT_ID }} - HOUDINI_SECRET_KEY: ${{ secrets.HOUDINI_SECRET_KEY }} - strategy: - matrix: - config: - - { houdini_version: '21.0', platform: 'linux_x86_64_gcc11.2', hou_hash: '21_0' } - - { houdini_version: '20.5', platform: 'linux_x86_64_gcc11.2', hou_hash: '20_5' } - fail-fast: false - container: - image: aswf/ci-base:2024 - steps: - - uses: actions/checkout@v3 - - name: timestamp - id: timestamp - run: echo "timestamp=$(date -u +'%Y-%m-%dT%H:%M:%SZ')" >> $GITHUB_OUTPUT - - name: download_houdini - run: ./ci/download_houdini.sh ${{ matrix.config.houdini_version }} ${{ matrix.config.platform }} --prod - - name: install_houdini - run: | - mkdir $HOME/houdini_install - cp hou/hou.tar.gz $HOME/houdini_install/hou.tar.gz - cd $HOME/houdini_install && tar -xzf hou.tar.gz && cd - - - name: write_houdini_cache - uses: actions/cache/save@v3 - with: - path: hou - key: vdb-v5-houdini${{ matrix.config.hou_hash }}-${{ steps.timestamp.outputs.timestamp }} - - macos_houdini: - needs: [checksecret] - if: | - (needs.checksecret.outputs.HOUDINI_SECRETS == 'true') && - (github.event_name != 'workflow_dispatch' || - github.event.inputs.type == 'all' || - github.event.inputs.type == 'houdini') - # Note that macos-14 (current macos-latest) switches to M1. We could instead test - # the arm build here instead of the x86 one. - runs-on: macos-latest - name: macos-houdini - env: - HOUDINI_CLIENT_ID: ${{ secrets.HOUDINI_CLIENT_ID }} - HOUDINI_SECRET_KEY: ${{ secrets.HOUDINI_SECRET_KEY }} - steps: - - uses: actions/checkout@v3 - - name: timestamp - id: timestamp - run: echo "timestamp=$(date -u +'%Y-%m-%dT%H:%M:%SZ')" >> $GITHUB_OUTPUT - - name: download_houdini - run: ./ci/download_houdini.sh 21.0 macosx_arm64_clang15.0_14 --prod - - name: install_houdini - run: | - mkdir $HOME/houdini_install - cp hou/hou.tar.gz $HOME/houdini_install/hou.tar.gz - cd $HOME/houdini_install && tar -xzf hou.tar.gz && cd - - - name: write_houdini_cache - uses: actions/cache/save@v3 - with: - path: hou - key: vdb-v5-houdini-macos-${{ steps.timestamp.outputs.timestamp }} - ############################################################################# ########################### Core Library Extras ############################# ############################################################################# - # Extra configuration tests for the OpenVDB Core library. These test a - # variety of options with newer compilers. - linux-extra: - if: | - github.event_name != 'workflow_dispatch' || - github.event.inputs.type == 'all' || - github.event.inputs.type == 'extra' - runs-on: ${{ (github.repository_owner == 'AcademySoftwareFoundation' && 'ubuntu-22.04-8c-32g-300h') || 'ubuntu-latest' }} - name: linux-extra:${{ matrix.config.name }} - container: - image: aswf/ci-openvdb:${{ matrix.config.image }} - env: - CXX: clang++ - strategy: - matrix: - config: - - { name: 'all', image: '2026', build: 'Release', components: 'core,python,bin,view,render,test', cmake: '-DUSE_BLOSC=ON -DUSE_ZLIB=ON -DUSE_EXR=ON -DUSE_PNG=ON' } - - { name: 'lite', image: '2026', build: 'Release', components: 'core,python,bin,view,render,test', cmake: '-DUSE_BLOSC=OFF -DUSE_ZLIB=OFF -DUSE_EXR=OFF -DUSE_PNG=OFF -DOPENVDB_USE_DELAYED_LOADING=OFF' } - - { name: 'half', image: '2026', build: 'Release', components: 'core,python,bin,view,render,test', cmake: '-DUSE_BLOSC=OFF -DUSE_IMATH_HALF=ON' } - - { name: 'sse', image: '2026', build: 'Release', components: 'core,python,bin,view,render,test', cmake: '-DOPENVDB_SIMD=SSE42' } - - { name: 'avx', image: '2026', build: 'Release', components: 'core,python,bin,view,render,test', cmake: '-DOPENVDB_SIMD=AVX' } - - { name: 'pygrid', image: '2026', build: 'Release', components: 'core,python,bin,view,render,test', cmake: '-DOPENVDB_PYTHON_WRAP_ALL_GRID_TYPES=ON' } - - { name: 'asan', image: '2026', build: 'asan', components: 'core,test', cmake: '-DDISABLE_DEPENDENCY_VERSION_CHECKS=ON -DNANOVDB_USE_OPENVDB=ON -DOPENVDB_AX_STATIC=OFF -DOPENVDB_CORE_STATIC=OFF -DUSE_BLOSC=OFF' } # We never called blosc_destroy(), so disable blosc to silence these errors - - { name: 'ubsan', image: '2026', build: 'ubsan', components: 'core,test', cmake: '-DDISABLE_DEPENDENCY_VERSION_CHECKS=ON -DCMAKE_CXX_FLAGS="-Wno-deprecated-declarations" ' } - - { name: 'c++20', image: '2026', build: 'Release', components: 'core,test', cmake: '-DCMAKE_CXX_STANDARD=20' } - - { name: 'conf', image: '2026', build: 'Release', components: 'core,python,bin,view,render,test', cmake: '-DCMAKE_FIND_PACKAGE_PREFER_CONFIG=ON' } - fail-fast: false - steps: - - uses: actions/checkout@v3 - - name: nanobind - run: ./ci/install_nanobind.sh 2.5.0 - # 2026 images are broken with gtest/glfw/exr installs - - name: deps - if: contains(matrix.config.image, '2026') - run: | - ./ci/install_gtest.sh latest - ./ci/install_glfw.sh latest - ./ci/install_imath.sh v3.2.2 - ./ci/install_exr.sh v3.2.2 - - name: build - run: > - ./ci/build.sh -v - --build-type=${{ matrix.config.build }} - --components="${{ matrix.config.components }}" - --cargs=\"-DOPENVDB_CXX_STRICT=ON ${{ matrix.config.cmake }}\" - - name: test - run: cd build && ctest -V - # Test latest dependencies, latest compilers and options latest: if: | @@ -223,65 +76,6 @@ jobs: - name: test run: cd build && ctest -V - windows: - # Windows CI. Tests static and dynamic builds with MT and MD respectively. - if: | - github.event_name != 'workflow_dispatch' || - github.event.inputs.type == 'all' || - github.event.inputs.type == 'win' - runs-on: ${{ (github.repository_owner == 'AcademySoftwareFoundation' && 'windows-2022-8c-32g-300h') || 'windows-latest' }} - name: windows-vc:${{ matrix.config.vc }}-type:${{ matrix.config.build }} - env: - VCPKG_DEFAULT_TRIPLET: ${{ matrix.config.vc }} - strategy: - matrix: - config: - # static build of blosc from vcpkg does not build internal sources. - # USE_STATIC_DEPENDENCIES is required for IlmBase/OpenEXR defines and - # Boost as both shared and static libs are installed. - # USE_EXPLICIT_INSTANTIATION is disabled for debug static libraries - # due to disk space constraints - - { vc: 'x64-windows-static', components: 'core,bin,view,render,test', build: 'Release', cmake: '-A x64 -G \"Visual Studio 17 2022\" -DOPENVDB_CORE_SHARED=OFF -DUSE_STATIC_DEPENDENCIES=ON -DBLOSC_USE_EXTERNAL_SOURCES=ON' } - - { vc: 'x64-windows', components: 'core,bin,view,render,python,test', build: 'Release', cmake: '-A x64 -G \"Visual Studio 17 2022\" -DOPENVDB_CORE_STATIC=OFF' } - - { vc: 'x64-windows', components: 'core,bin,view,render,python,test', build: 'Debug', cmake: '-A x64 -G \"Visual Studio 17 2022\" -DOPENVDB_CORE_STATIC=OFF' } - fail-fast: false - steps: - - uses: actions/checkout@v3 - - name: path - shell: pwsh - run: | - # note: system path must be modified in a previous step to it's use - echo "$Env:VCPKG_INSTALLATION_ROOT\installed\${{ matrix.config.vc }}\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append - echo "${{github.workspace}}\build\openvdb\openvdb\${{ matrix.config.build }}" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append - - name: install - shell: powershell - run: .\ci\install_windows.ps1 - - name: install_numpy - if: matrix.config.vc == 'x64-windows' - shell: powershell - run: .\ci\install_windows_numpy.ps1 - - name: build - run: > - ./ci/build.sh -v - --config=${{ matrix.config.build }} - --components=${{ matrix.config.components }} - --cargs=\' - ${{ matrix.config.cmake }} - -DMSVC_COMPRESS_PDB=ON - -DUSE_EXR=ON - -DUSE_PNG=ON - -DVCPKG_TARGET_TRIPLET=${VCPKG_DEFAULT_TRIPLET} - -DCMAKE_TOOLCHAIN_FILE=\"${VCPKG_INSTALLATION_ROOT}\\scripts\\buildsystems\\vcpkg.cmake\" - \' - - name: size - # Print the build directy size (monitor if we're hitting runner limits) - run: du -h build - - name: test - # Always run tests on weekly builds but skip Debug on commits as they take a while. - # https://github.community/t/distinct-job-for-each-schedule/17811/2 - if: contains(github.event.schedule, '0 7 * * 1') || matrix.config.build == 'Release' - run: cd build && ctest -V -C ${{ matrix.config.build }} - ############################################################################# ############################ AX Library Extras ############################## ############################################################################# @@ -342,164 +136,6 @@ jobs: - name: test_doxygen_examples run: ./ci/extract_test_examples.sh - macos-ax: - if: | - github.event_name != 'workflow_dispatch' || - github.event.inputs.type == 'all' || - github.event.inputs.type == 'ax' - runs-on: ${{ matrix.config.runner }} - name: macos-cxx:${{ matrix.config.cxx }}-llvm:${{ matrix.config.llvm }}-${{ matrix.config.build }} - env: - CXX: ${{ matrix.config.cxx }} - strategy: - matrix: - config: - - { runner: 'macos-latest', cxx: 'clang++', build: 'Release', llvm: '20' } - fail-fast: false - steps: - - uses: actions/checkout@v3 - - name: install_deps - run: | - ./ci/install_macos.sh ${{ matrix.config.llvm }} - ./ci/install_tbb_macos.sh - - name: build - run: > - ./ci/build.sh -v - --build-type=${{ matrix.config.build }} - --components="core,python,bin,axcore,axbin,axtest" - --cargs=\" - -DOPENVDB_AX_TEST_CMD_DOWNLOADS=ON - -DUSE_EXPLICIT_INSTANTIATION=OFF - -DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/install - -DLLVM_DIR=/opt/homebrew/opt/llvm@${{ matrix.config.llvm }}/lib/cmake/llvm - \" - - name: test - run: cd build && ctest -V - - name: test_doxygen_examples - run: ./ci/extract_test_examples.sh - - windows-ax: - if: | - github.event_name != 'workflow_dispatch' || - github.event.inputs.type == 'all' || - github.event.inputs.type == 'ax' - runs-on: ${{ (github.repository_owner == 'AcademySoftwareFoundation' && 'windows-2022-8c-32g-300h') || 'windows-latest' }} - name: ${{ matrix.config.vc }}-${{ matrix.config.crt }}-${{ matrix.config.build }}-llvm${{ matrix.config.llvm }} - env: - VCPKG_DEFAULT_TRIPLET: ${{ matrix.config.vc }} - # Export this with '' avoid bash treating \ as escape - VDB_INSTALL_PREFIX: '${{ github.workspace }}\\install' - strategy: - matrix: - config: - # static build of blosc from vcpkg does not build internal sources. - # USE_STATIC_DEPENDENCIES is required for IlmBase/OpenEXR defines and - # Boost as both shared and static libs are installed. - # @todo We don't currently run the axtests with shared builds of ax - # due to symbol issues using LLVM as a static lib (which is the only - # option on Windows). - # @note currently only test static builds with MT as building LLVM as - # a shared lib on windows is a bit dicey - - { vc: 'x64-windows-static', llvm: '18.1.0', crt: 'MultiThreaded', components: 'core,axcore,axbin,axtest', build: 'Release', cmake: '-DOPENVDB_CORE_SHARED=OFF -DOPENVDB_AX_SHARED=OFF -DUSE_STATIC_DEPENDENCIES=ON -DBLOSC_USE_EXTERNAL_SOURCES=ON' } - - { vc: 'x64-windows-static', llvm: '18.1.0', crt: 'MultiThreadedDebug', components: 'core,axcore,axbin,axtest', build: 'Debug', cmake: '-DOPENVDB_CORE_SHARED=OFF -DOPENVDB_AX_SHARED=OFF -DUSE_STATIC_DEPENDENCIES=ON -DBLOSC_USE_EXTERNAL_SOURCES=ON' } - - { vc: 'x64-windows', llvm: '18.1.0', crt: 'MultiThreadedDLL', components: 'core,axcore,axbin', build: 'Release', cmake: '-DOPENVDB_CORE_STATIC=OFF -DOPENVDB_AX_STATIC=OFF' } - - { vc: 'x64-windows-static', llvm: '15.0.0', crt: 'MultiThreaded', components: 'core,axcore,axbin,axtest', build: 'Release', cmake: '-DOPENVDB_CORE_SHARED=OFF -DOPENVDB_AX_SHARED=OFF -DUSE_STATIC_DEPENDENCIES=ON -DBLOSC_USE_EXTERNAL_SOURCES=ON' } - fail-fast: false - steps: - - uses: actions/checkout@v3 - - name: llvm - run: ./ci/install_llvm_windows.sh ${{ matrix.config.llvm }} ${{ matrix.config.crt }} - - name: install - shell: powershell - run: | - vcpkg update - vcpkg install tbb gtest - - name: build - run: > - ./ci/build.sh -v - --config=${{ matrix.config.build }} - --components="${{ matrix.config.components }}" - --cargs=\' - -A x64 -G \"Visual Studio 17 2022\" - -DOPENVDB_USE_DELAYED_LOADING=OFF - -DUSE_BLOSC=OFF \ - -DUSE_ZLIB=OFF \ - -DVCPKG_TARGET_TRIPLET=${VCPKG_DEFAULT_TRIPLET} - -DCMAKE_TOOLCHAIN_FILE=\"${VCPKG_INSTALLATION_ROOT}\\scripts\\buildsystems\\vcpkg.cmake\" - -DMSVC_COMPRESS_PDB=ON - -DOPENVDB_AX_TEST_CMD_DOWNLOADS=OFF - -DUSE_EXPLICIT_INSTANTIATION=OFF - -DLLVM_DIR=\"${HOME}\\llvm_install\\lib\\cmake\\llvm\" - -DCMAKE_INSTALL_PREFIX=\"${VDB_INSTALL_PREFIX}\" - ${{ matrix.config.cmake }} - \' - - name: runtime_path - shell: pwsh - run: | - # note: system path must be modified in a previous step to it's use - echo "$Env:VCPKG_INSTALLATION_ROOT\installed\${{ matrix.config.vc }}\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append - echo "$Env:VDB_INSTALL_PREFIX\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append - - name: test - run: cd build && ctest -V -C ${{ matrix.config.build }} - - ############################################################################# - ################################## Blosc #################################### - ############################################################################# - - windows-nanovdb: - if: | - github.event_name != 'workflow_dispatch' || - github.event.inputs.type == 'all' || - github.event.inputs.type == 'win' - runs-on: ${{ (github.repository_owner == 'AcademySoftwareFoundation' && 'windows-2022-8c-32g-300h') || 'windows-latest' }} - env: - VCPKG_DEFAULT_TRIPLET: ${{ matrix.config.vc }} - visual_studio: "Visual Studio 17 2022" - cuda: "12.4.0" - strategy: - matrix: - config: - # static build of blosc from vcpkg does not build internal sources. - # USE_STATIC_DEPENDENCIES is required for IlmBase/OpenEXR defines and - # Boost as both shared and static libs are installed. - - { vc: 'x64-windows-static', build: 'Release', cmake: '-A x64 -G \"Visual Studio 17 2022\" -DOPENVDB_CORE_SHARED=OFF -DUSE_STATIC_DEPENDENCIES=ON -DBLOSC_USE_EXTERNAL_SOURCES=ON -DCMAKE_MSVC_RUNTIME_LIBRARY=MultiThreaded' } - - { vc: 'x64-windows-static', build: 'Debug', cmake: '-A x64 -G \"Visual Studio 17 2022\" -DOPENVDB_CORE_SHARED=OFF -DUSE_STATIC_DEPENDENCIES=ON -DBLOSC_USE_EXTERNAL_SOURCES=ON -DCMAKE_MSVC_RUNTIME_LIBRARY=MultiThreadedDebug' } - - { vc: 'x64-windows', build: 'Release', cmake: '-A x64 -G \"Visual Studio 17 2022\" -DOPENVDB_CORE_STATIC=OFF' } - - { vc: 'x64-windows', build: 'Debug', cmake: '-A x64 -G \"Visual Studio 17 2022\" -DOPENVDB_CORE_STATIC=OFF' } - fail-fast: false - steps: - - uses: actions/checkout@v3 - - name: path - shell: powershell - run: | - # note: system path must be modified in a previous step to it's use - echo "$Env:VCPKG_INSTALLATION_ROOT\installed\${{ matrix.config.vc }}\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append - echo "${{github.workspace}}\build\openvdb\openvdb\${{ matrix.config.build }}" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append - - name: install_cuda - shell: powershell - run: .\ci\install_windows_cuda.ps1 - - name: install - shell: powershell - run: .\ci\install_windows.ps1 - - name: build - shell: bash - run: > - ./ci/build.sh -v - --config=${{ matrix.config.build }} - --components=core,nano,nanotest,nanoexam,nanobench,nanotool - --cargs=\' - ${{ matrix.config.cmake }} - -DMSVC_COMPRESS_PDB=ON - -DUSE_EXPLICIT_INSTANTIATION=OFF - -DNANOVDB_USE_CUDA=ON - -DCMAKE_CUDA_ARCHITECTURES="80" - -DNANOVDB_USE_OPENVDB=ON - -DVCPKG_TARGET_TRIPLET=${VCPKG_DEFAULT_TRIPLET} - -DCMAKE_TOOLCHAIN_FILE=\"${VCPKG_INSTALLATION_ROOT}\\scripts\\buildsystems\\vcpkg.cmake\" - \' - - name: test - shell: bash - run: cd build && ctest -V -E ".*cuda.*|.*mgpu.*" ############################################################################# ################################## Blosc #################################### @@ -529,86 +165,3 @@ jobs: --components=\"core,test\" - name: test run: cd build && sudo ctest -V - - ############################################################################# - ################################## ABI ###################################### - ############################################################################# - - linux-abi-checker: - if: | - github.event_name == 'workflow_dispatch' && - (github.event.inputs.type == 'all' || - github.event.inputs.type == 'abi') - runs-on: ubuntu-22.04 - env: - # The 'abicheck' build type sets these, but older versions of the library - # may not have this build type. See OpenVDBCXX.cmake - CXXFLAGS: "-gdwarf-4 -g3 -ggdb -Og" - steps: - - name: Enable Node 16 - run: | - echo "ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true" >> $GITHUB_ENV - - uses: actions/checkout@v3 - with: - fetch-depth: 0 - fetch-tags: true - # Compute the latest major version - that is used as our baseline - # note: For CI forks, make sure you have your tags synced - - name: get_major_version - run: | - LATEST_VERSION_TAG=$(git tag --merged | sort --version-sort | tail -n1) - echo "Computed latest VDB tag: ${LATEST_VERSION_TAG}" - VDB_MAJOR_VERSION=$(echo ${LATEST_VERSION_TAG} | cut -f1 -d '.' | tr -d -c 0-9) - echo "Using major version: ${VDB_MAJOR_VERSION}" - echo "VDB_MAJOR_VERSION=${VDB_MAJOR_VERSION}" >> "$GITHUB_ENV" - - name: install_deps - run: sudo apt-get -q install -y libboost-iostreams-dev libtbb-dev libblosc-dev elfutils - - name: install_abi_checker - run: sudo apt-get -q install -y abi-dumper abi-compliance-checker - - name: build_new - run: > - ./ci/build.sh -v - --build-dir=build_new - --build-type=abicheck - --target=openvdb_shared - --components=\"core\" - --cargs=\'-DUSE_EXPLICIT_INSTANTIATION=OFF -DDISABLE_DEPENDENCY_VERSION_CHECKS=ON\' - - name: checkout_baseline - run: git checkout v${VDB_MAJOR_VERSION}.0.0 - - name: build_old - run: > - ./ci/build.sh -v - --build-dir=build_old - --build-type=abicheck - --target=openvdb_shared - --components=\"core\" - --cargs=\'-DUSE_EXPLICIT_INSTANTIATION=OFF -DDISABLE_DEPENDENCY_VERSION_CHECKS=ON\' - - name: abi_dump - run: | - abi-dumper build_new/openvdb/openvdb/libopenvdb.so -o ABI-NEW.dump -lver 1 - abi-dumper build_old/openvdb/openvdb/libopenvdb.so -o ABI-OLD.dump -lver 2 - # Replace the version namespace in the latest ABI dump with the baseline - # version we're comparing against. We should probably instead build the - # latest with the baseline version number but no CMake/defines allow us to - # do this. - - name: replace_symbols - run: sed -i -E 's/openvdb([^v]*)v[0-9]*_[0-9]/openvdb\1v'${VDB_MAJOR_VERSION}'_0/g' ABI-NEW.dump - - name: abi_check - # -strict treats warnings as errors - # -extended checks all member data - # we check everything _not_ in openvdb::**::internal namespace - run: > - abi-compliance-checker -l OPENVDB - -old ABI-OLD.dump - -new ABI-NEW.dump - -skip-internal-symbols "\d(openvdb.*internal)" - -skip-internal-types "(openvdb.*internal)::" - -strict - -extended - - name: upload_report - uses: actions/upload-artifact@v4 - if: always() - with: - name: abi_report - path: ./compat_reports/OPENVDB/2_to_1/compat_report.html - retention-days: 5 From 29852033d5eb3e4ffe25e1959d6fe9f510ea5c91 Mon Sep 17 00:00:00 2001 From: Nick Avramoussis <4256455+Idclip@users.noreply.github.com> Date: Sat, 8 Nov 2025 00:01:36 +1300 Subject: [PATCH 03/14] wip --- .github/workflows/build.yml | 210 +++++++++++++------------- .github/workflows/template-linux.yaml | 6 +- ci/build.sh | 3 +- 3 files changed, 110 insertions(+), 109 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 9dd5eacede..c9c6ff8351 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -56,42 +56,41 @@ jobs: strategy: matrix: config: - - { cxx: clang++, image: '2026', abi: '13', build: 'Release', components: 'core,python,bin,view,render,test,', cmake: '' } - - { cxx: g++, image: '2026', abi: '13', build: 'Release', components: 'core,python,bin,view,render,test,', cmake: '' } - - { cxx: clang++, image: '2026', abi: '13', build: 'Debug', components: 'core,python,bin,view,render,test,', cmake: '' } - - { cxx: clang++, image: '2025-clang19.1', abi: '12', build: 'Release', components: 'core,python,bin,view,render,test,', cmake: '' } - - { cxx: clang++, image: '2024-clang17.2', abi: '11', build: 'Release', components: 'core,python,bin,view,render,test,', cmake: '-DDISABLE_DEPENDENCY_VERSION_CHECKS=ON' } + - { name: 'rel', cxx: clang++, image: '2026', abi: '13', build: 'Release', components: 'core,python,bin,test,', cmake: '' } + - { name: 'dbg', cxx: clang++, image: '2026', abi: '13', build: 'Debug', components: 'core,python,bin,test,', cmake: '' } + - { name: 'gcc', cxx: g++, image: '2026', abi: '13', build: 'Release', components: 'core,python,bin,test,', cmake: '' } + - { name: '2025', cxx: clang++, image: '2025-clang19.1', abi: '12', build: 'Release', components: 'core,python,bin,test,', cmake: '' } + - { name: '2024', cxx: clang++, image: '2024-clang17.2', abi: '11', build: 'Release', components: 'core,python,bin,test,', cmake: '-DDISABLE_DEPENDENCY_VERSION_CHECKS=ON' } # Weekly - - { name: 'all', cxx: clang++, image: '2026', build: 'Release', components: 'core,python,bin,view,render,test', cmake: '-DUSE_BLOSC=ON -DUSE_ZLIB=ON -DUSE_EXR=ON -DUSE_PNG=ON' } - - { name: 'lite', cxx: clang++, image: '2026', build: 'Release', components: 'core,python,bin,view,render,test', cmake: '-DUSE_BLOSC=OFF -DUSE_ZLIB=OFF -DUSE_EXR=OFF -DUSE_PNG=OFF -DOPENVDB_USE_DELAYED_LOADING=OFF' } - - { name: 'half', cxx: clang++, image: '2026', build: 'Release', components: 'core,python,bin,view,render,test', cmake: '-DUSE_BLOSC=OFF -DUSE_IMATH_HALF=ON' } - - { name: 'sse', cxx: clang++, image: '2026', build: 'Release', components: 'core,python,bin,view,render,test', cmake: '-DOPENVDB_SIMD=SSE42' } - - { name: 'avx', cxx: clang++, image: '2026', build: 'Release', components: 'core,python,bin,view,render,test', cmake: '-DOPENVDB_SIMD=AVX' } - - { name: 'pygrid', cxx: clang++, image: '2026', build: 'Release', components: 'core,python,bin,view,render,test', cmake: '-DOPENVDB_PYTHON_WRAP_ALL_GRID_TYPES=ON' } - - { name: 'asan', cxx: clang++, image: '2026', build: 'asan', components: 'core,test', cmake: '-DDISABLE_DEPENDENCY_VERSION_CHECKS=ON -DNANOVDB_USE_OPENVDB=ON -DOPENVDB_AX_STATIC=OFF -DOPENVDB_CORE_STATIC=OFF -DUSE_BLOSC=OFF' } # We never called blosc_destroy(), so disable blosc to silence these errors - - { name: 'ubsan', cxx: clang++, image: '2026', build: 'ubsan', components: 'core,test', cmake: '-DDISABLE_DEPENDENCY_VERSION_CHECKS=ON -DCMAKE_CXX_FLAGS="-Wno-deprecated-declarations" ' } - - { name: 'c++20', cxx: clang++, image: '2026', build: 'Release', components: 'core,test', cmake: '-DCMAKE_CXX_STANDARD=20' } - - { name: 'conf', cxx: clang++, image: '2026', build: 'Release', components: 'core,python,bin,view,render,test', cmake: '-DCMAKE_FIND_PACKAGE_PREFER_CONFIG=ON' } + - { name: 'all', cxx: clang++, image: '2026', abi: '13', build: 'Release', components: 'core,python,bin,test', cmake: '-DUSE_BLOSC=ON -DUSE_ZLIB=ON -DUSE_EXR=ON -DUSE_PNG=ON' } + - { name: 'lite', cxx: clang++, image: '2026', abi: '13', build: 'Release', components: 'core,python,bin,test', cmake: '-DUSE_BLOSC=OFF -DUSE_ZLIB=OFF -DUSE_EXR=OFF -DUSE_PNG=OFF -DOPENVDB_USE_DELAYED_LOADING=OFF' } + - { name: 'half', cxx: clang++, image: '2026', abi: '13', build: 'Release', components: 'core,python,bin,test', cmake: '-DUSE_BLOSC=OFF -DUSE_IMATH_HALF=ON' } + - { name: 'simd', cxx: clang++, image: '2026', abi: '13', build: 'Release', components: 'core,python,bin,test', cmake: '-DOPENVDB_SIMD=SSE42 -DOPENVDB_SIMD=AVX' } + - { name: 'pygrid', cxx: clang++, image: '2026', abi: '13', build: 'Release', components: 'core,python,bin,test', cmake: '-DOPENVDB_PYTHON_WRAP_ALL_GRID_TYPES=ON' } + - { name: 'asan', cxx: clang++, image: '2026', abi: '13', build: 'asan', components: 'core,test', cmake: '-DDISABLE_DEPENDENCY_VERSION_CHECKS=ON -DNANOVDB_USE_OPENVDB=ON -DOPENVDB_AX_STATIC=OFF -DOPENVDB_CORE_STATIC=OFF -DUSE_BLOSC=OFF' } # We never called blosc_destroy(), so disable blosc to silence these errors + - { name: 'ubsan', cxx: clang++, image: '2026', abi: '13', build: 'ubsan', components: 'core,test', cmake: '-DDISABLE_DEPENDENCY_VERSION_CHECKS=ON -DCMAKE_CXX_FLAGS="-Wno-deprecated-declarations" ' } + - { name: 'c++20', cxx: clang++, image: '2026', abi: '13', build: 'Release', components: 'core,test', cmake: '-DCMAKE_CXX_STANDARD=20' } + - { name: 'conf', cxx: clang++, image: '2026', abi: '13', build: 'Release', components: 'core,python,bin,test', cmake: '-DCMAKE_FIND_PACKAGE_PREFER_CONFIG=ON' } # AX - - { cxx: clang++, image: '2026', abi: '13', build: 'Release', components: 'core,python,bin,view,render,test,axcore,axbin,axtest', cmake: '' } - - { cxx: g++, image: '2026', abi: '13', build: 'Release', components: 'core,python,bin,view,render,test,axcore,axbin,axtest', cmake: '' } - - { cxx: clang++, image: '2026', abi: '13', build: 'Debug', components: 'core,python,bin,view,render,test,axcore,axbin,axtest', cmake: '' } - - { cxx: clang++, image: '2025-clang19.1', abi: '12', build: 'Release', components: 'core,python,bin,view,render,test,axcore,axbin,axtest', cmake: '' } - - { cxx: clang++, image: '2024-clang17.2', abi: '11', build: 'Release', components: 'core,python,bin,view,render,test,axcore,axbin,axtest', cmake: '-DDISABLE_DEPENDENCY_VERSION_CHECKS=ON' } + - { name: 'ax-clang', cxx: clang++, image: '2026', abi: '13', build: 'Release', components: 'core,python,bin,test,axcore,axbin,axtest', cmake: '' } + - { name: 'ax-dbg', cxx: clang++, image: '2026', abi: '13', build: 'Debug', components: 'core,python,bin,test,axcore,axbin,axtest', cmake: '' } + - { name: 'ax-gcc', cxx: g++, image: '2026', abi: '13', build: 'Release', components: 'core,python,bin,test,axcore,axbin,axtest', cmake: '' } + - { name: 'ax-19', cxx: clang++, image: '2025-clang19.1', abi: '12', build: 'Release', components: 'core,python,bin,test,axcore,axbin,axtest', cmake: '' } + - { name: 'ax-17', cxx: clang++, image: '2024-clang17.2', abi: '11', build: 'Release', components: 'core,python,bin,test,axcore,axbin,axtest', cmake: '-DDISABLE_DEPENDENCY_VERSION_CHECKS=ON' } # For AX builds, to test LLVM 15/16 - - { cxx: clang++, image: '2024-clang16.2', abi: '13', build: 'Release', components: 'core,python,axcore,axbin,axtest', cmake: '-DDISABLE_DEPENDENCY_VERSION_CHECKS=ON' } - - { cxx: clang++, image: '2023-clang15', abi: '13', build: 'Release', components: 'core,python,axcore,axbin,axtest', cmake: '-DDISABLE_DEPENDENCY_VERSION_CHECKS=ON' } + - { name: 'ax-16', cxx: clang++, image: '2024-clang16.2', abi: '13', build: 'Release', components: 'core,python,axcore,axbin,axtest', cmake: '-DDISABLE_DEPENDENCY_VERSION_CHECKS=ON' } + - { name: 'ax-15', cxx: clang++, image: '2023-clang15', abi: '13', build: 'Release', components: 'core,python,axcore,axbin,axtest', cmake: '-DDISABLE_DEPENDENCY_VERSION_CHECKS=ON' } # NanoVDB # NOTE: CMAKE_POSITION_INDEPENDENT_CODE set to fix default behaviour change in clang 14 # https://github.com/AcademySoftwareFoundation/aswf-docker/issues/228 - - { cxx: g++, image: '2024-clang17.2', build: 'Release', components: 'core,nano,nanotest,nanoexam,nanobench,nanotool', cmake: '-DCMAKE_POSITION_INDEPENDENT_CODE=ON -DUSE_BLOSC=OFF -DUSE_EXPLICIT_INSTANTIATION=OFF' } - - { cxx: g++, image: '2024-clang17.2', build: 'Debug', components: 'core,nano,nanotest,nanoexam,nanobench,nanotool', cmake: '-DCMAKE_POSITION_INDEPENDENT_CODE=ON -DUSE_BLOSC=OFF -DUSE_EXPLICIT_INSTANTIATION=OFF' } - - { cxx: clang++, image: '2024-clang17.2', build: 'Release', components: 'core,nano,nanotest,nanoexam,nanobench,nanotool', cmake: '-DCMAKE_POSITION_INDEPENDENT_CODE=ON -DUSE_BLOSC=OFF -DUSE_EXPLICIT_INSTANTIATION=OFF' } - - { cxx: clang++, image: '2024-clang17.2', build: 'Debug', components: 'core,nano,nanotest,nanoexam,nanobench,nanotool', cmake: '-DCMAKE_POSITION_INDEPENDENT_CODE=ON -DUSE_BLOSC=OFF -DUSE_EXPLICIT_INSTANTIATION=OFF' } - - { cxx: clang++, image: '2024-clang17.2', build: 'Release', components: 'nanotest', cmake: '-DNANOVDB_USE_OPENVDB=OFF -DNANOVDB_USE_CUDA=OFF' } + - { name: 'nano-rel', cxx: clang++, image: '2024-clang17.2', abi: '13', build: 'Release', components: 'core,nano,nanotest,nanoexam,nanobench,nanotool', cmake: '-DCMAKE_POSITION_INDEPENDENT_CODE=ON -DUSE_BLOSC=OFF -DUSE_EXPLICIT_INSTANTIATION=OFF' } + - { name: 'nano-dbg', cxx: clang++, image: '2024-clang17.2', abi: '13', build: 'Debug', components: 'core,nano,nanotest,nanoexam,nanobench,nanotool', cmake: '-DCMAKE_POSITION_INDEPENDENT_CODE=ON -DUSE_BLOSC=OFF -DUSE_EXPLICIT_INSTANTIATION=OFF' } + - { name: 'nano-gcc', cxx: g++, image: '2024-clang17.2', abi: '13', build: 'Release', components: 'core,nano,nanotest,nanoexam,nanobench,nanotool', cmake: '-DCMAKE_POSITION_INDEPENDENT_CODE=ON -DUSE_BLOSC=OFF -DUSE_EXPLICIT_INSTANTIATION=OFF' } + - { name: 'nano-lite',cxx: clang++, image: '2024-clang17.2', abi: '13', build: 'Release', components: 'nanotest', cmake: '-DNANOVDB_USE_OPENVDB=OFF -DNANOVDB_USE_CUDA=OFF' } fail-fast: false uses: ./.github/workflows/template-linux.yaml with: + name: ${{ matrix.config.name }} cxx: ${{ matrix.config.cxx }} image: ${{ matrix.config.image }} abi: ${{ matrix.config.abi }} @@ -99,84 +98,83 @@ jobs: components: ${{ matrix.config.components }} cmake: ${{ matrix.config.cmake }} - macos-vfx: - if: | - github.event_name != 'workflow_dispatch' || - github.event.inputs.type == 'all' || - github.event.inputs.type == 'mac' - strategy: - matrix: - config: - - { image: 'macos-14', build: 'Release', components: 'core,python,bin,view,render,test', llvm: '', cmake: '' } - - { image: 'macos-15', build: 'Release', components: 'core,python,bin,view,render,test', llvm: '', cmake: '' } - # core,python,axcore,axbin,axtest - - { image: 'macos-15', build: 'Release', components: 'core,python,axcore,axbin,axtest', llvm: '21' } - - { image: 'macos-14', build: 'Release', components: 'core,python,axcore,axbin,axtest', llvm: '21' } - - { image: 'macos-14', build: 'Release', components: 'core,python,axcore,axbin,axtest', llvm: '20' } - - { image: 'macos-14', build: 'Release', components: 'core,python,axcore,axbin,axtest', llvm: '19' } - - { image: 'macos-14', build: 'Release', components: 'core,python,axcore,axbin,axtest', llvm: '18' } - - { image: 'macos-14', build: 'Release', components: 'core,python,axcore,axbin,axtest', llvm: '17' } - - { image: 'macos-14', build: 'Release', components: 'core,python,axcore,axbin,axtest', llvm: '16' } - - { image: 'macos-latest', build: 'Release', components: 'core,python,axcore,axbin,axtest', llvm: '20', cmake: '-DUSE_EXPLICIT_INSTANTIATION=OFF ' } - # Nano - - { image: 'macos-14', build: 'Release', components: 'core,nano,nanotest,nanoexam,nanobench,nanotool', cmake: '-DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/install -DUSE_EXPLICIT_INSTANTIATION=OFF -DNANOVDB_USE_CUDA=OFF -DNANOVDB_USE_OPENVDB=ON' } - - { image: 'macos-14', build: 'Debug', components: 'core,nano,nanotest,nanoexam,nanobench,nanotool', cmake: '-DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/install -DUSE_EXPLICIT_INSTANTIATION=OFF -DNANOVDB_USE_CUDA=OFF -DNANOVDB_USE_OPENVDB=ON' } - fail-fast: false - uses: ./.github/workflows/template-macos.yaml - with: - image: ${{ matrix.config.image }} - build: ${{ matrix.config.build }} - components: ${{ matrix.config.components }} - cmake: ${{ matrix.config.cmake }} - llvm: ${{ matrix.config.llvm }} + # macos-vfx: + # if: | + # github.event_name != 'workflow_dispatch' || + # github.event.inputs.type == 'all' || + # github.event.inputs.type == 'mac' + # strategy: + # matrix: + # config: + # - { image: 'macos-14', build: 'Release', components: 'core,python,bin,test', llvm: '', cmake: '' } + # - { image: 'macos-15', build: 'Release', components: 'core,python,bin,test', llvm: '', cmake: '' } + # # core,python,axcore,axbin,axtest + # - { image: 'macos-15', build: 'Release', components: 'core,python,axcore,axbin,axtest', llvm: '21' } + # - { image: 'macos-14', build: 'Release', components: 'core,python,axcore,axbin,axtest', llvm: '21' } + # - { image: 'macos-14', build: 'Release', components: 'core,python,axcore,axbin,axtest', llvm: '20' } + # - { image: 'macos-14', build: 'Release', components: 'core,python,axcore,axbin,axtest', llvm: '19' } + # - { image: 'macos-14', build: 'Release', components: 'core,python,axcore,axbin,axtest', llvm: '18' } + # - { image: 'macos-14', build: 'Release', components: 'core,python,axcore,axbin,axtest', llvm: '17' } + # - { image: 'macos-14', build: 'Release', components: 'core,python,axcore,axbin,axtest', llvm: '16' } + # - { image: 'macos-latest', build: 'Release', components: 'core,python,axcore,axbin,axtest', llvm: '20', cmake: '-DUSE_EXPLICIT_INSTANTIATION=OFF ' } + # # Nano + # - { image: 'macos-14', build: 'Release', components: 'core,nano,nanotest,nanoexam,nanobench,nanotool', cmake: '-DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/install -DUSE_EXPLICIT_INSTANTIATION=OFF -DNANOVDB_USE_CUDA=OFF -DNANOVDB_USE_OPENVDB=ON' } + # - { image: 'macos-14', build: 'Debug', components: 'core,nano,nanotest,nanoexam,nanobench,nanotool', cmake: '-DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/install -DUSE_EXPLICIT_INSTANTIATION=OFF -DNANOVDB_USE_CUDA=OFF -DNANOVDB_USE_OPENVDB=ON' } + # fail-fast: false + # uses: ./.github/workflows/template-macos.yaml + # with: + # image: ${{ matrix.config.image }} + # build: ${{ matrix.config.build }} + # components: ${{ matrix.config.components }} + # cmake: ${{ matrix.config.cmake }} + # llvm: ${{ matrix.config.llvm }} - windows: - # Windows CI. Tests a dynamic build with MD. - if: | - github.event_name != 'workflow_dispatch' || - github.event.inputs.type == 'all' || - github.event.inputs.type == 'win' - strategy: - matrix: - config: - # static build of blosc from vcpkg does not build internal sources. - # USE_STATIC_DEPENDENCIES is required for IlmBase/OpenEXR defines and - # Boost as both shared and static libs are installed. - # USE_EXPLICIT_INSTANTIATION is disabled for debug static libraries - # due to disk space constraints - - { vc: 'x64-windows-static', build: 'Release', components: 'core,bin,view,render,test', cmake: '-DOPENVDB_CORE_SHARED=OFF -DUSE_STATIC_DEPENDENCIES=ON -DBLOSC_USE_EXTERNAL_SOURCES=ON' } - - { vc: 'x64-windows', build: 'Release', components: 'core,bin,view,render,python,test', cmake: '-DOPENVDB_CORE_STATIC=OFF' } - - { vc: 'x64-windows', build: 'Debug', components: 'core,bin,view,render,python,test', cmake: '-DOPENVDB_CORE_STATIC=OFF' } - # AX - # static build of blosc from vcpkg does not build internal sources. - # USE_STATIC_DEPENDENCIES is required for IlmBase/OpenEXR defines and - # Boost as both shared and static libs are installed. - # @todo We don't currently run the axtests with shared builds of ax - # due to symbol issues using LLVM as a static lib (which is the only - # option on Windows). - # @note currently only test static builds with MT as building LLVM as - # a shared lib on windows is a bit dicey - - { vc: 'x64-windows-static', llvm: '18.1.0', crt: 'MultiThreaded', components: 'core,axcore,axbin,axtest', build: 'Release', cmake: '-DOPENVDB_AX_TEST_CMD_DOWNLOADS=OFF -DUSE_EXPLICIT_INSTANTIATION=OFF -DOPENVDB_CORE_SHARED=OFF -DOPENVDB_AX_SHARED=OFF -DUSE_STATIC_DEPENDENCIES=ON -DBLOSC_USE_EXTERNAL_SOURCES=ON' } - - { vc: 'x64-windows-static', llvm: '18.1.0', crt: 'MultiThreadedDebug', components: 'core,axcore,axbin,axtest', build: 'Debug', cmake: '-DOPENVDB_AX_TEST_CMD_DOWNLOADS=OFF -DUSE_EXPLICIT_INSTANTIATION=OFF -DOPENVDB_CORE_SHARED=OFF -DOPENVDB_AX_SHARED=OFF -DUSE_STATIC_DEPENDENCIES=ON -DBLOSC_USE_EXTERNAL_SOURCES=ON' } - - { vc: 'x64-windows', llvm: '18.1.0', crt: 'MultiThreadedDLL', components: 'core,axcore,axbin', build: 'Release', cmake: '-DOPENVDB_AX_TEST_CMD_DOWNLOADS=OFF -DUSE_EXPLICIT_INSTANTIATION=OFF -DOPENVDB_CORE_STATIC=OFF -DOPENVDB_AX_STATIC=OFF' } - - { vc: 'x64-windows-static', llvm: '15.0.0', crt: 'MultiThreaded', components: 'core,axcore,axbin,axtest', build: 'Release', cmake: '-DOPENVDB_AX_TEST_CMD_DOWNLOADS=OFF -DUSE_EXPLICIT_INSTANTIATION=OFF -DOPENVDB_CORE_SHARED=OFF -DOPENVDB_AX_SHARED=OFF -DUSE_STATIC_DEPENDENCIES=ON -DBLOSC_USE_EXTERNAL_SOURCES=ON' } - # Nano - - { build: 'Release', components: 'core,nano,nanotest,nanoexam,nanobench,nanotool', cmake: '-DDUSE_EXPLICIT_INSTANTIATION=OFF' } - # static build of blosc from vcpkg does not build internal sources. - # USE_STATIC_DEPENDENCIES is required for IlmBase/OpenEXR defines and - # Boost as both shared and static libs are installed. - - { vc: 'x64-windows-static', build: 'Release', cmake: '-DOPENVDB_CORE_SHARED=OFF -DUSE_STATIC_DEPENDENCIES=ON -DBLOSC_USE_EXTERNAL_SOURCES=ON -DCMAKE_MSVC_RUNTIME_LIBRARY=MultiThreaded' } - - { vc: 'x64-windows-static', build: 'Debug', cmake: '-DOPENVDB_CORE_SHARED=OFF -DUSE_STATIC_DEPENDENCIES=ON -DBLOSC_USE_EXTERNAL_SOURCES=ON -DCMAKE_MSVC_RUNTIME_LIBRARY=MultiThreadedDebug' } - - { vc: 'x64-windows', build: 'Release', cmake: '-DOPENVDB_CORE_STATIC=OFF' } - - { vc: 'x64-windows', build: 'Debug', cmake: '-DOPENVDB_CORE_STATIC=OFF' } - fail-fast: false - uses: ./.github/workflows/template-windows.yaml - with: - vc: ${{ matrix.config.vc }} - image: ${{ matrix.config.image }} - build: ${{ matrix.config.build }} - components: ${{ matrix.config.components }} - cmake: ${{ matrix.config.cmake }} - llvm: ${{ matrix.config.llvm }} - crt: ${{ matrix.config.crt }} + # windows: + # # Windows CI. Tests a dynamic build with MD. + # if: | + # github.event_name != 'workflow_dispatch' || + # github.event.inputs.type == 'all' || + # github.event.inputs.type == 'win' + # strategy: + # matrix: + # config: + # # static build of blosc from vcpkg does not build internal sources. + # # USE_STATIC_DEPENDENCIES is required for IlmBase/OpenEXR defines and + # # Boost as both shared and static libs are installed. + # # USE_EXPLICIT_INSTANTIATION is disabled for debug static libraries + # # due to disk space constraints + # - { vc: 'x64-windows-static', llvm: '', crt: '', build: 'Release', components: 'core,bin,test', cmake: '-DOPENVDB_CORE_SHARED=OFF -DUSE_STATIC_DEPENDENCIES=ON -DBLOSC_USE_EXTERNAL_SOURCES=ON' } + # - { vc: 'x64-windows', llvm: '', crt: '', build: 'Release', components: 'core,bin,python,test', cmake: '-DOPENVDB_CORE_STATIC=OFF' } + # - { vc: 'x64-windows', llvm: '', crt: '', build: 'Debug', components: 'core,bin,python,test', cmake: '-DOPENVDB_CORE_STATIC=OFF' } + # # AX + # # static build of blosc from vcpkg does not build internal sources. + # # USE_STATIC_DEPENDENCIES is required for IlmBase/OpenEXR defines and + # # Boost as both shared and static libs are installed. + # # @todo We don't currently run the axtests with shared builds of ax + # # due to symbol issues using LLVM as a static lib (which is the only + # # option on Windows). + # # @note currently only test static builds with MT as building LLVM as + # # a shared lib on windows is a bit dicey + # - { vc: 'x64-windows-static', llvm: '18.1.0', crt: 'MultiThreaded', components: 'core,axcore,axbin,axtest', build: 'Release', cmake: '-DOPENVDB_AX_TEST_CMD_DOWNLOADS=OFF -DUSE_EXPLICIT_INSTANTIATION=OFF -DOPENVDB_CORE_SHARED=OFF -DOPENVDB_AX_SHARED=OFF -DUSE_STATIC_DEPENDENCIES=ON -DBLOSC_USE_EXTERNAL_SOURCES=ON' } + # - { vc: 'x64-windows-static', llvm: '18.1.0', crt: 'MultiThreadedDebug', components: 'core,axcore,axbin,axtest', build: 'Debug', cmake: '-DOPENVDB_AX_TEST_CMD_DOWNLOADS=OFF -DUSE_EXPLICIT_INSTANTIATION=OFF -DOPENVDB_CORE_SHARED=OFF -DOPENVDB_AX_SHARED=OFF -DUSE_STATIC_DEPENDENCIES=ON -DBLOSC_USE_EXTERNAL_SOURCES=ON' } + # - { vc: 'x64-windows', llvm: '18.1.0', crt: 'MultiThreadedDLL', components: 'core,axcore,axbin', build: 'Release', cmake: '-DOPENVDB_AX_TEST_CMD_DOWNLOADS=OFF -DUSE_EXPLICIT_INSTANTIATION=OFF -DOPENVDB_CORE_STATIC=OFF -DOPENVDB_AX_STATIC=OFF' } + # - { vc: 'x64-windows-static', llvm: '15.0.0', crt: 'MultiThreaded', components: 'core,axcore,axbin,axtest', build: 'Release', cmake: '-DOPENVDB_AX_TEST_CMD_DOWNLOADS=OFF -DUSE_EXPLICIT_INSTANTIATION=OFF -DOPENVDB_CORE_SHARED=OFF -DOPENVDB_AX_SHARED=OFF -DUSE_STATIC_DEPENDENCIES=ON -DBLOSC_USE_EXTERNAL_SOURCES=ON' } + # # Nano + # - { build: 'Release', llvm: '', crt: '', components: 'core,nano,nanotest,nanoexam,nanobench,nanotool', cmake: '-DDUSE_EXPLICIT_INSTANTIATION=OFF' } + # # static build of blosc from vcpkg does not build internal sources. + # # USE_STATIC_DEPENDENCIES is required for IlmBase/OpenEXR defines and + # # Boost as both shared and static libs are installed. + # - { vc: 'x64-windows-static', llvm: '', crt: '', build: 'Release', cmake: '-DOPENVDB_CORE_SHARED=OFF -DUSE_STATIC_DEPENDENCIES=ON -DBLOSC_USE_EXTERNAL_SOURCES=ON -DCMAKE_MSVC_RUNTIME_LIBRARY=MultiThreaded' } + # - { vc: 'x64-windows-static', llvm: '', crt: '', build: 'Debug', cmake: '-DOPENVDB_CORE_SHARED=OFF -DUSE_STATIC_DEPENDENCIES=ON -DBLOSC_USE_EXTERNAL_SOURCES=ON -DCMAKE_MSVC_RUNTIME_LIBRARY=MultiThreadedDebug' } + # - { vc: 'x64-windows', llvm: '', crt: '', build: 'Release', cmake: '-DOPENVDB_CORE_STATIC=OFF' } + # - { vc: 'x64-windows', llvm: '', crt: '', build: 'Debug', cmake: '-DOPENVDB_CORE_STATIC=OFF' } + # fail-fast: false + # uses: ./.github/workflows/template-windows.yaml + # with: + # vc: ${{ matrix.config.vc }} + # build: ${{ matrix.config.build }} + # components: ${{ matrix.config.components }} + # cmake: ${{ matrix.config.cmake }} + # llvm: ${{ matrix.config.llvm }} + # crt: ${{ matrix.config.crt }} diff --git a/.github/workflows/template-linux.yaml b/.github/workflows/template-linux.yaml index 8cb63f900a..8ddaa7d16b 100644 --- a/.github/workflows/template-linux.yaml +++ b/.github/workflows/template-linux.yaml @@ -3,6 +3,10 @@ name: OpenVDB Linux Build on: workflow_call: inputs: + name: + required: false + default: 'linux' + type: string cxx: required: false default: 'clang++' @@ -33,7 +37,7 @@ on: jobs: linux: runs-on: ${{ (github.repository_owner == 'AcademySoftwareFoundation' && 'ubuntu-22.04-8c-32g-300h') || 'ubuntu-latest' }} - name: linux:${{ inputs.image }}-abi:${{ inputs.abi }}-cxx:${{ inputs.cxx }}-type:${{ inputs.build }} + name: ${{ inputs.name }} container: image: aswf/ci-openvdb:${{ inputs.image }} env: diff --git a/ci/build.sh b/ci/build.sh index 8e778c6255..aa9dd6b0f4 100755 --- a/ci/build.sh +++ b/ci/build.sh @@ -56,8 +56,7 @@ declare -A COMPONENTS COMPONENTS['core']='OPENVDB_BUILD_CORE' COMPONENTS['python']='OPENVDB_BUILD_PYTHON_MODULE' COMPONENTS['test']='OPENVDB_BUILD_UNITTESTS' -# @todo split out vdb tool from this... -COMPONENTS['bin']='OPENVDB_BUILD_VDB_PRINT,OPENVDB_BUILD_VDB_LOD,OPENVDB_BUILD_VDB_TOOL,OPENVDB_BUILD_VDB_TOOL_UNITTESTS' +COMPONENTS['bin']='OPENVDB_BUILD_VDB_PRINT,OPENVDB_BUILD_VDB_LOD,OPENVDB_BUILD_VDB_VIEW,OPENVDB_BUILD_VDB_RENDER,OPENVDB_BUILD_VDB_TOOL,OPENVDB_BUILD_VDB_TOOL_UNITTESTS' COMPONENTS['view']='OPENVDB_BUILD_VDB_VIEW' COMPONENTS['render']='OPENVDB_BUILD_VDB_RENDER' COMPONENTS['hou']='OPENVDB_BUILD_HOUDINI_PLUGIN' From 82fe092001a03f4c065a1d34be58946226e807e0 Mon Sep 17 00:00:00 2001 From: Nick Avramoussis <4256455+Idclip@users.noreply.github.com> Date: Sat, 8 Nov 2025 00:05:25 +1300 Subject: [PATCH 04/14] wip --- .github/workflows/build.yml | 50 ++++++++++++++++++------------------- 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index c9c6ff8351..a8c35b59d8 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -56,37 +56,37 @@ jobs: strategy: matrix: config: - - { name: 'rel', cxx: clang++, image: '2026', abi: '13', build: 'Release', components: 'core,python,bin,test,', cmake: '' } - - { name: 'dbg', cxx: clang++, image: '2026', abi: '13', build: 'Debug', components: 'core,python,bin,test,', cmake: '' } - - { name: 'gcc', cxx: g++, image: '2026', abi: '13', build: 'Release', components: 'core,python,bin,test,', cmake: '' } - - { name: '2025', cxx: clang++, image: '2025-clang19.1', abi: '12', build: 'Release', components: 'core,python,bin,test,', cmake: '' } - - { name: '2024', cxx: clang++, image: '2024-clang17.2', abi: '11', build: 'Release', components: 'core,python,bin,test,', cmake: '-DDISABLE_DEPENDENCY_VERSION_CHECKS=ON' } + - { name: 'rel', cxx: clang++, image: '2026', abi: 13, build: 'Release', components: 'core,python,bin,test,', cmake: '' } + - { name: 'dbg', cxx: clang++, image: '2026', abi: 13, build: 'Debug', components: 'core,python,bin,test,', cmake: '' } + - { name: 'gcc', cxx: g++, image: '2026', abi: 13, build: 'Release', components: 'core,python,bin,test,', cmake: '' } + - { name: '2025', cxx: clang++, image: '2025-clang19.1', abi: 12, build: 'Release', components: 'core,python,bin,test,', cmake: '' } + - { name: '2024', cxx: clang++, image: '2024-clang17.2', abi: 11, build: 'Release', components: 'core,python,bin,test,', cmake: '-DDISABLE_DEPENDENCY_VERSION_CHECKS=ON' } # Weekly - - { name: 'all', cxx: clang++, image: '2026', abi: '13', build: 'Release', components: 'core,python,bin,test', cmake: '-DUSE_BLOSC=ON -DUSE_ZLIB=ON -DUSE_EXR=ON -DUSE_PNG=ON' } - - { name: 'lite', cxx: clang++, image: '2026', abi: '13', build: 'Release', components: 'core,python,bin,test', cmake: '-DUSE_BLOSC=OFF -DUSE_ZLIB=OFF -DUSE_EXR=OFF -DUSE_PNG=OFF -DOPENVDB_USE_DELAYED_LOADING=OFF' } - - { name: 'half', cxx: clang++, image: '2026', abi: '13', build: 'Release', components: 'core,python,bin,test', cmake: '-DUSE_BLOSC=OFF -DUSE_IMATH_HALF=ON' } - - { name: 'simd', cxx: clang++, image: '2026', abi: '13', build: 'Release', components: 'core,python,bin,test', cmake: '-DOPENVDB_SIMD=SSE42 -DOPENVDB_SIMD=AVX' } - - { name: 'pygrid', cxx: clang++, image: '2026', abi: '13', build: 'Release', components: 'core,python,bin,test', cmake: '-DOPENVDB_PYTHON_WRAP_ALL_GRID_TYPES=ON' } - - { name: 'asan', cxx: clang++, image: '2026', abi: '13', build: 'asan', components: 'core,test', cmake: '-DDISABLE_DEPENDENCY_VERSION_CHECKS=ON -DNANOVDB_USE_OPENVDB=ON -DOPENVDB_AX_STATIC=OFF -DOPENVDB_CORE_STATIC=OFF -DUSE_BLOSC=OFF' } # We never called blosc_destroy(), so disable blosc to silence these errors - - { name: 'ubsan', cxx: clang++, image: '2026', abi: '13', build: 'ubsan', components: 'core,test', cmake: '-DDISABLE_DEPENDENCY_VERSION_CHECKS=ON -DCMAKE_CXX_FLAGS="-Wno-deprecated-declarations" ' } - - { name: 'c++20', cxx: clang++, image: '2026', abi: '13', build: 'Release', components: 'core,test', cmake: '-DCMAKE_CXX_STANDARD=20' } - - { name: 'conf', cxx: clang++, image: '2026', abi: '13', build: 'Release', components: 'core,python,bin,test', cmake: '-DCMAKE_FIND_PACKAGE_PREFER_CONFIG=ON' } + - { name: 'all', cxx: clang++, image: '2026', abi: 13, build: 'Release', components: 'core,python,bin,test', cmake: '-DUSE_BLOSC=ON -DUSE_ZLIB=ON -DUSE_EXR=ON -DUSE_PNG=ON' } + - { name: 'lite', cxx: clang++, image: '2026', abi: 13, build: 'Release', components: 'core,python,bin,test', cmake: '-DUSE_BLOSC=OFF -DUSE_ZLIB=OFF -DUSE_EXR=OFF -DUSE_PNG=OFF -DOPENVDB_USE_DELAYED_LOADING=OFF' } + - { name: 'half', cxx: clang++, image: '2026', abi: 13, build: 'Release', components: 'core,python,bin,test', cmake: '-DUSE_BLOSC=OFF -DUSE_IMATH_HALF=ON' } + - { name: 'simd', cxx: clang++, image: '2026', abi: 13, build: 'Release', components: 'core,python,bin,test', cmake: '-DOPENVDB_SIMD=SSE42 -DOPENVDB_SIMD=AVX' } + - { name: 'pygrid', cxx: clang++, image: '2026', abi: 13, build: 'Release', components: 'core,python,bin,test', cmake: '-DOPENVDB_PYTHON_WRAP_ALL_GRID_TYPES=ON' } + - { name: 'asan', cxx: clang++, image: '2026', abi: 13, build: 'asan', components: 'core,test', cmake: '-DDISABLE_DEPENDENCY_VERSION_CHECKS=ON -DNANOVDB_USE_OPENVDB=ON -DOPENVDB_AX_STATIC=OFF -DOPENVDB_CORE_STATIC=OFF -DUSE_BLOSC=OFF' } # We never called blosc_destroy(), so disable blosc to silence these errors + - { name: 'ubsan', cxx: clang++, image: '2026', abi: 13, build: 'ubsan', components: 'core,test', cmake: '-DDISABLE_DEPENDENCY_VERSION_CHECKS=ON -DCMAKE_CXX_FLAGS="-Wno-deprecated-declarations" ' } + - { name: 'c++20', cxx: clang++, image: '2026', abi: 13, build: 'Release', components: 'core,test', cmake: '-DCMAKE_CXX_STANDARD=20' } + - { name: 'conf', cxx: clang++, image: '2026', abi: 13, build: 'Release', components: 'core,python,bin,test', cmake: '-DCMAKE_FIND_PACKAGE_PREFER_CONFIG=ON' } # AX - - { name: 'ax-clang', cxx: clang++, image: '2026', abi: '13', build: 'Release', components: 'core,python,bin,test,axcore,axbin,axtest', cmake: '' } - - { name: 'ax-dbg', cxx: clang++, image: '2026', abi: '13', build: 'Debug', components: 'core,python,bin,test,axcore,axbin,axtest', cmake: '' } - - { name: 'ax-gcc', cxx: g++, image: '2026', abi: '13', build: 'Release', components: 'core,python,bin,test,axcore,axbin,axtest', cmake: '' } - - { name: 'ax-19', cxx: clang++, image: '2025-clang19.1', abi: '12', build: 'Release', components: 'core,python,bin,test,axcore,axbin,axtest', cmake: '' } - - { name: 'ax-17', cxx: clang++, image: '2024-clang17.2', abi: '11', build: 'Release', components: 'core,python,bin,test,axcore,axbin,axtest', cmake: '-DDISABLE_DEPENDENCY_VERSION_CHECKS=ON' } + - { name: 'ax-clang', cxx: clang++, image: '2026', abi: 13, build: 'Release', components: 'core,python,bin,test,axcore,axbin,axtest', cmake: '' } + - { name: 'ax-dbg', cxx: clang++, image: '2026', abi: 13, build: 'Debug', components: 'core,python,bin,test,axcore,axbin,axtest', cmake: '' } + - { name: 'ax-gcc', cxx: g++, image: '2026', abi: 13, build: 'Release', components: 'core,python,bin,test,axcore,axbin,axtest', cmake: '' } + - { name: 'ax-19', cxx: clang++, image: '2025-clang19.1', abi: 12, build: 'Release', components: 'core,python,bin,test,axcore,axbin,axtest', cmake: '' } + - { name: 'ax-17', cxx: clang++, image: '2024-clang17.2', abi: 11, build: 'Release', components: 'core,python,bin,test,axcore,axbin,axtest', cmake: '-DDISABLE_DEPENDENCY_VERSION_CHECKS=ON' } # For AX builds, to test LLVM 15/16 - - { name: 'ax-16', cxx: clang++, image: '2024-clang16.2', abi: '13', build: 'Release', components: 'core,python,axcore,axbin,axtest', cmake: '-DDISABLE_DEPENDENCY_VERSION_CHECKS=ON' } - - { name: 'ax-15', cxx: clang++, image: '2023-clang15', abi: '13', build: 'Release', components: 'core,python,axcore,axbin,axtest', cmake: '-DDISABLE_DEPENDENCY_VERSION_CHECKS=ON' } + - { name: 'ax-16', cxx: clang++, image: '2024-clang16.2', abi: 13, build: 'Release', components: 'core,python,axcore,axbin,axtest', cmake: '-DDISABLE_DEPENDENCY_VERSION_CHECKS=ON' } + - { name: 'ax-15', cxx: clang++, image: '2023-clang15', abi: 13, build: 'Release', components: 'core,python,axcore,axbin,axtest', cmake: '-DDISABLE_DEPENDENCY_VERSION_CHECKS=ON' } # NanoVDB # NOTE: CMAKE_POSITION_INDEPENDENT_CODE set to fix default behaviour change in clang 14 # https://github.com/AcademySoftwareFoundation/aswf-docker/issues/228 - - { name: 'nano-rel', cxx: clang++, image: '2024-clang17.2', abi: '13', build: 'Release', components: 'core,nano,nanotest,nanoexam,nanobench,nanotool', cmake: '-DCMAKE_POSITION_INDEPENDENT_CODE=ON -DUSE_BLOSC=OFF -DUSE_EXPLICIT_INSTANTIATION=OFF' } - - { name: 'nano-dbg', cxx: clang++, image: '2024-clang17.2', abi: '13', build: 'Debug', components: 'core,nano,nanotest,nanoexam,nanobench,nanotool', cmake: '-DCMAKE_POSITION_INDEPENDENT_CODE=ON -DUSE_BLOSC=OFF -DUSE_EXPLICIT_INSTANTIATION=OFF' } - - { name: 'nano-gcc', cxx: g++, image: '2024-clang17.2', abi: '13', build: 'Release', components: 'core,nano,nanotest,nanoexam,nanobench,nanotool', cmake: '-DCMAKE_POSITION_INDEPENDENT_CODE=ON -DUSE_BLOSC=OFF -DUSE_EXPLICIT_INSTANTIATION=OFF' } - - { name: 'nano-lite',cxx: clang++, image: '2024-clang17.2', abi: '13', build: 'Release', components: 'nanotest', cmake: '-DNANOVDB_USE_OPENVDB=OFF -DNANOVDB_USE_CUDA=OFF' } + - { name: 'nano-rel', cxx: clang++, image: '2024-clang17.2', abi: 13, build: 'Release', components: 'core,nano,nanotest,nanoexam,nanobench,nanotool', cmake: '-DCMAKE_POSITION_INDEPENDENT_CODE=ON -DUSE_BLOSC=OFF -DUSE_EXPLICIT_INSTANTIATION=OFF' } + - { name: 'nano-dbg', cxx: clang++, image: '2024-clang17.2', abi: 13, build: 'Debug', components: 'core,nano,nanotest,nanoexam,nanobench,nanotool', cmake: '-DCMAKE_POSITION_INDEPENDENT_CODE=ON -DUSE_BLOSC=OFF -DUSE_EXPLICIT_INSTANTIATION=OFF' } + - { name: 'nano-gcc', cxx: g++, image: '2024-clang17.2', abi: 13, build: 'Release', components: 'core,nano,nanotest,nanoexam,nanobench,nanotool', cmake: '-DCMAKE_POSITION_INDEPENDENT_CODE=ON -DUSE_BLOSC=OFF -DUSE_EXPLICIT_INSTANTIATION=OFF' } + - { name: 'nano-lite',cxx: clang++, image: '2024-clang17.2', abi: 13, build: 'Release', components: 'nanotest', cmake: '-DNANOVDB_USE_OPENVDB=OFF -DNANOVDB_USE_CUDA=OFF' } fail-fast: false uses: ./.github/workflows/template-linux.yaml with: From a74f5ab72817478dbccdfea93a07d96d7974ee84 Mon Sep 17 00:00:00 2001 From: Nick Avramoussis <4256455+Idclip@users.noreply.github.com> Date: Sat, 8 Nov 2025 00:07:54 +1300 Subject: [PATCH 05/14] wip --- .github/workflows/build.yml | 3 +-- .github/workflows/template-linux.yaml | 1 - 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index a8c35b59d8..78d82a3756 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -48,7 +48,7 @@ defaults: shell: bash jobs: - linux-vfx: + linux: if: | github.event_name != 'workflow_dispatch' || github.event.inputs.type == 'all' || @@ -90,7 +90,6 @@ jobs: fail-fast: false uses: ./.github/workflows/template-linux.yaml with: - name: ${{ matrix.config.name }} cxx: ${{ matrix.config.cxx }} image: ${{ matrix.config.image }} abi: ${{ matrix.config.abi }} diff --git a/.github/workflows/template-linux.yaml b/.github/workflows/template-linux.yaml index 8ddaa7d16b..c5c0dee8dc 100644 --- a/.github/workflows/template-linux.yaml +++ b/.github/workflows/template-linux.yaml @@ -37,7 +37,6 @@ on: jobs: linux: runs-on: ${{ (github.repository_owner == 'AcademySoftwareFoundation' && 'ubuntu-22.04-8c-32g-300h') || 'ubuntu-latest' }} - name: ${{ inputs.name }} container: image: aswf/ci-openvdb:${{ inputs.image }} env: From 409f901ed038ee63929414da1cbcc57a0a8df0c5 Mon Sep 17 00:00:00 2001 From: Nick Avramoussis <4256455+Idclip@users.noreply.github.com> Date: Sat, 8 Nov 2025 00:09:42 +1300 Subject: [PATCH 06/14] wip --- .github/workflows/template-linux.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/template-linux.yaml b/.github/workflows/template-linux.yaml index c5c0dee8dc..4b034b5a90 100644 --- a/.github/workflows/template-linux.yaml +++ b/.github/workflows/template-linux.yaml @@ -48,7 +48,7 @@ jobs: if: contains(inputs.components, 'python') run: ./ci/install_nanobind.sh 2.5.0 - name: setup_cuda_12 - if: contains(inputs.flags, 'cuda') + if: contains(inputs.components, 'nano') run: | echo "/usr/local/cuda-12/bin" >> $GITHUB_PATH echo "LD_LIBRARY_PATH=/usr/local/cuda-12/lib64:$LD_LIBRARY_PATH" >> $GITHUB_ENV From d059313c3c2a7a059c0a06f3d88704ff579d2de7 Mon Sep 17 00:00:00 2001 From: Nick Avramoussis <4256455+Idclip@users.noreply.github.com> Date: Sat, 8 Nov 2025 20:41:04 +1300 Subject: [PATCH 07/14] wip --- .github/workflows/build.yml | 111 ++++++++++++++++---------- .github/workflows/template-linux.yaml | 1 + ci/build.sh | 8 +- 3 files changed, 71 insertions(+), 49 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 78d82a3756..0e2c975691 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -29,8 +29,8 @@ on: - 'pendingchanges/**' - '**.md' schedule: - # run this workflow every day 7am UTC - - cron: '0 7 * * *' + # run this workflow Sunday 00:00 UTC + - cron: '0 0 * * 0' workflow_dispatch: inputs: type: @@ -47,6 +47,30 @@ defaults: run: shell: bash + +jobs: + # linux: + # if: | + # github.event_name != 'workflow_dispatch' || + # github.event.inputs.type == 'all' || + # github.event.inputs.type == 'linux' + # strategy: + # matrix: + # config: + # - { name: 'rel', cxx: clang++, image: '2026', abi: 13, build: 'Release', components: 'core,py,bin,test,', cmake: '' } + # - { name: 'ax-rel', cxx: clang++, image: '2026', abi: 13, build: 'Release', components: 'core,py,bin,test,ax,axbin,axtest', cmake: '' } + # - { name: 'nano-rel', cxx: clang++, image: '2024', abi: 13, build: 'Release', components: 'core,nano,nanotest,nanotools', cmake: '-DCMAKE_POSITION_INDEPENDENT_CODE=ON -DUSE_EXPLICIT_INSTANTIATION=OFF' } + # fail-fast: false + # uses: ./.github/workflows/template-linux.yaml + # with: + # cxx: ${{ matrix.config.cxx }} + # image: ${{ matrix.config.image }} + # abi: ${{ matrix.config.abi }} + # build: ${{ matrix.config.build }} + # components: ${{ matrix.config.components }} + # cmake: ${{ matrix.config.cmake }} + + jobs: linux: if: | @@ -56,39 +80,38 @@ jobs: strategy: matrix: config: - - { name: 'rel', cxx: clang++, image: '2026', abi: 13, build: 'Release', components: 'core,python,bin,test,', cmake: '' } - - { name: 'dbg', cxx: clang++, image: '2026', abi: 13, build: 'Debug', components: 'core,python,bin,test,', cmake: '' } - - { name: 'gcc', cxx: g++, image: '2026', abi: 13, build: 'Release', components: 'core,python,bin,test,', cmake: '' } - - { name: '2025', cxx: clang++, image: '2025-clang19.1', abi: 12, build: 'Release', components: 'core,python,bin,test,', cmake: '' } - - { name: '2024', cxx: clang++, image: '2024-clang17.2', abi: 11, build: 'Release', components: 'core,python,bin,test,', cmake: '-DDISABLE_DEPENDENCY_VERSION_CHECKS=ON' } + - { os: 'linux', name: 'rel', cxx: clang++, image: '2026', abi: 13, build: 'Release', components: 'core,py,bin,test,', cmake: '' } + - { os: 'linux', name: 'dbg', cxx: clang++, image: '2026', abi: 13, build: 'Debug', components: 'core,py,bin,test,', cmake: '' } + - { os: 'linux', name: 'gcc', cxx: g++, image: '2026', abi: 13, build: 'Release', components: 'core,py,bin,test,', cmake: '' } + - { os: 'linux', name: '2025', cxx: clang++, image: '2025', abi: 12, build: 'Release', components: 'core,py,bin,test,', cmake: '' } + - { os: 'linux', name: '2024', cxx: clang++, image: '2024', abi: 11, build: 'Release', components: 'core,py,bin,test,', cmake: '-DDISABLE_DEPENDENCY_VERSION_CHECKS=ON' } # Weekly - - { name: 'all', cxx: clang++, image: '2026', abi: 13, build: 'Release', components: 'core,python,bin,test', cmake: '-DUSE_BLOSC=ON -DUSE_ZLIB=ON -DUSE_EXR=ON -DUSE_PNG=ON' } - - { name: 'lite', cxx: clang++, image: '2026', abi: 13, build: 'Release', components: 'core,python,bin,test', cmake: '-DUSE_BLOSC=OFF -DUSE_ZLIB=OFF -DUSE_EXR=OFF -DUSE_PNG=OFF -DOPENVDB_USE_DELAYED_LOADING=OFF' } - - { name: 'half', cxx: clang++, image: '2026', abi: 13, build: 'Release', components: 'core,python,bin,test', cmake: '-DUSE_BLOSC=OFF -DUSE_IMATH_HALF=ON' } - - { name: 'simd', cxx: clang++, image: '2026', abi: 13, build: 'Release', components: 'core,python,bin,test', cmake: '-DOPENVDB_SIMD=SSE42 -DOPENVDB_SIMD=AVX' } - - { name: 'pygrid', cxx: clang++, image: '2026', abi: 13, build: 'Release', components: 'core,python,bin,test', cmake: '-DOPENVDB_PYTHON_WRAP_ALL_GRID_TYPES=ON' } - - { name: 'asan', cxx: clang++, image: '2026', abi: 13, build: 'asan', components: 'core,test', cmake: '-DDISABLE_DEPENDENCY_VERSION_CHECKS=ON -DNANOVDB_USE_OPENVDB=ON -DOPENVDB_AX_STATIC=OFF -DOPENVDB_CORE_STATIC=OFF -DUSE_BLOSC=OFF' } # We never called blosc_destroy(), so disable blosc to silence these errors - - { name: 'ubsan', cxx: clang++, image: '2026', abi: 13, build: 'ubsan', components: 'core,test', cmake: '-DDISABLE_DEPENDENCY_VERSION_CHECKS=ON -DCMAKE_CXX_FLAGS="-Wno-deprecated-declarations" ' } - - { name: 'c++20', cxx: clang++, image: '2026', abi: 13, build: 'Release', components: 'core,test', cmake: '-DCMAKE_CXX_STANDARD=20' } - - { name: 'conf', cxx: clang++, image: '2026', abi: 13, build: 'Release', components: 'core,python,bin,test', cmake: '-DCMAKE_FIND_PACKAGE_PREFER_CONFIG=ON' } + - { os: 'linux', name: 'all', cxx: clang++, image: '2026', abi: 13, build: 'Release', components: 'core,py,bin,test', cmake: '-DOPENVDB_PYTHON_WRAP_ALL_GRID_TYPES=ON -DUSE_BLOSC=ON -DUSE_ZLIB=ON -DUSE_EXR=ON -DUSE_PNG=ON' } + - { os: 'linux', name: 'lite', cxx: clang++, image: '2026', abi: 13, build: 'Release', components: 'core,py,bin,test', cmake: '-DUSE_BLOSC=OFF -DUSE_ZLIB=OFF -DUSE_EXR=OFF -DUSE_PNG=OFF -DOPENVDB_USE_DELAYED_LOADING=OFF' } + - { os: 'linux', name: 'half', cxx: clang++, image: '2026', abi: 13, build: 'Release', components: 'core,py,bin,test', cmake: '-DUSE_IMATH_HALF=ON' } + - { os: 'linux', name: 'simd', cxx: clang++, image: '2026', abi: 13, build: 'Release', components: 'core,py,bin,test', cmake: '-DOPENVDB_SIMD=SSE42 -DOPENVDB_SIMD=AVX' } + - { os: 'linux', name: 'asan', cxx: clang++, image: '2026', abi: 13, build: 'asan', components: 'core,test', cmake: '-DDISABLE_DEPENDENCY_VERSION_CHECKS=ON -DNANOVDB_USE_OPENVDB=ON -DOPENVDB_AX_STATIC=OFF -DOPENVDB_CORE_STATIC=OFF -DUSE_BLOSC=OFF' } # We never called blosc_destroy(), so disable blosc to silence these errors + - { os: 'linux', name: 'ubsan', cxx: clang++, image: '2026', abi: 13, build: 'ubsan', components: 'core,test', cmake: '-DDISABLE_DEPENDENCY_VERSION_CHECKS=ON -DCMAKE_CXX_FLAGS="-Wno-deprecated-declarations" ' } + - { os: 'linux', name: 'c++20', cxx: clang++, image: '2026', abi: 13, build: 'Release', components: 'core,test', cmake: '-DCMAKE_CXX_STANDARD=20' } + - { os: 'linux', name: 'conf', cxx: clang++, image: '2026', abi: 13, build: 'Release', components: 'core', cmake: '-DCMAKE_FIND_PACKAGE_PREFER_CONFIG=ON' } # AX - - { name: 'ax-clang', cxx: clang++, image: '2026', abi: 13, build: 'Release', components: 'core,python,bin,test,axcore,axbin,axtest', cmake: '' } - - { name: 'ax-dbg', cxx: clang++, image: '2026', abi: 13, build: 'Debug', components: 'core,python,bin,test,axcore,axbin,axtest', cmake: '' } - - { name: 'ax-gcc', cxx: g++, image: '2026', abi: 13, build: 'Release', components: 'core,python,bin,test,axcore,axbin,axtest', cmake: '' } - - { name: 'ax-19', cxx: clang++, image: '2025-clang19.1', abi: 12, build: 'Release', components: 'core,python,bin,test,axcore,axbin,axtest', cmake: '' } - - { name: 'ax-17', cxx: clang++, image: '2024-clang17.2', abi: 11, build: 'Release', components: 'core,python,bin,test,axcore,axbin,axtest', cmake: '-DDISABLE_DEPENDENCY_VERSION_CHECKS=ON' } + - { os: 'linux', name: 'ax-rel', cxx: clang++, image: '2026', abi: 13, build: 'Release', components: 'core,py,bin,test,ax,axbin,axtest', cmake: '' } + - { os: 'linux', name: 'ax-dbg', cxx: clang++, image: '2026', abi: 13, build: 'Debug', components: 'core,py,bin,test,ax,axbin,axtest', cmake: '' } + - { os: 'linux', name: 'ax-gcc', cxx: g++, image: '2026', abi: 13, build: 'Release', components: 'core,py,bin,test,ax,axbin,axtest', cmake: '' } + - { os: 'linux', name: 'ax-19', cxx: clang++, image: '2025', abi: 12, build: 'Release', components: 'core,py,bin,test,ax,axbin,axtest', cmake: '' } + - { os: 'linux', name: 'ax-17', cxx: clang++, image: '2024', abi: 11, build: 'Release', components: 'core,py,bin,test,ax,axbin,axtest', cmake: '-DDISABLE_DEPENDENCY_VERSION_CHECKS=ON' } # For AX builds, to test LLVM 15/16 - - { name: 'ax-16', cxx: clang++, image: '2024-clang16.2', abi: 13, build: 'Release', components: 'core,python,axcore,axbin,axtest', cmake: '-DDISABLE_DEPENDENCY_VERSION_CHECKS=ON' } - - { name: 'ax-15', cxx: clang++, image: '2023-clang15', abi: 13, build: 'Release', components: 'core,python,axcore,axbin,axtest', cmake: '-DDISABLE_DEPENDENCY_VERSION_CHECKS=ON' } + - { os: 'linux', name: 'ax-16', cxx: clang++, image: '2024', abi: 13, build: 'Release', components: 'core,py,ax,axbin,axtest', cmake: '-DDISABLE_DEPENDENCY_VERSION_CHECKS=ON' } + - { os: 'linux', name: 'ax-15', cxx: clang++, image: '2023', abi: 13, build: 'Release', components: 'core,py,ax,axbin,axtest', cmake: '-DDISABLE_DEPENDENCY_VERSION_CHECKS=ON' } # NanoVDB # NOTE: CMAKE_POSITION_INDEPENDENT_CODE set to fix default behaviour change in clang 14 # https://github.com/AcademySoftwareFoundation/aswf-docker/issues/228 - - { name: 'nano-rel', cxx: clang++, image: '2024-clang17.2', abi: 13, build: 'Release', components: 'core,nano,nanotest,nanoexam,nanobench,nanotool', cmake: '-DCMAKE_POSITION_INDEPENDENT_CODE=ON -DUSE_BLOSC=OFF -DUSE_EXPLICIT_INSTANTIATION=OFF' } - - { name: 'nano-dbg', cxx: clang++, image: '2024-clang17.2', abi: 13, build: 'Debug', components: 'core,nano,nanotest,nanoexam,nanobench,nanotool', cmake: '-DCMAKE_POSITION_INDEPENDENT_CODE=ON -DUSE_BLOSC=OFF -DUSE_EXPLICIT_INSTANTIATION=OFF' } - - { name: 'nano-gcc', cxx: g++, image: '2024-clang17.2', abi: 13, build: 'Release', components: 'core,nano,nanotest,nanoexam,nanobench,nanotool', cmake: '-DCMAKE_POSITION_INDEPENDENT_CODE=ON -DUSE_BLOSC=OFF -DUSE_EXPLICIT_INSTANTIATION=OFF' } - - { name: 'nano-lite',cxx: clang++, image: '2024-clang17.2', abi: 13, build: 'Release', components: 'nanotest', cmake: '-DNANOVDB_USE_OPENVDB=OFF -DNANOVDB_USE_CUDA=OFF' } + - { os: 'linux', name: 'nano-rel', cxx: clang++, image: '2024', abi: 13, build: 'Release', components: 'core,nano,nanotest,nanotools', cmake: '-DCMAKE_POSITION_INDEPENDENT_CODE=ON -DUSE_BLOSC=OFF -DUSE_EXPLICIT_INSTANTIATION=OFF' } + - { os: 'linux', name: 'nano-dbg', cxx: clang++, image: '2024', abi: 13, build: 'Debug', components: 'core,nano,nanotest,nanotools', cmake: '-DCMAKE_POSITION_INDEPENDENT_CODE=ON -DUSE_BLOSC=OFF -DUSE_EXPLICIT_INSTANTIATION=OFF' } + - { os: 'linux', name: 'nano-gcc', cxx: g++, image: '2024', abi: 13, build: 'Release', components: 'core,nano,nanotest,nanotools', cmake: '-DCMAKE_POSITION_INDEPENDENT_CODE=ON -DUSE_BLOSC=OFF -DUSE_EXPLICIT_INSTANTIATION=OFF' } + - { os: 'linux', name: 'nano-lite', cxx: clang++, image: '2024', abi: 13, build: 'Release', components: 'nanotest', cmake: '-DNANOVDB_USE_OPENVDB=OFF -DNANOVDB_USE_CUDA=OFF' } fail-fast: false - uses: ./.github/workflows/template-linux.yaml + uses: ./.github/workflows/template-${{ matrix.config.os }}.yaml with: cxx: ${{ matrix.config.cxx }} image: ${{ matrix.config.image }} @@ -107,18 +130,18 @@ jobs: # config: # - { image: 'macos-14', build: 'Release', components: 'core,python,bin,test', llvm: '', cmake: '' } # - { image: 'macos-15', build: 'Release', components: 'core,python,bin,test', llvm: '', cmake: '' } - # # core,python,axcore,axbin,axtest - # - { image: 'macos-15', build: 'Release', components: 'core,python,axcore,axbin,axtest', llvm: '21' } - # - { image: 'macos-14', build: 'Release', components: 'core,python,axcore,axbin,axtest', llvm: '21' } - # - { image: 'macos-14', build: 'Release', components: 'core,python,axcore,axbin,axtest', llvm: '20' } - # - { image: 'macos-14', build: 'Release', components: 'core,python,axcore,axbin,axtest', llvm: '19' } - # - { image: 'macos-14', build: 'Release', components: 'core,python,axcore,axbin,axtest', llvm: '18' } - # - { image: 'macos-14', build: 'Release', components: 'core,python,axcore,axbin,axtest', llvm: '17' } - # - { image: 'macos-14', build: 'Release', components: 'core,python,axcore,axbin,axtest', llvm: '16' } - # - { image: 'macos-latest', build: 'Release', components: 'core,python,axcore,axbin,axtest', llvm: '20', cmake: '-DUSE_EXPLICIT_INSTANTIATION=OFF ' } + # # core,python,ax,axbin,axtest + # - { image: 'macos-15', build: 'Release', components: 'core,python,ax,axbin,axtest', llvm: '21' } + # - { image: 'macos-14', build: 'Release', components: 'core,python,ax,axbin,axtest', llvm: '21' } + # - { image: 'macos-14', build: 'Release', components: 'core,python,ax,axbin,axtest', llvm: '20' } + # - { image: 'macos-14', build: 'Release', components: 'core,python,ax,axbin,axtest', llvm: '19' } + # - { image: 'macos-14', build: 'Release', components: 'core,python,ax,axbin,axtest', llvm: '18' } + # - { image: 'macos-14', build: 'Release', components: 'core,python,ax,axbin,axtest', llvm: '17' } + # - { image: 'macos-14', build: 'Release', components: 'core,python,ax,axbin,axtest', llvm: '16' } + # - { image: 'macos-latest', build: 'Release', components: 'core,python,ax,axbin,axtest', llvm: '20', cmake: '-DUSE_EXPLICIT_INSTANTIATION=OFF ' } # # Nano - # - { image: 'macos-14', build: 'Release', components: 'core,nano,nanotest,nanoexam,nanobench,nanotool', cmake: '-DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/install -DUSE_EXPLICIT_INSTANTIATION=OFF -DNANOVDB_USE_CUDA=OFF -DNANOVDB_USE_OPENVDB=ON' } - # - { image: 'macos-14', build: 'Debug', components: 'core,nano,nanotest,nanoexam,nanobench,nanotool', cmake: '-DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/install -DUSE_EXPLICIT_INSTANTIATION=OFF -DNANOVDB_USE_CUDA=OFF -DNANOVDB_USE_OPENVDB=ON' } + # - { image: 'macos-14', build: 'Release', components: 'core,nano,nanotest,nanotools', cmake: '-DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/install -DUSE_EXPLICIT_INSTANTIATION=OFF -DNANOVDB_USE_CUDA=OFF -DNANOVDB_USE_OPENVDB=ON' } + # - { image: 'macos-14', build: 'Debug', components: 'core,nano,nanotest,nanotools', cmake: '-DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/install -DUSE_EXPLICIT_INSTANTIATION=OFF -DNANOVDB_USE_CUDA=OFF -DNANOVDB_USE_OPENVDB=ON' } # fail-fast: false # uses: ./.github/workflows/template-macos.yaml # with: @@ -154,12 +177,12 @@ jobs: # # option on Windows). # # @note currently only test static builds with MT as building LLVM as # # a shared lib on windows is a bit dicey - # - { vc: 'x64-windows-static', llvm: '18.1.0', crt: 'MultiThreaded', components: 'core,axcore,axbin,axtest', build: 'Release', cmake: '-DOPENVDB_AX_TEST_CMD_DOWNLOADS=OFF -DUSE_EXPLICIT_INSTANTIATION=OFF -DOPENVDB_CORE_SHARED=OFF -DOPENVDB_AX_SHARED=OFF -DUSE_STATIC_DEPENDENCIES=ON -DBLOSC_USE_EXTERNAL_SOURCES=ON' } - # - { vc: 'x64-windows-static', llvm: '18.1.0', crt: 'MultiThreadedDebug', components: 'core,axcore,axbin,axtest', build: 'Debug', cmake: '-DOPENVDB_AX_TEST_CMD_DOWNLOADS=OFF -DUSE_EXPLICIT_INSTANTIATION=OFF -DOPENVDB_CORE_SHARED=OFF -DOPENVDB_AX_SHARED=OFF -DUSE_STATIC_DEPENDENCIES=ON -DBLOSC_USE_EXTERNAL_SOURCES=ON' } - # - { vc: 'x64-windows', llvm: '18.1.0', crt: 'MultiThreadedDLL', components: 'core,axcore,axbin', build: 'Release', cmake: '-DOPENVDB_AX_TEST_CMD_DOWNLOADS=OFF -DUSE_EXPLICIT_INSTANTIATION=OFF -DOPENVDB_CORE_STATIC=OFF -DOPENVDB_AX_STATIC=OFF' } - # - { vc: 'x64-windows-static', llvm: '15.0.0', crt: 'MultiThreaded', components: 'core,axcore,axbin,axtest', build: 'Release', cmake: '-DOPENVDB_AX_TEST_CMD_DOWNLOADS=OFF -DUSE_EXPLICIT_INSTANTIATION=OFF -DOPENVDB_CORE_SHARED=OFF -DOPENVDB_AX_SHARED=OFF -DUSE_STATIC_DEPENDENCIES=ON -DBLOSC_USE_EXTERNAL_SOURCES=ON' } + # - { vc: 'x64-windows-static', llvm: '18.1.0', crt: 'MultiThreaded', components: 'core,ax,axbin,axtest', build: 'Release', cmake: '-DOPENVDB_AX_TEST_CMD_DOWNLOADS=OFF -DUSE_EXPLICIT_INSTANTIATION=OFF -DOPENVDB_CORE_SHARED=OFF -DOPENVDB_AX_SHARED=OFF -DUSE_STATIC_DEPENDENCIES=ON -DBLOSC_USE_EXTERNAL_SOURCES=ON' } + # - { vc: 'x64-windows-static', llvm: '18.1.0', crt: 'MultiThreadedDebug', components: 'core,ax,axbin,axtest', build: 'Debug', cmake: '-DOPENVDB_AX_TEST_CMD_DOWNLOADS=OFF -DUSE_EXPLICIT_INSTANTIATION=OFF -DOPENVDB_CORE_SHARED=OFF -DOPENVDB_AX_SHARED=OFF -DUSE_STATIC_DEPENDENCIES=ON -DBLOSC_USE_EXTERNAL_SOURCES=ON' } + # - { vc: 'x64-windows', llvm: '18.1.0', crt: 'MultiThreadedDLL', components: 'core,ax,axbin', build: 'Release', cmake: '-DOPENVDB_AX_TEST_CMD_DOWNLOADS=OFF -DUSE_EXPLICIT_INSTANTIATION=OFF -DOPENVDB_CORE_STATIC=OFF -DOPENVDB_AX_STATIC=OFF' } + # - { vc: 'x64-windows-static', llvm: '15.0.0', crt: 'MultiThreaded', components: 'core,ax,axbin,axtest', build: 'Release', cmake: '-DOPENVDB_AX_TEST_CMD_DOWNLOADS=OFF -DUSE_EXPLICIT_INSTANTIATION=OFF -DOPENVDB_CORE_SHARED=OFF -DOPENVDB_AX_SHARED=OFF -DUSE_STATIC_DEPENDENCIES=ON -DBLOSC_USE_EXTERNAL_SOURCES=ON' } # # Nano - # - { build: 'Release', llvm: '', crt: '', components: 'core,nano,nanotest,nanoexam,nanobench,nanotool', cmake: '-DDUSE_EXPLICIT_INSTANTIATION=OFF' } + # - { build: 'Release', llvm: '', crt: '', components: 'core,nano,nanotest,nanotools', cmake: '-DDUSE_EXPLICIT_INSTANTIATION=OFF' } # # static build of blosc from vcpkg does not build internal sources. # # USE_STATIC_DEPENDENCIES is required for IlmBase/OpenEXR defines and # # Boost as both shared and static libs are installed. diff --git a/.github/workflows/template-linux.yaml b/.github/workflows/template-linux.yaml index 4b034b5a90..f785852b8e 100644 --- a/.github/workflows/template-linux.yaml +++ b/.github/workflows/template-linux.yaml @@ -37,6 +37,7 @@ on: jobs: linux: runs-on: ${{ (github.repository_owner == 'AcademySoftwareFoundation' && 'ubuntu-22.04-8c-32g-300h') || 'ubuntu-latest' }} + name: ${{ inputs.name }} container: image: aswf/ci-openvdb:${{ inputs.image }} env: diff --git a/ci/build.sh b/ci/build.sh index aa9dd6b0f4..a1796712f0 100755 --- a/ci/build.sh +++ b/ci/build.sh @@ -54,7 +54,7 @@ fi # Available options for --components declare -A COMPONENTS COMPONENTS['core']='OPENVDB_BUILD_CORE' -COMPONENTS['python']='OPENVDB_BUILD_PYTHON_MODULE' +COMPONENTS['py']='OPENVDB_BUILD_PYTHON_MODULE' COMPONENTS['test']='OPENVDB_BUILD_UNITTESTS' COMPONENTS['bin']='OPENVDB_BUILD_VDB_PRINT,OPENVDB_BUILD_VDB_LOD,OPENVDB_BUILD_VDB_VIEW,OPENVDB_BUILD_VDB_RENDER,OPENVDB_BUILD_VDB_TOOL,OPENVDB_BUILD_VDB_TOOL_UNITTESTS' COMPONENTS['view']='OPENVDB_BUILD_VDB_VIEW' @@ -62,16 +62,14 @@ COMPONENTS['render']='OPENVDB_BUILD_VDB_RENDER' COMPONENTS['hou']='OPENVDB_BUILD_HOUDINI_PLUGIN' COMPONENTS['doc']='OPENVDB_BUILD_DOCS' -COMPONENTS['axcore']='OPENVDB_BUILD_AX' +COMPONENTS['ax']='OPENVDB_BUILD_AX' COMPONENTS['axgr']='OPENVDB_BUILD_AX_GRAMMAR' COMPONENTS['axbin']='OPENVDB_BUILD_AX_BINARIES' COMPONENTS['axtest']='OPENVDB_BUILD_AX_UNITTESTS' COMPONENTS['nano']='OPENVDB_BUILD_NANOVDB' COMPONENTS['nanotest']='NANOVDB_BUILD_UNITTESTS' -COMPONENTS['nanoexam']='NANOVDB_BUILD_EXAMPLES' -COMPONENTS['nanobench']='NANOVDB_BUILD_BENCHMARK' -COMPONENTS['nanotool']='NANOVDB_BUILD_TOOLS' +COMPONENTS['nanotools']='NANOVDB_BUILD_EXAMPLES,NANOVDB_BUILD_BENCHMARK,NANOVDB_BUILD_TOOLS' ################################################ From 80a0d9c52ffac7f5044a754bf667d1788624fd8a Mon Sep 17 00:00:00 2001 From: Nick Avramoussis <4256455+Idclip@users.noreply.github.com> Date: Sat, 8 Nov 2025 20:41:41 +1300 Subject: [PATCH 08/14] wip --- .github/workflows/build.yml | 42 ++++++++++++++++++------------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 0e2c975691..8b2f5786c8 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -48,27 +48,27 @@ defaults: shell: bash -jobs: - # linux: - # if: | - # github.event_name != 'workflow_dispatch' || - # github.event.inputs.type == 'all' || - # github.event.inputs.type == 'linux' - # strategy: - # matrix: - # config: - # - { name: 'rel', cxx: clang++, image: '2026', abi: 13, build: 'Release', components: 'core,py,bin,test,', cmake: '' } - # - { name: 'ax-rel', cxx: clang++, image: '2026', abi: 13, build: 'Release', components: 'core,py,bin,test,ax,axbin,axtest', cmake: '' } - # - { name: 'nano-rel', cxx: clang++, image: '2024', abi: 13, build: 'Release', components: 'core,nano,nanotest,nanotools', cmake: '-DCMAKE_POSITION_INDEPENDENT_CODE=ON -DUSE_EXPLICIT_INSTANTIATION=OFF' } - # fail-fast: false - # uses: ./.github/workflows/template-linux.yaml - # with: - # cxx: ${{ matrix.config.cxx }} - # image: ${{ matrix.config.image }} - # abi: ${{ matrix.config.abi }} - # build: ${{ matrix.config.build }} - # components: ${{ matrix.config.components }} - # cmake: ${{ matrix.config.cmake }} +# jobs: +# linux: +# if: | +# github.event_name != 'workflow_dispatch' || +# github.event.inputs.type == 'all' || +# github.event.inputs.type == 'linux' +# strategy: +# matrix: +# config: +# - { name: 'rel', cxx: clang++, image: '2026', abi: 13, build: 'Release', components: 'core,py,bin,test,', cmake: '' } +# - { name: 'ax-rel', cxx: clang++, image: '2026', abi: 13, build: 'Release', components: 'core,py,bin,test,ax,axbin,axtest', cmake: '' } +# - { name: 'nano-rel', cxx: clang++, image: '2024', abi: 13, build: 'Release', components: 'core,nano,nanotest,nanotools', cmake: '-DCMAKE_POSITION_INDEPENDENT_CODE=ON -DUSE_EXPLICIT_INSTANTIATION=OFF' } +# fail-fast: false +# uses: ./.github/workflows/template-linux.yaml +# with: +# cxx: ${{ matrix.config.cxx }} +# image: ${{ matrix.config.image }} +# abi: ${{ matrix.config.abi }} +# build: ${{ matrix.config.build }} +# components: ${{ matrix.config.components }} +# cmake: ${{ matrix.config.cmake }} jobs: From 262b73d7f32b4046664025068ef0265cef0930aa Mon Sep 17 00:00:00 2001 From: Nick Avramoussis <4256455+Idclip@users.noreply.github.com> Date: Sat, 8 Nov 2025 20:42:51 +1300 Subject: [PATCH 09/14] wip --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 8b2f5786c8..98f7ca2a0b 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -111,7 +111,7 @@ jobs: - { os: 'linux', name: 'nano-gcc', cxx: g++, image: '2024', abi: 13, build: 'Release', components: 'core,nano,nanotest,nanotools', cmake: '-DCMAKE_POSITION_INDEPENDENT_CODE=ON -DUSE_BLOSC=OFF -DUSE_EXPLICIT_INSTANTIATION=OFF' } - { os: 'linux', name: 'nano-lite', cxx: clang++, image: '2024', abi: 13, build: 'Release', components: 'nanotest', cmake: '-DNANOVDB_USE_OPENVDB=OFF -DNANOVDB_USE_CUDA=OFF' } fail-fast: false - uses: ./.github/workflows/template-${{ matrix.config.os }}.yaml + uses: "${{ matrix.config.os }}" with: cxx: ${{ matrix.config.cxx }} image: ${{ matrix.config.image }} From d445f835f557e2c904594d37cc8db663e8d64097 Mon Sep 17 00:00:00 2001 From: Nick Avramoussis <4256455+Idclip@users.noreply.github.com> Date: Sat, 8 Nov 2025 21:26:19 +1300 Subject: [PATCH 10/14] wip --- .github/workflows/build.yml | 137 ++++++++++++++++-------------------- 1 file changed, 62 insertions(+), 75 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 98f7ca2a0b..b70a33b4c1 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -2,20 +2,6 @@ name: Build on: - push: - branches: - - 'master' - - 'feature/**' - - 'pr/**' - paths-ignore: - - 'CHANGES' - - 'CODEOWNERS' - - 'doc/**' - - 'openvdb_maya/**' - - 'openvdb_houdini/**' - - 'fvdb/**' - - 'pendingchanges/**' - - '**.md' pull_request: branches: - '**' @@ -31,12 +17,9 @@ on: schedule: # run this workflow Sunday 00:00 UTC - cron: '0 0 * * 0' - workflow_dispatch: - inputs: - type: - description: 'The type of CI to run (all, linux, win, mac)' - required: true - default: 'all' + merge_group: + types: [ checks_requested ] + # Allow subsequent pushes to the same PR or REF to cancel any previous jobs. concurrency: @@ -47,71 +30,50 @@ defaults: run: shell: bash - -# jobs: -# linux: -# if: | -# github.event_name != 'workflow_dispatch' || -# github.event.inputs.type == 'all' || -# github.event.inputs.type == 'linux' -# strategy: -# matrix: -# config: -# - { name: 'rel', cxx: clang++, image: '2026', abi: 13, build: 'Release', components: 'core,py,bin,test,', cmake: '' } -# - { name: 'ax-rel', cxx: clang++, image: '2026', abi: 13, build: 'Release', components: 'core,py,bin,test,ax,axbin,axtest', cmake: '' } -# - { name: 'nano-rel', cxx: clang++, image: '2024', abi: 13, build: 'Release', components: 'core,nano,nanotest,nanotools', cmake: '-DCMAKE_POSITION_INDEPENDENT_CODE=ON -DUSE_EXPLICIT_INSTANTIATION=OFF' } -# fail-fast: false -# uses: ./.github/workflows/template-linux.yaml -# with: -# cxx: ${{ matrix.config.cxx }} -# image: ${{ matrix.config.image }} -# abi: ${{ matrix.config.abi }} -# build: ${{ matrix.config.build }} -# components: ${{ matrix.config.components }} -# cmake: ${{ matrix.config.cmake }} - - jobs: - linux: - if: | - github.event_name != 'workflow_dispatch' || - github.event.inputs.type == 'all' || - github.event.inputs.type == 'linux' + linux-on-pr: + if: github.event_name == 'pull_request' || github.event_name == 'schedule' + strategy: + matrix: + config: + - { name: 'rel', cxx: clang++, image: '2026', abi: 13, build: 'Release', components: 'core,py,bin,test,', cmake: '' } + - { name: 'ax-rel', cxx: clang++, image: '2026', abi: 13, build: 'Release', components: 'core,py,bin,test,ax,axbin,axtest', cmake: '' } + - { name: 'nano-rel', cxx: clang++, image: '2024', abi: 13, build: 'Release', components: 'core,nano,nanotest,nanotools', cmake: '-DCMAKE_POSITION_INDEPENDENT_CODE=ON -DUSE_EXPLICIT_INSTANTIATION=OFF' } + fail-fast: false + uses: ./.github/workflows/template-linux.yaml + with: + cxx: ${{ matrix.config.cxx }} + image: ${{ matrix.config.image }} + abi: ${{ matrix.config.abi }} + build: ${{ matrix.config.build }} + components: ${{ matrix.config.components }} + cmake: ${{ matrix.config.cmake }} + + linux-on-merge: + if: github.event_name == 'merge_group' || github.event_name == 'schedule' strategy: matrix: config: - - { os: 'linux', name: 'rel', cxx: clang++, image: '2026', abi: 13, build: 'Release', components: 'core,py,bin,test,', cmake: '' } - - { os: 'linux', name: 'dbg', cxx: clang++, image: '2026', abi: 13, build: 'Debug', components: 'core,py,bin,test,', cmake: '' } - - { os: 'linux', name: 'gcc', cxx: g++, image: '2026', abi: 13, build: 'Release', components: 'core,py,bin,test,', cmake: '' } - - { os: 'linux', name: '2025', cxx: clang++, image: '2025', abi: 12, build: 'Release', components: 'core,py,bin,test,', cmake: '' } - - { os: 'linux', name: '2024', cxx: clang++, image: '2024', abi: 11, build: 'Release', components: 'core,py,bin,test,', cmake: '-DDISABLE_DEPENDENCY_VERSION_CHECKS=ON' } - # Weekly - - { os: 'linux', name: 'all', cxx: clang++, image: '2026', abi: 13, build: 'Release', components: 'core,py,bin,test', cmake: '-DOPENVDB_PYTHON_WRAP_ALL_GRID_TYPES=ON -DUSE_BLOSC=ON -DUSE_ZLIB=ON -DUSE_EXR=ON -DUSE_PNG=ON' } - - { os: 'linux', name: 'lite', cxx: clang++, image: '2026', abi: 13, build: 'Release', components: 'core,py,bin,test', cmake: '-DUSE_BLOSC=OFF -DUSE_ZLIB=OFF -DUSE_EXR=OFF -DUSE_PNG=OFF -DOPENVDB_USE_DELAYED_LOADING=OFF' } - - { os: 'linux', name: 'half', cxx: clang++, image: '2026', abi: 13, build: 'Release', components: 'core,py,bin,test', cmake: '-DUSE_IMATH_HALF=ON' } - - { os: 'linux', name: 'simd', cxx: clang++, image: '2026', abi: 13, build: 'Release', components: 'core,py,bin,test', cmake: '-DOPENVDB_SIMD=SSE42 -DOPENVDB_SIMD=AVX' } - - { os: 'linux', name: 'asan', cxx: clang++, image: '2026', abi: 13, build: 'asan', components: 'core,test', cmake: '-DDISABLE_DEPENDENCY_VERSION_CHECKS=ON -DNANOVDB_USE_OPENVDB=ON -DOPENVDB_AX_STATIC=OFF -DOPENVDB_CORE_STATIC=OFF -DUSE_BLOSC=OFF' } # We never called blosc_destroy(), so disable blosc to silence these errors - - { os: 'linux', name: 'ubsan', cxx: clang++, image: '2026', abi: 13, build: 'ubsan', components: 'core,test', cmake: '-DDISABLE_DEPENDENCY_VERSION_CHECKS=ON -DCMAKE_CXX_FLAGS="-Wno-deprecated-declarations" ' } - - { os: 'linux', name: 'c++20', cxx: clang++, image: '2026', abi: 13, build: 'Release', components: 'core,test', cmake: '-DCMAKE_CXX_STANDARD=20' } - - { os: 'linux', name: 'conf', cxx: clang++, image: '2026', abi: 13, build: 'Release', components: 'core', cmake: '-DCMAKE_FIND_PACKAGE_PREFER_CONFIG=ON' } + - { name: 'dbg', cxx: clang++, image: '2026', abi: 13, build: 'Debug', components: 'core,py,bin,test,', cmake: '' } + - { name: 'gcc', cxx: g++, image: '2026', abi: 13, build: 'Release', components: 'core,py,bin,test,', cmake: '' } + - { name: '2025', cxx: clang++, image: '2025', abi: 12, build: 'Release', components: 'core,py,bin,test,', cmake: '' } + - { name: '2024', cxx: clang++, image: '2024', abi: 11, build: 'Release', components: 'core,py,bin,test,', cmake: '-DDISABLE_DEPENDENCY_VERSION_CHECKS=ON' } # AX - - { os: 'linux', name: 'ax-rel', cxx: clang++, image: '2026', abi: 13, build: 'Release', components: 'core,py,bin,test,ax,axbin,axtest', cmake: '' } - - { os: 'linux', name: 'ax-dbg', cxx: clang++, image: '2026', abi: 13, build: 'Debug', components: 'core,py,bin,test,ax,axbin,axtest', cmake: '' } - - { os: 'linux', name: 'ax-gcc', cxx: g++, image: '2026', abi: 13, build: 'Release', components: 'core,py,bin,test,ax,axbin,axtest', cmake: '' } - - { os: 'linux', name: 'ax-19', cxx: clang++, image: '2025', abi: 12, build: 'Release', components: 'core,py,bin,test,ax,axbin,axtest', cmake: '' } - - { os: 'linux', name: 'ax-17', cxx: clang++, image: '2024', abi: 11, build: 'Release', components: 'core,py,bin,test,ax,axbin,axtest', cmake: '-DDISABLE_DEPENDENCY_VERSION_CHECKS=ON' } + - { name: 'ax-dbg', cxx: clang++, image: '2026', abi: 13, build: 'Debug', components: 'core,py,bin,test,ax,axbin,axtest', cmake: '' } + - { name: 'ax-gcc', cxx: g++, image: '2026', abi: 13, build: 'Release', components: 'core,py,bin,test,ax,axbin,axtest', cmake: '' } + - { name: 'ax-19', cxx: clang++, image: '2025', abi: 12, build: 'Release', components: 'core,py,bin,test,ax,axbin,axtest', cmake: '' } + - { name: 'ax-17', cxx: clang++, image: '2024', abi: 11, build: 'Release', components: 'core,py,bin,test,ax,axbin,axtest', cmake: '-DDISABLE_DEPENDENCY_VERSION_CHECKS=ON' } # For AX builds, to test LLVM 15/16 - - { os: 'linux', name: 'ax-16', cxx: clang++, image: '2024', abi: 13, build: 'Release', components: 'core,py,ax,axbin,axtest', cmake: '-DDISABLE_DEPENDENCY_VERSION_CHECKS=ON' } - - { os: 'linux', name: 'ax-15', cxx: clang++, image: '2023', abi: 13, build: 'Release', components: 'core,py,ax,axbin,axtest', cmake: '-DDISABLE_DEPENDENCY_VERSION_CHECKS=ON' } + - { name: 'ax-16', cxx: clang++, image: '2024', abi: 13, build: 'Release', components: 'core,py,ax,axbin,axtest', cmake: '-DDISABLE_DEPENDENCY_VERSION_CHECKS=ON' } + - { name: 'ax-15', cxx: clang++, image: '2023', abi: 13, build: 'Release', components: 'core,py,ax,axbin,axtest', cmake: '-DDISABLE_DEPENDENCY_VERSION_CHECKS=ON' } # NanoVDB # NOTE: CMAKE_POSITION_INDEPENDENT_CODE set to fix default behaviour change in clang 14 # https://github.com/AcademySoftwareFoundation/aswf-docker/issues/228 - - { os: 'linux', name: 'nano-rel', cxx: clang++, image: '2024', abi: 13, build: 'Release', components: 'core,nano,nanotest,nanotools', cmake: '-DCMAKE_POSITION_INDEPENDENT_CODE=ON -DUSE_BLOSC=OFF -DUSE_EXPLICIT_INSTANTIATION=OFF' } - - { os: 'linux', name: 'nano-dbg', cxx: clang++, image: '2024', abi: 13, build: 'Debug', components: 'core,nano,nanotest,nanotools', cmake: '-DCMAKE_POSITION_INDEPENDENT_CODE=ON -DUSE_BLOSC=OFF -DUSE_EXPLICIT_INSTANTIATION=OFF' } - - { os: 'linux', name: 'nano-gcc', cxx: g++, image: '2024', abi: 13, build: 'Release', components: 'core,nano,nanotest,nanotools', cmake: '-DCMAKE_POSITION_INDEPENDENT_CODE=ON -DUSE_BLOSC=OFF -DUSE_EXPLICIT_INSTANTIATION=OFF' } - - { os: 'linux', name: 'nano-lite', cxx: clang++, image: '2024', abi: 13, build: 'Release', components: 'nanotest', cmake: '-DNANOVDB_USE_OPENVDB=OFF -DNANOVDB_USE_CUDA=OFF' } + - { name: 'nano-dbg', cxx: clang++, image: '2024', abi: 13, build: 'Debug', components: 'core,nano,nanotest,nanotools', cmake: '-DCMAKE_POSITION_INDEPENDENT_CODE=ON -DUSE_BLOSC=OFF -DUSE_EXPLICIT_INSTANTIATION=OFF' } + - { name: 'nano-gcc', cxx: g++, image: '2024', abi: 13, build: 'Release', components: 'core,nano,nanotest,nanotools', cmake: '-DCMAKE_POSITION_INDEPENDENT_CODE=ON -DUSE_BLOSC=OFF -DUSE_EXPLICIT_INSTANTIATION=OFF' } + - { name: 'nano-lite', cxx: clang++, image: '2024', abi: 13, build: 'Release', components: 'nanotest', cmake: '-DNANOVDB_USE_OPENVDB=OFF -DNANOVDB_USE_CUDA=OFF' } fail-fast: false - uses: "${{ matrix.config.os }}" + uses: ./.github/workflows/template-linux.yaml with: cxx: ${{ matrix.config.cxx }} image: ${{ matrix.config.image }} @@ -120,6 +82,31 @@ jobs: components: ${{ matrix.config.components }} cmake: ${{ matrix.config.cmake }} + linux-on-weekly: + if: github.event_name == 'schedule' + strategy: + matrix: + config: + - { name: 'all', build: 'Release', components: 'core,py,bin,test', cmake: '-DOPENVDB_PYTHON_WRAP_ALL_GRID_TYPES=ON -DUSE_BLOSC=ON -DUSE_ZLIB=ON -DUSE_EXR=ON -DUSE_PNG=ON -DOPENVDB_SIMD=SSE42 -DOPENVDB_SIMD=AVX' } + - { name: 'lite', build: 'Release', components: 'core,py,bin,test', cmake: '-DUSE_BLOSC=OFF -DUSE_ZLIB=OFF -DUSE_EXR=OFF -DUSE_PNG=OFF -DOPENVDB_USE_DELAYED_LOADING=OFF' } + - { name: 'half', build: 'Release', components: 'core,py,bin,test', cmake: '-DUSE_IMATH_HALF=ON' } + - { name: 'asan', build: 'asan', components: 'core,test', cmake: '-DDISABLE_DEPENDENCY_VERSION_CHECKS=ON -DNANOVDB_USE_OPENVDB=ON -DOPENVDB_AX_STATIC=OFF -DOPENVDB_CORE_STATIC=OFF -DUSE_BLOSC=OFF' } # We never called blosc_destroy(), so disable blosc to silence these errors + - { name: 'ubsan', build: 'ubsan', components: 'core,test', cmake: '-DDISABLE_DEPENDENCY_VERSION_CHECKS=ON -DCMAKE_CXX_FLAGS="-Wno-deprecated-declarations" ' } + - { name: 'c++20', build: 'Release', components: 'core,test', cmake: '-DCMAKE_CXX_STANDARD=20' } + - { name: 'conf', build: 'Release', components: 'core', cmake: '-DCMAKE_FIND_PACKAGE_PREFER_CONFIG=ON' } + fail-fast: false + uses: ./.github/workflows/template-linux.yaml + with: + cxx: 'clang++' + image: '2026' + abi: 13 + build: ${{ matrix.config.build }} + components: ${{ matrix.config.components }} + cmake: ${{ matrix.config.cmake }} + + + + # macos-vfx: # if: | # github.event_name != 'workflow_dispatch' || From bb26dcc1d59485c58ccedfad427041540c6fe7ce Mon Sep 17 00:00:00 2001 From: Nick Avramoussis <4256455+Idclip@users.noreply.github.com> Date: Mon, 10 Nov 2025 21:58:38 +1300 Subject: [PATCH 11/14] wip --- .github/workflows/abi-checker.yaml | 11 +- .github/workflows/ax.yml | 9 +- .github/workflows/build.yml | 211 +++++++++++++----------- .github/workflows/houdini.yml | 178 -------------------- .github/workflows/houidni-fetch.yaml | 126 -------------- .github/workflows/template-linux.yaml | 128 ++++++++++++-- .github/workflows/template-macos.yaml | 61 +++++++ .github/workflows/template-windows.yaml | 19 ++- ci/install_llvm_windows.sh | 19 ++- 9 files changed, 327 insertions(+), 435 deletions(-) delete mode 100644 .github/workflows/houdini.yml delete mode 100644 .github/workflows/houidni-fetch.yaml diff --git a/.github/workflows/abi-checker.yaml b/.github/workflows/abi-checker.yaml index e389e247d9..ccbbeb02f1 100644 --- a/.github/workflows/abi-checker.yaml +++ b/.github/workflows/abi-checker.yaml @@ -3,18 +3,13 @@ # It also contains the Houdini Cache jobs which update the CI cache # with new Houdini releases. -name: Weekly +name: ABI Check on: schedule: # run this workflow Sunday 00:00 UTC - cron: '0 0 * * 0' workflow_dispatch: - inputs: - type: - description: 'The type of CI to run (all, houdini, latest, extra, ax, blosc, abi)' - required: true - default: 'all' # Allow subsequent pushes to the same PR or REF to cancel any previous jobs. concurrency: @@ -27,10 +22,6 @@ defaults: jobs: linux-abi-checker: - if: | - github.event_name == 'workflow_dispatch' && - (github.event.inputs.type == 'all' || - github.event.inputs.type == 'abi') runs-on: ubuntu-22.04 env: # The 'abicheck' build type sets these, but older versions of the library diff --git a/.github/workflows/ax.yml b/.github/workflows/ax.yml index 33445234e0..70b4bda54c 100644 --- a/.github/workflows/ax.yml +++ b/.github/workflows/ax.yml @@ -1,13 +1,8 @@ -name: AX +name: AX Grammar on: workflow_dispatch: - inputs: - type: - description: 'The type of CI to run (all, mac, linux, grammar)' - required: true - default: 'all' defaults: run: @@ -15,8 +10,6 @@ defaults: jobs: gen-grammar: - if: | - github.event_name == 'workflow_dispatch' runs-on: ubuntu-latest container: image: aswf/ci-openvdb:2025-clang19.1 diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index b70a33b4c1..215be0e52d 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -8,11 +8,12 @@ on: paths-ignore: - 'CHANGES' - 'CODEOWNERS' + - 'LICENSE' - 'doc/**' - 'openvdb_maya/**' - - 'openvdb_houdini/**' - - 'fvdb/**' + - 'openvdb_wolfram/**' - 'pendingchanges/**' + - 'tsc/**' - '**.md' schedule: # run this workflow Sunday 00:00 UTC @@ -20,7 +21,6 @@ on: merge_group: types: [ checks_requested ] - # Allow subsequent pushes to the same PR or REF to cancel any previous jobs. concurrency: group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} @@ -31,6 +31,9 @@ defaults: shell: bash jobs: + ############################################################################# + ############################################################################# + linux-on-pr: if: github.event_name == 'pull_request' || github.event_name == 'schedule' strategy: @@ -39,6 +42,7 @@ jobs: - { name: 'rel', cxx: clang++, image: '2026', abi: 13, build: 'Release', components: 'core,py,bin,test,', cmake: '' } - { name: 'ax-rel', cxx: clang++, image: '2026', abi: 13, build: 'Release', components: 'core,py,bin,test,ax,axbin,axtest', cmake: '' } - { name: 'nano-rel', cxx: clang++, image: '2024', abi: 13, build: 'Release', components: 'core,nano,nanotest,nanotools', cmake: '-DCMAKE_POSITION_INDEPENDENT_CODE=ON -DUSE_EXPLICIT_INSTANTIATION=OFF' } + - { name: 'houdini', cxx: clang++, image: '2026', abi: 12, build: 'Release', components: 'core,hou,bin,view,render,py,test', cmake: '' } fail-fast: false uses: ./.github/workflows/template-linux.yaml with: @@ -54,18 +58,21 @@ jobs: strategy: matrix: config: - - { name: 'dbg', cxx: clang++, image: '2026', abi: 13, build: 'Debug', components: 'core,py,bin,test,', cmake: '' } + - { name: 'dbg', cxx: clang++, image: '2026', abi: 13, build: 'Debug', components: 'core,py,bin,test,', cmake: '-DOPENVDB_ENABLE_ASSERTS=ON' } - { name: 'gcc', cxx: g++, image: '2026', abi: 13, build: 'Release', components: 'core,py,bin,test,', cmake: '' } - { name: '2025', cxx: clang++, image: '2025', abi: 12, build: 'Release', components: 'core,py,bin,test,', cmake: '' } - { name: '2024', cxx: clang++, image: '2024', abi: 11, build: 'Release', components: 'core,py,bin,test,', cmake: '-DDISABLE_DEPENDENCY_VERSION_CHECKS=ON' } # AX - - { name: 'ax-dbg', cxx: clang++, image: '2026', abi: 13, build: 'Debug', components: 'core,py,bin,test,ax,axbin,axtest', cmake: '' } + - { name: 'ax-dbg', cxx: clang++, image: '2026', abi: 13, build: 'Debug', components: 'core,py,bin,test,ax,axbin,axtest', cmake: '-DOPENVDB_ENABLE_ASSERTS=ON' } - { name: 'ax-gcc', cxx: g++, image: '2026', abi: 13, build: 'Release', components: 'core,py,bin,test,ax,axbin,axtest', cmake: '' } - { name: 'ax-19', cxx: clang++, image: '2025', abi: 12, build: 'Release', components: 'core,py,bin,test,ax,axbin,axtest', cmake: '' } - { name: 'ax-17', cxx: clang++, image: '2024', abi: 11, build: 'Release', components: 'core,py,bin,test,ax,axbin,axtest', cmake: '-DDISABLE_DEPENDENCY_VERSION_CHECKS=ON' } - # For AX builds, to test LLVM 15/16 - { name: 'ax-16', cxx: clang++, image: '2024', abi: 13, build: 'Release', components: 'core,py,ax,axbin,axtest', cmake: '-DDISABLE_DEPENDENCY_VERSION_CHECKS=ON' } - { name: 'ax-15', cxx: clang++, image: '2023', abi: 13, build: 'Release', components: 'core,py,ax,axbin,axtest', cmake: '-DDISABLE_DEPENDENCY_VERSION_CHECKS=ON' } + # Houdini + - { name: 'houdini', cxx: clang++, image: '2026', abi: 12, build: 'Release', components: 'core,hou,bin,view,render,py,test,axcore,axbin,axtest' } + - { name: 'houdini', cxx: g++, image: '2026', abi: 12, build: 'Release', components: 'core,hou,bin,view,render,py,test,axcore,axbin,axtest' } + - { name: 'houdini', cxx: clang++, image: '2024', abi: 11, build: 'Release', components: 'core,hou,bin,view,render,py,test,axcore,axbin,axtest' } # NanoVDB # NOTE: CMAKE_POSITION_INDEPENDENT_CODE set to fix default behaviour change in clang 14 # https://github.com/AcademySoftwareFoundation/aswf-docker/issues/228 @@ -87,103 +94,119 @@ jobs: strategy: matrix: config: - - { name: 'all', build: 'Release', components: 'core,py,bin,test', cmake: '-DOPENVDB_PYTHON_WRAP_ALL_GRID_TYPES=ON -DUSE_BLOSC=ON -DUSE_ZLIB=ON -DUSE_EXR=ON -DUSE_PNG=ON -DOPENVDB_SIMD=SSE42 -DOPENVDB_SIMD=AVX' } - - { name: 'lite', build: 'Release', components: 'core,py,bin,test', cmake: '-DUSE_BLOSC=OFF -DUSE_ZLIB=OFF -DUSE_EXR=OFF -DUSE_PNG=OFF -DOPENVDB_USE_DELAYED_LOADING=OFF' } - - { name: 'half', build: 'Release', components: 'core,py,bin,test', cmake: '-DUSE_IMATH_HALF=ON' } - - { name: 'asan', build: 'asan', components: 'core,test', cmake: '-DDISABLE_DEPENDENCY_VERSION_CHECKS=ON -DNANOVDB_USE_OPENVDB=ON -DOPENVDB_AX_STATIC=OFF -DOPENVDB_CORE_STATIC=OFF -DUSE_BLOSC=OFF' } # We never called blosc_destroy(), so disable blosc to silence these errors - - { name: 'ubsan', build: 'ubsan', components: 'core,test', cmake: '-DDISABLE_DEPENDENCY_VERSION_CHECKS=ON -DCMAKE_CXX_FLAGS="-Wno-deprecated-declarations" ' } - - { name: 'c++20', build: 'Release', components: 'core,test', cmake: '-DCMAKE_CXX_STANDARD=20' } - - { name: 'conf', build: 'Release', components: 'core', cmake: '-DCMAKE_FIND_PACKAGE_PREFER_CONFIG=ON' } + # Core + - { name: 'all', cxx: clang++, image: '2026', abi: 13, build: 'Release', components: 'core,py,bin,test', cmake: '-DOPENVDB_PYTHON_WRAP_ALL_GRID_TYPES=ON -DUSE_BLOSC=ON -DUSE_ZLIB=ON -DUSE_EXR=ON -DUSE_PNG=ON -DOPENVDB_SIMD=SSE42 -DOPENVDB_SIMD=AVX' } + - { name: 'lite', cxx: clang++, image: '2026', abi: 13, build: 'Release', components: 'core,py,bin,test', cmake: '-DUSE_BLOSC=OFF -DUSE_ZLIB=OFF -DUSE_EXR=OFF -DUSE_PNG=OFF -DOPENVDB_USE_DELAYED_LOADING=OFF' } + - { name: 'half', cxx: clang++, image: '2026', abi: 13, build: 'Release', components: 'core,py,bin,test', cmake: '-DUSE_IMATH_HALF=ON' } + - { name: 'asan', cxx: clang++, image: '2026', abi: 13, build: 'asan', components: 'core,test', cmake: '-DDISABLE_DEPENDENCY_VERSION_CHECKS=ON -DNANOVDB_USE_OPENVDB=ON -DOPENVDB_AX_STATIC=OFF -DOPENVDB_CORE_STATIC=OFF -DUSE_BLOSC=OFF' } # We never called blosc_destroy(), so disable blosc to silence these errors + - { name: 'ubsan', cxx: clang++, image: '2026', abi: 13, build: 'ubsan', components: 'core,test', cmake: '-DDISABLE_DEPENDENCY_VERSION_CHECKS=ON -DCMAKE_CXX_FLAGS="-Wno-deprecated-declarations" ' } + - { name: 'c++20', cxx: clang++, image: '2026', abi: 13, build: 'Release', components: 'core,test', cmake: '-DCMAKE_CXX_STANDARD=20' } + - { name: 'conf', cxx: clang++, image: '2026', abi: 13, build: 'Release', components: 'core', cmake: '-DCMAKE_FIND_PACKAGE_PREFER_CONFIG=ON' } + # Houdini + - { name: 'houdini', cxx: clang++, image: '2026', abi: 12, build: 'Debug', components: 'core,hou,bin,view,render,py,test,axcore,axbin,axtest' } + - { name: 'houdini', cxx: g++, image: '2024', abi: 11, build: 'Release', components: 'core,hou,bin,view,render,py,test,axcore,axbin,axtest' } fail-fast: false uses: ./.github/workflows/template-linux.yaml with: - cxx: 'clang++' - image: '2026' - abi: 13 + cxx: ${{ matrix.config.cxx }} + image: ${{ matrix.config.image }} + abi: ${{ matrix.config.abi }} build: ${{ matrix.config.build }} components: ${{ matrix.config.components }} cmake: ${{ matrix.config.cmake }} + ############################################################################# + ############################################################################# + macos-on-pr: + if: github.event_name == 'pull_request' || github.event_name == 'schedule' + strategy: + matrix: + config: + - { name: 'rel', image: 'macos-15', build: 'Release', components: 'core,py,bin,test', llvm: '', cmake: '' } + - { name: 'ax-rel', image: 'macos-15', build: 'Release', components: 'core,py,ax,axbin,axtest', llvm: '21' } + - { name: 'nano-rel', image: 'macos-14', build: 'Release', components: 'core,nano,nanotest,nanotools', cmake: '-DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/install -DUSE_EXPLICIT_INSTANTIATION=OFF -DNANOVDB_USE_CUDA=OFF -DNANOVDB_USE_OPENVDB=ON' } + fail-fast: false + uses: ./.github/workflows/template-macos.yaml + with: + image: ${{ matrix.config.image }} + build: ${{ matrix.config.build }} + components: ${{ matrix.config.components }} + cmake: ${{ matrix.config.cmake }} + llvm: ${{ matrix.config.llvm }} + + macos-on-weekly: + if: github.event_name == 'schedule' + strategy: + matrix: + config: + # Core + - { name: 'rel-mos14', image: 'macos-14', build: 'Release', components: 'core,py,bin,test', llvm: '', cmake: '' } + # AX + - { name: 'ax-rel-mos14', image: 'macos-14', build: 'Release', components: 'core,py,ax,axbin,axtest', llvm: '21' } + - { name: 'ax-rel-20', image: 'macos-15', build: 'Release', components: 'core,py,ax,axbin,axtest', llvm: '20' } + - { name: 'ax-rel-19', image: 'macos-15', build: 'Release', components: 'core,py,ax,axbin,axtest', llvm: '19' } + - { name: 'ax-rel-18', image: 'macos-15', build: 'Release', components: 'core,py,ax,axbin,axtest', llvm: '18' } + - { name: 'ax-rel-17', image: 'macos-15', build: 'Release', components: 'core,py,ax,axbin,axtest', llvm: '17' } + - { name: 'ax-rel-16', image: 'macos-15', build: 'Release', components: 'core,py,ax,axbin,axtest', llvm: '16' } + # Nano + - { name: 'nano-mos14', image: 'macos-14', build: 'Release', components: 'core,nano,nanotest,nanotools', cmake: '-DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/install -DUSE_EXPLICIT_INSTANTIATION=OFF -DNANOVDB_USE_CUDA=OFF -DNANOVDB_USE_OPENVDB=ON' } + - { name: 'nano-mos14', image: 'macos-14', build: 'Debug', components: 'core,nano,nanotest,nanotools', cmake: '-DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/install -DUSE_EXPLICIT_INSTANTIATION=OFF -DNANOVDB_USE_CUDA=OFF -DNANOVDB_USE_OPENVDB=ON' } + fail-fast: false + uses: ./.github/workflows/template-macos.yaml + with: + image: ${{ matrix.config.image }} + build: ${{ matrix.config.build }} + components: ${{ matrix.config.components }} + cmake: ${{ matrix.config.cmake }} + llvm: ${{ matrix.config.llvm }} + ############################################################################# + ############################################################################# - # macos-vfx: - # if: | - # github.event_name != 'workflow_dispatch' || - # github.event.inputs.type == 'all' || - # github.event.inputs.type == 'mac' - # strategy: - # matrix: - # config: - # - { image: 'macos-14', build: 'Release', components: 'core,python,bin,test', llvm: '', cmake: '' } - # - { image: 'macos-15', build: 'Release', components: 'core,python,bin,test', llvm: '', cmake: '' } - # # core,python,ax,axbin,axtest - # - { image: 'macos-15', build: 'Release', components: 'core,python,ax,axbin,axtest', llvm: '21' } - # - { image: 'macos-14', build: 'Release', components: 'core,python,ax,axbin,axtest', llvm: '21' } - # - { image: 'macos-14', build: 'Release', components: 'core,python,ax,axbin,axtest', llvm: '20' } - # - { image: 'macos-14', build: 'Release', components: 'core,python,ax,axbin,axtest', llvm: '19' } - # - { image: 'macos-14', build: 'Release', components: 'core,python,ax,axbin,axtest', llvm: '18' } - # - { image: 'macos-14', build: 'Release', components: 'core,python,ax,axbin,axtest', llvm: '17' } - # - { image: 'macos-14', build: 'Release', components: 'core,python,ax,axbin,axtest', llvm: '16' } - # - { image: 'macos-latest', build: 'Release', components: 'core,python,ax,axbin,axtest', llvm: '20', cmake: '-DUSE_EXPLICIT_INSTANTIATION=OFF ' } - # # Nano - # - { image: 'macos-14', build: 'Release', components: 'core,nano,nanotest,nanotools', cmake: '-DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/install -DUSE_EXPLICIT_INSTANTIATION=OFF -DNANOVDB_USE_CUDA=OFF -DNANOVDB_USE_OPENVDB=ON' } - # - { image: 'macos-14', build: 'Debug', components: 'core,nano,nanotest,nanotools', cmake: '-DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/install -DUSE_EXPLICIT_INSTANTIATION=OFF -DNANOVDB_USE_CUDA=OFF -DNANOVDB_USE_OPENVDB=ON' } - # fail-fast: false - # uses: ./.github/workflows/template-macos.yaml - # with: - # image: ${{ matrix.config.image }} - # build: ${{ matrix.config.build }} - # components: ${{ matrix.config.components }} - # cmake: ${{ matrix.config.cmake }} - # llvm: ${{ matrix.config.llvm }} + win-on-pr: + if: github.event_name == 'pull_request' || github.event_name == 'schedule' + strategy: + matrix: + config: + - { name: 'rel', vc: 'x64-windows', llvm: '', build: 'Release', components: 'core,bin,py,test', cmake: '' } + - { name: 'ax-rel', vc: 'x64-windows-static', llvm: '18.1.0', build: 'Release', components: 'core,ax,axbin,axtest', cmake: '' } + - { name: 'nano-rel', vc: 'x64-windows', llvm: '', build: 'Release', components: 'core,nano,nanotest,nanotools', cmake: '' } + fail-fast: false + uses: ./.github/workflows/template-windows.yaml + with: + vc: ${{ matrix.config.vc }} + build: ${{ matrix.config.build }} + components: ${{ matrix.config.components }} + cmake: ${{ matrix.config.cmake }} + llvm: ${{ matrix.config.llvm }} - # windows: - # # Windows CI. Tests a dynamic build with MD. - # if: | - # github.event_name != 'workflow_dispatch' || - # github.event.inputs.type == 'all' || - # github.event.inputs.type == 'win' - # strategy: - # matrix: - # config: - # # static build of blosc from vcpkg does not build internal sources. - # # USE_STATIC_DEPENDENCIES is required for IlmBase/OpenEXR defines and - # # Boost as both shared and static libs are installed. - # # USE_EXPLICIT_INSTANTIATION is disabled for debug static libraries - # # due to disk space constraints - # - { vc: 'x64-windows-static', llvm: '', crt: '', build: 'Release', components: 'core,bin,test', cmake: '-DOPENVDB_CORE_SHARED=OFF -DUSE_STATIC_DEPENDENCIES=ON -DBLOSC_USE_EXTERNAL_SOURCES=ON' } - # - { vc: 'x64-windows', llvm: '', crt: '', build: 'Release', components: 'core,bin,python,test', cmake: '-DOPENVDB_CORE_STATIC=OFF' } - # - { vc: 'x64-windows', llvm: '', crt: '', build: 'Debug', components: 'core,bin,python,test', cmake: '-DOPENVDB_CORE_STATIC=OFF' } - # # AX - # # static build of blosc from vcpkg does not build internal sources. - # # USE_STATIC_DEPENDENCIES is required for IlmBase/OpenEXR defines and - # # Boost as both shared and static libs are installed. - # # @todo We don't currently run the axtests with shared builds of ax - # # due to symbol issues using LLVM as a static lib (which is the only - # # option on Windows). - # # @note currently only test static builds with MT as building LLVM as - # # a shared lib on windows is a bit dicey - # - { vc: 'x64-windows-static', llvm: '18.1.0', crt: 'MultiThreaded', components: 'core,ax,axbin,axtest', build: 'Release', cmake: '-DOPENVDB_AX_TEST_CMD_DOWNLOADS=OFF -DUSE_EXPLICIT_INSTANTIATION=OFF -DOPENVDB_CORE_SHARED=OFF -DOPENVDB_AX_SHARED=OFF -DUSE_STATIC_DEPENDENCIES=ON -DBLOSC_USE_EXTERNAL_SOURCES=ON' } - # - { vc: 'x64-windows-static', llvm: '18.1.0', crt: 'MultiThreadedDebug', components: 'core,ax,axbin,axtest', build: 'Debug', cmake: '-DOPENVDB_AX_TEST_CMD_DOWNLOADS=OFF -DUSE_EXPLICIT_INSTANTIATION=OFF -DOPENVDB_CORE_SHARED=OFF -DOPENVDB_AX_SHARED=OFF -DUSE_STATIC_DEPENDENCIES=ON -DBLOSC_USE_EXTERNAL_SOURCES=ON' } - # - { vc: 'x64-windows', llvm: '18.1.0', crt: 'MultiThreadedDLL', components: 'core,ax,axbin', build: 'Release', cmake: '-DOPENVDB_AX_TEST_CMD_DOWNLOADS=OFF -DUSE_EXPLICIT_INSTANTIATION=OFF -DOPENVDB_CORE_STATIC=OFF -DOPENVDB_AX_STATIC=OFF' } - # - { vc: 'x64-windows-static', llvm: '15.0.0', crt: 'MultiThreaded', components: 'core,ax,axbin,axtest', build: 'Release', cmake: '-DOPENVDB_AX_TEST_CMD_DOWNLOADS=OFF -DUSE_EXPLICIT_INSTANTIATION=OFF -DOPENVDB_CORE_SHARED=OFF -DOPENVDB_AX_SHARED=OFF -DUSE_STATIC_DEPENDENCIES=ON -DBLOSC_USE_EXTERNAL_SOURCES=ON' } - # # Nano - # - { build: 'Release', llvm: '', crt: '', components: 'core,nano,nanotest,nanotools', cmake: '-DDUSE_EXPLICIT_INSTANTIATION=OFF' } - # # static build of blosc from vcpkg does not build internal sources. - # # USE_STATIC_DEPENDENCIES is required for IlmBase/OpenEXR defines and - # # Boost as both shared and static libs are installed. - # - { vc: 'x64-windows-static', llvm: '', crt: '', build: 'Release', cmake: '-DOPENVDB_CORE_SHARED=OFF -DUSE_STATIC_DEPENDENCIES=ON -DBLOSC_USE_EXTERNAL_SOURCES=ON -DCMAKE_MSVC_RUNTIME_LIBRARY=MultiThreaded' } - # - { vc: 'x64-windows-static', llvm: '', crt: '', build: 'Debug', cmake: '-DOPENVDB_CORE_SHARED=OFF -DUSE_STATIC_DEPENDENCIES=ON -DBLOSC_USE_EXTERNAL_SOURCES=ON -DCMAKE_MSVC_RUNTIME_LIBRARY=MultiThreadedDebug' } - # - { vc: 'x64-windows', llvm: '', crt: '', build: 'Release', cmake: '-DOPENVDB_CORE_STATIC=OFF' } - # - { vc: 'x64-windows', llvm: '', crt: '', build: 'Debug', cmake: '-DOPENVDB_CORE_STATIC=OFF' } - # fail-fast: false - # uses: ./.github/workflows/template-windows.yaml - # with: - # vc: ${{ matrix.config.vc }} - # build: ${{ matrix.config.build }} - # components: ${{ matrix.config.components }} - # cmake: ${{ matrix.config.cmake }} - # llvm: ${{ matrix.config.llvm }} - # crt: ${{ matrix.config.crt }} + win-on-merge: + if: github.event_name == 'merge_group' || github.event_name == 'schedule' + strategy: + matrix: + config: + - { name: 'rel-static', vc: 'x64-windows-static', llvm: '', build: 'Release', components: 'core,bin,test', cmake: '' } + - { name: 'rel-dbg', vc: 'x64-windows', llvm: '', build: 'Debug', components: 'core,bin,py,test', cmake: '-DDOPENVDB_ENABLE_ASSERTS=ON' } + # AX + # @todo We don't currently run the axtests with shared builds of ax + # due to symbol issues using LLVM as a static lib (which is the only + # option on Windows). + # @note currently only test static builds with MT as building LLVM as + # a shared lib on windows is a bit dicey + - { name: 'ax-shared', vc: 'x64-windows', llvm: '18.1.0', build: 'Release', components: 'core,ax,axbin', cmake: '' } + - { name: 'ax-dbg', vc: 'x64-windows-static', llvm: '18.1.0', build: 'Debug', components: 'core,ax,axbin,axtest', cmake: '' } + - { name: 'ax-15', vc: 'x64-windows-static', llvm: '15.0.0', build: 'Release', components: 'core,ax,axbin,axtest', cmake: '' } + # Nano + - { name: 'nano-static-rel', vc: 'x64-windows-static', llvm: '', build: 'Release', components: 'core,nano,nanotest,nanotools', cmake: '' } + - { name: 'nano-static-dbg', vc: 'x64-windows-static', llvm: '', build: 'Debug', components: 'core,nano,nanotest,nanotools', cmake: '' } + - { name: 'nano-dbg', vc: 'x64-windows', llvm: '', build: 'Debug', components: 'core,nano,nanotest,nanotools', cmake: '' } + fail-fast: false + uses: ./.github/workflows/template-windows.yaml + with: + vc: ${{ matrix.config.vc }} + build: ${{ matrix.config.build }} + components: ${{ matrix.config.components }} + cmake: ${{ matrix.config.cmake }} + llvm: ${{ matrix.config.llvm }} diff --git a/.github/workflows/houdini.yml b/.github/workflows/houdini.yml deleted file mode 100644 index c5f275e9b1..0000000000 --- a/.github/workflows/houdini.yml +++ /dev/null @@ -1,178 +0,0 @@ - -name: Houdini - -on: - push: - branches: - - 'master' - - 'feature/**' - - 'pr/**' - paths-ignore: - - 'CHANGES' - - 'CODEOWNERS' - - 'doc/**' - - 'nanovdb/**' - - 'openvdb_maya/**' - - 'fvdb/**' - - 'pendingchanges/**' - - '**.md' - pull_request: - branches: - - '**' - paths-ignore: - - 'CHANGES' - - 'CODEOWNERS' - - 'doc/**' - - 'nanovdb/**' - - 'openvdb_maya/**' - - 'fvdb/**' - - 'pendingchanges/**' - - '**.md' - schedule: - # run this workflow every day 7am UTC - - cron: '0 7 * * *' - workflow_dispatch: - -# Allow subsequent pushes to the same PR or REF to cancel any previous jobs. -concurrency: - group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} - cancel-in-progress: true - -defaults: - run: - shell: bash - -jobs: - checksecret: - # Check that valid github secrets have been set. This isn't needed to retrieve - # the cache, but ensures that the job doens't start with an empty cache - name: Verify Houdini Secrets - runs-on: ubuntu-latest - outputs: - HOUDINI_SECRETS: ${{ steps.check.outputs.HOUDINI_SECRETS }} - steps: - - id: check - env: - HOUDINI_CLIENT_ID: ${{ secrets.HOUDINI_CLIENT_ID }} - HOUDINI_SECRET_KEY: ${{ secrets.HOUDINI_SECRET_KEY }} - run: echo "HOUDINI_SECRETS=${{ env.HOUDINI_CLIENT_ID != '' && env.HOUDINI_SECRET_KEY != '' }}" >> $GITHUB_OUTPUT - - name: Skip Next Jobs - if: steps.check.outputs.HOUDINI_SECRETS != 'true' - run: echo "HOUDINI_CLIENT_ID and HOUDINI_SECRET_KEY GitHub Action Secrets needs to be set to install Houdini builds" - - linux-vfx-houdini: - needs: [checksecret] - if: > - ${{ needs.checksecret.outputs.HOUDINI_SECRETS == 'true' || - github.repository_owner == 'AcademySoftwareFoundation' }} - runs-on: ${{ (github.repository_owner == 'AcademySoftwareFoundation' && 'ubuntu-22.04-8c-32g-300h') || 'ubuntu-latest' }} - name: hou:${{ matrix.config.hou_hash }}-vfx:${{ matrix.config.image }}-cxx:${{ matrix.config.cxx }}-build:${{ matrix.config.build }} - container: - image: aswf/ci-base:${{ matrix.config.image }} - env: - CXX: ${{ matrix.config.cxx }} - CCACHE_DIR: /tmp/ccache - strategy: - matrix: - config: - - { cxx: clang++, image: '2026', hou_hash: '21_0', build: 'Release', components: 'core,hou,bin,view,render,python,test,axcore,axbin,axtest' } - - { cxx: clang++, image: '2026', hou_hash: '21_0', build: 'Debug', components: 'core,hou,bin,view,render,python,test,axcore,axbin,axtest' } - - { cxx: g++, image: '2026', hou_hash: '21_0', build: 'Release', components: 'core,hou,bin,view,render,python,test,axcore,axbin,axtest' } - - { cxx: clang++, image: '2024', hou_hash: '20_5', build: 'Release', components: 'core,hou,bin,view,render,python,test,axcore,axbin,axtest' } - - { cxx: g++, image: '2024', hou_hash: '20_5', build: 'Release', components: 'core,hou,bin,view,render,python,test,axcore,axbin,axtest' } - fail-fast: false - steps: - - uses: actions/checkout@v3 - - name: nanobind - run: ./ci/install_nanobind.sh 2.5.0 - - name: install_gtest - run: ./ci/install_gtest.sh latest - - name: timestamp - id: timestamp - run: echo "timestamp=$(date -u +'%Y-%m-%dT%H:%M:%SZ')" >> $GITHUB_OUTPUT - - name: ccache - # don't use ccache for debug builds - if: matrix.config.build == 'Release' - id: ccache - uses: actions/cache@v3 - with: - path: /tmp/ccache - key: linux-vfx-hou${{ matrix.config.hou_hash }}-${{ matrix.config.image }}-${{ matrix.config.cxx }}-${{ steps.timestamp.outputs.timestamp }} - restore-keys: linux-vfx-hou${{ matrix.config.hou_hash }}-${{ matrix.config.image }}-${{ matrix.config.cxx }}- - - name: fetch_houdini - uses: actions/cache/restore@v3 - with: - path: hou - key: dummy-houdini${{ matrix.config.hou_hash }}-${{ steps.timestamp.outputs.timestamp }} - restore-keys: vdb-v5-houdini${{ matrix.config.hou_hash }}- - - name: validate_houdini - run: test -f "hou/hou.tar.gz" - # Make sure that the unpacked install is NOT in the root of the OpenVDB checkout - # otherwise CMake's install RPATHs wil not work correctly. - - name: install_houdini - run: | - mkdir $HOME/houdini_install - cp hou/hou.tar.gz $HOME/houdini_install/hou.tar.gz - cd $HOME/houdini_install && tar -xzf hou.tar.gz && cd - - - name: build - run: | - ./ci/build.sh -v \ - --build-type="${{ matrix.config.build }}" \ - --components="${{ matrix.config.components }}" \ - --cargs=\" \ - -DHOUDINI_ROOT=$HOME/houdini_install/hou \ - -DOPENVDB_BUILD_HOUDINI_ABITESTS=OFF \ - -DOPENVDB_HOUDINI_INSTALL_PREFIX=/tmp \ - -DDISABLE_CMAKE_SEARCH_PATHS=ON \ - -DDISABLE_DEPENDENCY_VERSION_CHECKS=ON \ - \" - - name: test - if: matrix.config.build == 'Release' - run: cd build && ctest -V - # Keep ccache light by stripping out any caches not accessed in the last day - - name: ccache_clean - if: matrix.config.build == 'Release' - run: ccache --evict-older-than 1d - - macos-houdini: - needs: [checksecret] - if: > - ${{ needs.checksecret.outputs.HOUDINI_SECRETS == 'true' || - github.repository_owner == 'AcademySoftwareFoundation' }} - runs-on: macos-latest - steps: - - uses: actions/checkout@v3 - - name: fetch_houdini - uses: actions/cache/restore@v3 - with: - path: hou - key: dummy-houdini - restore-keys: vdb-v5-houdini-macos- - - name: validate_houdini - run: test -f "hou/hou.tar.gz" - # Make sure that the unpacked install is NOT in the root of the OpenVDB checkout - # otherwise CMake's install RPATHs wil not work correctly. - - name: install_houdini - run: | - mkdir $HOME/houdini_install - cp hou/hou.tar.gz $HOME/houdini_install/hou.tar.gz - cd $HOME/houdini_install && tar -xzf hou.tar.gz && cd - - - name: install_deps - run: ./ci/install_macos.sh 20 - - name: build - run: | - ./ci/build.sh -v \ - --build-type=Release \ - --components="core,hou,bin,view,render,test,axcore,axbin" \ - --cargs=\" \ - -DHOUDINI_ROOT=$HOME/houdini_install/hou \ - -DOPENVDB_BUILD_HOUDINI_ABITESTS=OFF \ - -DOPENVDB_HOUDINI_INSTALL_PREFIX=/tmp \ - -DDISABLE_CMAKE_SEARCH_PATHS=ON \ - -DDISABLE_DEPENDENCY_VERSION_CHECKS=ON \ - -DUSE_EXPLICIT_INSTANTIATION=OFF \ - -DLLVM_DIR=/opt/homebrew/opt/llvm@20/lib/cmake/llvm \ - -DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/install \ - \" - - name: test - run: cd build && ctest -V diff --git a/.github/workflows/houidni-fetch.yaml b/.github/workflows/houidni-fetch.yaml deleted file mode 100644 index 400efe4289..0000000000 --- a/.github/workflows/houidni-fetch.yaml +++ /dev/null @@ -1,126 +0,0 @@ -# This workflow runs once a week and tests a variety of configurations, -# dependencies and other specific or expensive checkes (sanitizers). -# It also contains the Houdini Cache jobs which update the CI cache -# with new Houdini releases. - -name: Weekly - -on: - schedule: - # run this workflow Sunday 00:00 UTC - - cron: '0 0 * * 0' - workflow_dispatch: - inputs: - type: - description: 'The type of CI to run (all, houdini, latest, extra, ax, blosc, abi)' - required: true - default: 'all' - -# Allow subsequent pushes to the same PR or REF to cancel any previous jobs. -concurrency: - group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} - cancel-in-progress: true - -defaults: - run: - shell: bash - -jobs: - ############################################################################# - ################################## Houdini ################################## - ############################################################################# - - # Check that valid github secrets have been set for the ability to - # download Houdini and cache it. The secrets are used in download_houdini.py - checksecret: - name: Verify Houdini Secrets - runs-on: ubuntu-latest - outputs: - HOUDINI_SECRETS: ${{ steps.check.outputs.HOUDINI_SECRETS }} - steps: - - id: check - env: - HOUDINI_CLIENT_ID: ${{ secrets.HOUDINI_CLIENT_ID }} - HOUDINI_SECRET_KEY: ${{ secrets.HOUDINI_SECRET_KEY }} - run: echo "HOUDINI_SECRETS=${{ env.HOUDINI_CLIENT_ID != '' && env.HOUDINI_SECRET_KEY != '' }}" >> $GITHUB_OUTPUT - - name: Skip Next Jobs - if: steps.check.outputs.HOUDINI_SECRETS != 'true' - run: echo "HOUDINI_CLIENT_ID and HOUDINI_SECRET_KEY GitHub Action Secrets needs to be set to install Houdini builds" - # Explicitly error on the ASWF repo, we expect this secret to always exist - - name: Error ASWF - if: steps.check.outputs.HOUDINI_SECRETS != 'true' && github.repository_owner == 'AcademySoftwareFoundation' - run: exit 1 - - # download the latest production version of Houdini X, strip out headers, - # libraries and binaries required for building OpenVDB and put it into - # the GitHub Actions cache - linux_houdini: - needs: [checksecret] - if: | - (needs.checksecret.outputs.HOUDINI_SECRETS == 'true') && - (github.event_name != 'workflow_dispatch' || - github.event.inputs.type == 'all' || - github.event.inputs.type == 'houdini') - runs-on: ${{ (github.repository_owner == 'AcademySoftwareFoundation' && 'ubuntu-22.04-8c-32g-300h') || 'ubuntu-latest' }} - name: linux-houdini:${{ matrix.config.hou_hash }} - env: - CXX: clang++ - HOUDINI_CLIENT_ID: ${{ secrets.HOUDINI_CLIENT_ID }} - HOUDINI_SECRET_KEY: ${{ secrets.HOUDINI_SECRET_KEY }} - strategy: - matrix: - config: - - { houdini_version: '21.0', platform: 'linux_x86_64_gcc11.2', hou_hash: '21_0' } - - { houdini_version: '20.5', platform: 'linux_x86_64_gcc11.2', hou_hash: '20_5' } - fail-fast: false - container: - image: aswf/ci-base:2024 - steps: - - uses: actions/checkout@v3 - - name: timestamp - id: timestamp - run: echo "timestamp=$(date -u +'%Y-%m-%dT%H:%M:%SZ')" >> $GITHUB_OUTPUT - - name: download_houdini - run: ./ci/download_houdini.sh ${{ matrix.config.houdini_version }} ${{ matrix.config.platform }} --prod - - name: install_houdini - run: | - mkdir $HOME/houdini_install - cp hou/hou.tar.gz $HOME/houdini_install/hou.tar.gz - cd $HOME/houdini_install && tar -xzf hou.tar.gz && cd - - - name: write_houdini_cache - uses: actions/cache/save@v3 - with: - path: hou - key: vdb-v5-houdini${{ matrix.config.hou_hash }}-${{ steps.timestamp.outputs.timestamp }} - - macos_houdini: - needs: [checksecret] - if: | - (needs.checksecret.outputs.HOUDINI_SECRETS == 'true') && - (github.event_name != 'workflow_dispatch' || - github.event.inputs.type == 'all' || - github.event.inputs.type == 'houdini') - # Note that macos-14 (current macos-latest) switches to M1. We could instead test - # the arm build here instead of the x86 one. - runs-on: macos-latest - name: macos-houdini - env: - HOUDINI_CLIENT_ID: ${{ secrets.HOUDINI_CLIENT_ID }} - HOUDINI_SECRET_KEY: ${{ secrets.HOUDINI_SECRET_KEY }} - steps: - - uses: actions/checkout@v3 - - name: timestamp - id: timestamp - run: echo "timestamp=$(date -u +'%Y-%m-%dT%H:%M:%SZ')" >> $GITHUB_OUTPUT - - name: download_houdini - run: ./ci/download_houdini.sh 21.0 macosx_arm64_clang15.0_14 --prod - - name: install_houdini - run: | - mkdir $HOME/houdini_install - cp hou/hou.tar.gz $HOME/houdini_install/hou.tar.gz - cd $HOME/houdini_install && tar -xzf hou.tar.gz && cd - - - name: write_houdini_cache - uses: actions/cache/save@v3 - with: - path: hou - key: vdb-v5-houdini-macos-${{ steps.timestamp.outputs.timestamp }} diff --git a/.github/workflows/template-linux.yaml b/.github/workflows/template-linux.yaml index f785852b8e..fd12935df0 100644 --- a/.github/workflows/template-linux.yaml +++ b/.github/workflows/template-linux.yaml @@ -30,12 +30,10 @@ on: cmake: required: false type: string - flags: - required: false - type: string jobs: linux: + if: ${{ !contains(inputs.components, 'hou') }} runs-on: ${{ (github.repository_owner == 'AcademySoftwareFoundation' && 'ubuntu-22.04-8c-32g-300h') || 'ubuntu-latest' }} name: ${{ inputs.name }} container: @@ -45,14 +43,17 @@ jobs: CCACHE_DIR: /tmp/ccache steps: - uses: actions/checkout@v3 + # Install nanobind if the python module has been requested - name: nanobind - if: contains(inputs.components, 'python') + if: contains(inputs.components, 'py') run: ./ci/install_nanobind.sh 2.5.0 + # Install cuda if nanovdb has been requested - name: setup_cuda_12 if: contains(inputs.components, 'nano') run: | echo "/usr/local/cuda-12/bin" >> $GITHUB_PATH echo "LD_LIBRARY_PATH=/usr/local/cuda-12/lib64:$LD_LIBRARY_PATH" >> $GITHUB_ENV + # Initialize ccache - name: timestamp id: timestamp run: echo "timestamp=$(date -u +'%Y-%m-%dT%H:%M:%SZ')" >> $GITHUB_OUTPUT @@ -65,26 +66,31 @@ jobs: path: /tmp/ccache key: linux-vfx${{ inputs.image }}-abi${{ inputs.abi }}-${{ inputs.cxx }}-${{ steps.timestamp.outputs.timestamp }} restore-keys: linux-vfx${{ inputs.image }}-abi${{ inputs.abi }}-${{ inputs.cxx }}- + # Build - name: build run: > ./ci/build.sh -v --build-type=${{ inputs.build }} --components=\"${{ inputs.components }}\" - --cargs=\" - -DOPENVDB_CXX_STRICT=ON - -DOPENVDB_AX_TEST_CMD_DOWNLOADS=ON - -DOPENVDB_ABI_VERSION_NUMBER=${{ inputs.abi }} - -DNANOVDB_USE_CUDA=ON - -DNANOVDB_USE_OPENVDB=ON - -DCMAKE_CUDA_ARCHITECTURES="80" - ${{ inputs.cmake }} + --cargs=\" \ + `################## Default CMake args for all components ##################` \ + -DOPENVDB_CXX_STRICT=ON \ + `################## Default CMake args for AX components ###################` \ + -DOPENVDB_AX_TEST_CMD_DOWNLOADS=ON \ + -DOPENVDB_ABI_VERSION_NUMBER=${{ inputs.abi }} \ + `################## Default CMake args for NanoVDB components ##############` \ + -DNANOVDB_USE_CUDA=ON \ + -DNANOVDB_USE_OPENVDB=ON \ + -DCMAKE_CUDA_ARCHITECTURES="80" \ + `################## Input CMake args (can override the above) ###############` \ + ${{ inputs.cmake }} \ \" + # Test - name: test - # Skip Debug on commits as they take a while. - if: github.event_name == 'schedule' || github.event_name == 'workflow_dispatch' || matrix.config.build == 'Release' run: | cd build && ctest -V -E ".*cuda.*|.*mgpu.*" cd - && ./ci/test_install.sh + # Run AX doxygen tests if requested - name: test_ax_doxygen_examples if: contains(inputs.components, 'ax') run: ./ci/extract_test_examples.sh @@ -92,3 +98,97 @@ jobs: - name: ccache_clean if: inputs.build == 'Release' run: ccache --evict-older-than 1d + + checksecret: + if: contains(inputs.components, 'hou') + # Check that valid github secrets have been set. This isn't needed to retrieve + # the cache, but ensures that the job doens't start with an empty cache + name: Verify Houdini Secrets + runs-on: ubuntu-latest + outputs: + HOUDINI_SECRETS: ${{ steps.check.outputs.HOUDINI_SECRETS }} + steps: + - id: check + env: + HOUDINI_CLIENT_ID: ${{ secrets.HOUDINI_CLIENT_ID }} + HOUDINI_SECRET_KEY: ${{ secrets.HOUDINI_SECRET_KEY }} + run: | + echo "HOUDINI_SECRETS=${{ env.HOUDINI_CLIENT_ID != '' && env.HOUDINI_SECRET_KEY != '' }}" >> $GITHUB_OUTPUT + echo "H_VERSION=${{ inputs.abi == 12 && '21_0' || inputs.abi == 11 && '20_5' || 'INVALID' }}" >> $GITHUB_OUTPUT + - name: Skip Next Jobs + if: steps.check.outputs.HOUDINI_SECRETS != 'true' + run: echo "HOUDINI_CLIENT_ID and HOUDINI_SECRET_KEY GitHub Action Secrets needs to be set to install Houdini builds" + + linux-houdini: + needs: [checksecret] + if: > + ${{ contains(inputs.components, 'hou') && (needs.checksecret.outputs.HOUDINI_SECRETS == 'true' || + github.repository_owner == 'AcademySoftwareFoundation') }} + runs-on: ${{ (github.repository_owner == 'AcademySoftwareFoundation' && 'ubuntu-22.04-8c-32g-300h') || 'ubuntu-latest' }} + name: ${{ inputs.name }} + container: + image: aswf/ci-base:${{ inputs.image }} + env: + CXX: ${{ inputs.cxx }} + CCACHE_DIR: /tmp/ccache + steps: + - uses: actions/checkout@v3 + # Install nanobind if the python module has been requested + - name: nanobind + if: contains(inputs.components, 'py') + run: ./ci/install_nanobind.sh 2.5.0 + # Fetch/install houdini if hou has been requested + # Make sure that the unpacked install is NOT in the root of the OpenVDB checkout + # otherwise CMake's install RPATHs wil not work correctly. + - name: fetch_houdini + uses: actions/cache/restore@v3 + with: + path: hou + key: dummy-houdini${{ ineeds.checksecret.outputs.H_VERSION }}-${{ steps.timestamp.outputs.timestamp }} + restore-keys: vdb-v5-houdini${{ ineeds.checksecret.outputs.H_VERSION }}- + - name: install_houdini + run: + run: | + test -f "hou/hou.tar.gz" + mkdir $HOME/houdini_install + cp hou/hou.tar.gz $HOME/houdini_install/hou.tar.gz + cd $HOME/houdini_install && tar -xzf hou.tar.gz && cd - + # Initialize ccache + - name: timestamp + id: timestamp + run: echo "timestamp=$(date -u +'%Y-%m-%dT%H:%M:%SZ')" >> $GITHUB_OUTPUT + - name: ccache + # don't use ccache for debug builds + if: inputs.build == 'Release' + id: ccache + uses: actions/cache@v3 + with: + path: /tmp/ccache + key: linux-vfx-hou${{ ineeds.checksecret.outputs.H_VERSION }}-${{ inputs.image }}-${{ inputs.cxx }}-${{ steps.timestamp.outputs.timestamp }} + restore-keys: linux-vfx-hou${{ ineeds.checksecret.outputs.H_VERSION }}-${{ inputs.image }}-${{ inputs.cxx }}- + # Build + - name: build + run: > + ./ci/build.sh -v + --build-type=${{ inputs.build }} + --components=\"${{ inputs.components }}\" + --cargs=\" \ + `################## Default CMake args for all components ##################` \ + -DOPENVDB_CXX_STRICT=ON \ + `################## Default CMake args for Houdini components ###############` \ + -DHOUDINI_ROOT=$HOME/houdini_install/hou \ + -DOPENVDB_BUILD_HOUDINI_ABITESTS=OFF \ + -DOPENVDB_HOUDINI_INSTALL_PREFIX=/tmp \ + -DDISABLE_CMAKE_SEARCH_PATHS=ON \ + -DDISABLE_DEPENDENCY_VERSION_CHECKS=ON \ + `################## Input CMake args (can override the above) ###############` \ + ${{ inputs.cmake }} \ + \" + # Test + - name: test + run: cd build && ctest -V + # Keep ccache light by stripping out any caches not accessed in the last day + - name: ccache_clean + if: inputs.build == 'Release' + run: ccache --evict-older-than 1d + diff --git a/.github/workflows/template-macos.yaml b/.github/workflows/template-macos.yaml index f56eaf1832..cbd973ad3f 100644 --- a/.github/workflows/template-macos.yaml +++ b/.github/workflows/template-macos.yaml @@ -53,3 +53,64 @@ jobs: if: contains(inputs.components, 'ax') run: ./ci/extract_test_examples.sh + checksecret: + if: contains(inputs.components, 'hou') + # Check that valid github secrets have been set. This isn't needed to retrieve + # the cache, but ensures that the job doens't start with an empty cache + name: Verify Houdini Secrets + runs-on: ubuntu-latest + outputs: + HOUDINI_SECRETS: ${{ steps.check.outputs.HOUDINI_SECRETS }} + steps: + - id: check + env: + HOUDINI_CLIENT_ID: ${{ secrets.HOUDINI_CLIENT_ID }} + HOUDINI_SECRET_KEY: ${{ secrets.HOUDINI_SECRET_KEY }} + run: echo "HOUDINI_SECRETS=${{ env.HOUDINI_CLIENT_ID != '' && env.HOUDINI_SECRET_KEY != '' }}" >> $GITHUB_OUTPUT + - name: Skip Next Jobs + if: steps.check.outputs.HOUDINI_SECRETS != 'true' + run: echo "HOUDINI_CLIENT_ID and HOUDINI_SECRET_KEY GitHub Action Secrets needs to be set to install Houdini builds" + + macos-houdini: + needs: [checksecret] + if: > + ${{ needs.checksecret.outputs.HOUDINI_SECRETS == 'true' || + github.repository_owner == 'AcademySoftwareFoundation' }} + runs-on: macos-latest + steps: + - uses: actions/checkout@v3 + - name: fetch_houdini + uses: actions/cache/restore@v3 + with: + path: hou + key: dummy-houdini + restore-keys: vdb-v5-houdini-macos- + - name: validate_houdini + run: test -f "hou/hou.tar.gz" + # Make sure that the unpacked install is NOT in the root of the OpenVDB checkout + # otherwise CMake's install RPATHs wil not work correctly. + - name: install_houdini + run: | + mkdir $HOME/houdini_install + cp hou/hou.tar.gz $HOME/houdini_install/hou.tar.gz + cd $HOME/houdini_install && tar -xzf hou.tar.gz && cd - + - name: install_llvm + if: ${{ inputs.llvm != '' }} + run: ./ci/install_macos.sh ${{ inputs.llvm }} + - name: build + run: | + ./ci/build.sh -v \ + --build-type=Release \ + --components="core,hou,bin,view,render,test,axcore,axbin" \ + --cargs=\" \ + -DHOUDINI_ROOT=$HOME/houdini_install/hou \ + -DOPENVDB_BUILD_HOUDINI_ABITESTS=OFF \ + -DOPENVDB_HOUDINI_INSTALL_PREFIX=/tmp \ + -DDISABLE_CMAKE_SEARCH_PATHS=ON \ + -DDISABLE_DEPENDENCY_VERSION_CHECKS=ON \ + -DUSE_EXPLICIT_INSTANTIATION=OFF \ + -DLLVM_DIR=/opt/homebrew/opt/llvm@${{ inputs.llvm }}/lib/cmake/llvm \ + -DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/install \ + \" + - name: test + run: cd build && ctest -V diff --git a/.github/workflows/template-windows.yaml b/.github/workflows/template-windows.yaml index 43926eff89..74fcff01ee 100644 --- a/.github/workflows/template-windows.yaml +++ b/.github/workflows/template-windows.yaml @@ -21,9 +21,6 @@ on: llvm: required: false type: string - crt: - required: false - type: string jobs: windows: @@ -50,7 +47,7 @@ jobs: - name: llvm if: contains(inputs.components, 'ax') shell: bash - run: ./ci/install_llvm_windows.sh ${{ inputs.llvm }} ${{ inputs.crt }} + run: ./ci/install_llvm_windows.sh ${{ inputs.llvm }} ${{ inputs.vc }} ${{ inputs.build }} - name: install_numpy shell: powershell if: ${{ !contains(inputs.vc, 'static')}} @@ -59,22 +56,36 @@ jobs: if: contains(inputs.components, 'nano') shell: powershell run: .\ci\install_windows_cuda.ps1 + # static build of blosc from vcpkg does not build internal sources. + # USE_STATIC_DEPENDENCIES is required for IlmBase/OpenEXR defines and + # USE_EXPLICIT_INSTANTIATION is disabled for debug static libraries due to disk space constraints - name: build run: > ./ci/build.sh -v --config='Release' --components='core,bin,view,render,python,test' --cargs=\' + `################## Default CMake args for all components ##################` \ -A x64 -G \"Visual Studio 17 2022\" -DMSVC_COMPRESS_PDB=ON -DUSE_EXR=ON -DUSE_PNG=ON -DVCPKG_TARGET_TRIPLET=${VCPKG_DEFAULT_TRIPLET} -DCMAKE_TOOLCHAIN_FILE=\"${VCPKG_INSTALLATION_ROOT}\\scripts\\buildsystems\\vcpkg.cmake\" + `################## Default CMake args for AX components ###################` \ + -DOPENVDB_AX_TEST_CMD_DOWNLOADS=OFF + `################## Default CMake args for NanoVDB components ##############` \ -DNANOVDB_USE_CUDA=ON -DNANOVDB_USE_OPENVDB=ON -DCMAKE_CUDA_ARCHITECTURES="80" -DCMAKE_CUDA_FLAGS="-D_WIN32" + `################## Args based on vc toolchain ##################` \ + ${{ (inputs.build == 'Debug' && '-DUSE_EXPLICIT_INSTANTIATION=OFF') || '' } + ${{ (inputs.vc == 'x64-windows' && '-DOPENVDB_CORE_STATIC=OFF') || '' } + ${{ (inputs.vc == 'x64-windows' && '-DOPENVDB_AX_STATIC=OFF') || '' } + ${{ (inputs.vc == 'x64-windows-static' && '-DOPENVDB_CORE_SHARED=OFF') || '' } + ${{ (inputs.vc == 'x64-windows-static' && '-DBLOSC_USE_EXTERNAL_SOURCES=ON') || '' } + ${{ (inputs.vc == 'x64-windows-static' && '-DUSE_STATIC_DEPENDENCIES=ON') || '' } ${{ inputs.cmake }} \' - name: size diff --git a/ci/install_llvm_windows.sh b/ci/install_llvm_windows.sh index b5b3c64dbc..e8ae1c90e7 100644 --- a/ci/install_llvm_windows.sh +++ b/ci/install_llvm_windows.sh @@ -5,7 +5,24 @@ set -ex LLVM_VER="$1" -LLVM_CRT="$2" +VC_MODE="$2" +VDB_BUILD="$3" + +LLVM_CRT="MultiThreadedDLL" + +if [[ "${VC_MODE}" == "x64-windows" ]]; then + if [[ "${VDB_BUILD}" == "Release" ]]; then + LLVM_CRT="MultiThreadedDLL" + elif [[ "${VDB_BUILD}" == "Debug" ]]; then + LLVM_CRT="MultiThreadedDebugDLL" + fi +elif [[ "${VC_MODE}" == "x64-windows-static" ]]; then + if [[ "${VDB_BUILD}" == "Release" ]]; then + LLVM_CRT="MultiThreaded" + elif [[ "${VDB_BUILD}" == "Debug" ]]; then + LLVM_CRT="MultiThreadedDebug" + fi +fi # Legacy define for older versions of LLVM LLVM_LEGACY_CRT_DEFINE="" From 73617ea080329143a6257f54723820dc681318aa Mon Sep 17 00:00:00 2001 From: Nick Avramoussis <4256455+Idclip@users.noreply.github.com> Date: Mon, 10 Nov 2025 22:00:55 +1300 Subject: [PATCH 12/14] wop --- .github/workflows/template-linux.yaml | 8 ++++---- .github/workflows/template-windows.yaml | 12 ++++++------ 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/.github/workflows/template-linux.yaml b/.github/workflows/template-linux.yaml index fd12935df0..f8d059d9de 100644 --- a/.github/workflows/template-linux.yaml +++ b/.github/workflows/template-linux.yaml @@ -144,8 +144,8 @@ jobs: uses: actions/cache/restore@v3 with: path: hou - key: dummy-houdini${{ ineeds.checksecret.outputs.H_VERSION }}-${{ steps.timestamp.outputs.timestamp }} - restore-keys: vdb-v5-houdini${{ ineeds.checksecret.outputs.H_VERSION }}- + key: dummy-houdini${{ needs.checksecret.outputs.H_VERSION }}-${{ steps.timestamp.outputs.timestamp }} + restore-keys: vdb-v5-houdini${{ needs.checksecret.outputs.H_VERSION }}- - name: install_houdini run: run: | @@ -164,8 +164,8 @@ jobs: uses: actions/cache@v3 with: path: /tmp/ccache - key: linux-vfx-hou${{ ineeds.checksecret.outputs.H_VERSION }}-${{ inputs.image }}-${{ inputs.cxx }}-${{ steps.timestamp.outputs.timestamp }} - restore-keys: linux-vfx-hou${{ ineeds.checksecret.outputs.H_VERSION }}-${{ inputs.image }}-${{ inputs.cxx }}- + key: linux-vfx-hou${{ needs.checksecret.outputs.H_VERSION }}-${{ inputs.image }}-${{ inputs.cxx }}-${{ steps.timestamp.outputs.timestamp }} + restore-keys: linux-vfx-hou${{ needs.checksecret.outputs.H_VERSION }}-${{ inputs.image }}-${{ inputs.cxx }}- # Build - name: build run: > diff --git a/.github/workflows/template-windows.yaml b/.github/workflows/template-windows.yaml index 74fcff01ee..f18d91d76e 100644 --- a/.github/workflows/template-windows.yaml +++ b/.github/workflows/template-windows.yaml @@ -80,12 +80,12 @@ jobs: -DCMAKE_CUDA_ARCHITECTURES="80" -DCMAKE_CUDA_FLAGS="-D_WIN32" `################## Args based on vc toolchain ##################` \ - ${{ (inputs.build == 'Debug' && '-DUSE_EXPLICIT_INSTANTIATION=OFF') || '' } - ${{ (inputs.vc == 'x64-windows' && '-DOPENVDB_CORE_STATIC=OFF') || '' } - ${{ (inputs.vc == 'x64-windows' && '-DOPENVDB_AX_STATIC=OFF') || '' } - ${{ (inputs.vc == 'x64-windows-static' && '-DOPENVDB_CORE_SHARED=OFF') || '' } - ${{ (inputs.vc == 'x64-windows-static' && '-DBLOSC_USE_EXTERNAL_SOURCES=ON') || '' } - ${{ (inputs.vc == 'x64-windows-static' && '-DUSE_STATIC_DEPENDENCIES=ON') || '' } + ${{ (inputs.build == 'Debug' && '-DUSE_EXPLICIT_INSTANTIATION=OFF') || '' }} + ${{ (inputs.vc == 'x64-windows' && '-DOPENVDB_CORE_STATIC=OFF') || '' }} + ${{ (inputs.vc == 'x64-windows' && '-DOPENVDB_AX_STATIC=OFF') || '' }} + ${{ (inputs.vc == 'x64-windows-static' && '-DOPENVDB_CORE_SHARED=OFF') || '' }} + ${{ (inputs.vc == 'x64-windows-static' && '-DBLOSC_USE_EXTERNAL_SOURCES=ON') || '' }} + ${{ (inputs.vc == 'x64-windows-static' && '-DUSE_STATIC_DEPENDENCIES=ON') || '' }} ${{ inputs.cmake }} \' - name: size From 02ee87021cc88573a94cec66e7d00d73928ddfb5 Mon Sep 17 00:00:00 2001 From: Nick Avramoussis <4256455+Idclip@users.noreply.github.com> Date: Mon, 10 Nov 2025 22:01:43 +1300 Subject: [PATCH 13/14] wop --- .github/workflows/template-linux.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/template-linux.yaml b/.github/workflows/template-linux.yaml index f8d059d9de..98217900f0 100644 --- a/.github/workflows/template-linux.yaml +++ b/.github/workflows/template-linux.yaml @@ -147,7 +147,6 @@ jobs: key: dummy-houdini${{ needs.checksecret.outputs.H_VERSION }}-${{ steps.timestamp.outputs.timestamp }} restore-keys: vdb-v5-houdini${{ needs.checksecret.outputs.H_VERSION }}- - name: install_houdini - run: run: | test -f "hou/hou.tar.gz" mkdir $HOME/houdini_install From 39f94fed5786a274b6f2dfeb344ed51a6fe68e0b Mon Sep 17 00:00:00 2001 From: Nick Avramoussis <4256455+Idclip@users.noreply.github.com> Date: Sun, 30 Nov 2025 19:24:59 +1300 Subject: [PATCH 14/14] wip --- .github/workflows/{build.yml => ci.yml} | 9 +- ...bi-checker.yaml => extra-abi-checker.yaml} | 0 .../{ax.yml => extra-ax-grammar.yml} | 0 .../workflows/{docs.yml => extra-docs.yml} | 0 .github/workflows/extra-houidni-download.yaml | 117 ++++++++++++ .github/workflows/extra-latest.yml | 72 ++++++++ .../{whitespace.yml => extra-whitespace.yml} | 0 .github/workflows/weekly.yml | 167 ------------------ 8 files changed, 195 insertions(+), 170 deletions(-) rename .github/workflows/{build.yml => ci.yml} (97%) rename .github/workflows/{abi-checker.yaml => extra-abi-checker.yaml} (100%) rename .github/workflows/{ax.yml => extra-ax-grammar.yml} (100%) rename .github/workflows/{docs.yml => extra-docs.yml} (100%) create mode 100644 .github/workflows/extra-houidni-download.yaml create mode 100644 .github/workflows/extra-latest.yml rename .github/workflows/{whitespace.yml => extra-whitespace.yml} (100%) delete mode 100644 .github/workflows/weekly.yml diff --git a/.github/workflows/build.yml b/.github/workflows/ci.yml similarity index 97% rename from .github/workflows/build.yml rename to .github/workflows/ci.yml index 215be0e52d..4f58923117 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/ci.yml @@ -32,6 +32,7 @@ defaults: jobs: ############################################################################# + ################################### Linux ################################### ############################################################################# linux-on-pr: @@ -89,7 +90,7 @@ jobs: components: ${{ matrix.config.components }} cmake: ${{ matrix.config.cmake }} - linux-on-weekly: + linux-on-schedule: if: github.event_name == 'schedule' strategy: matrix: @@ -97,7 +98,7 @@ jobs: # Core - { name: 'all', cxx: clang++, image: '2026', abi: 13, build: 'Release', components: 'core,py,bin,test', cmake: '-DOPENVDB_PYTHON_WRAP_ALL_GRID_TYPES=ON -DUSE_BLOSC=ON -DUSE_ZLIB=ON -DUSE_EXR=ON -DUSE_PNG=ON -DOPENVDB_SIMD=SSE42 -DOPENVDB_SIMD=AVX' } - { name: 'lite', cxx: clang++, image: '2026', abi: 13, build: 'Release', components: 'core,py,bin,test', cmake: '-DUSE_BLOSC=OFF -DUSE_ZLIB=OFF -DUSE_EXR=OFF -DUSE_PNG=OFF -DOPENVDB_USE_DELAYED_LOADING=OFF' } - - { name: 'half', cxx: clang++, image: '2026', abi: 13, build: 'Release', components: 'core,py,bin,test', cmake: '-DUSE_IMATH_HALF=ON' } + - { name: 'half', cxx: clang++, image: '2026', abi: 13, build: 'Release', components: 'core,bin,test', cmake: '-DUSE_IMATH_HALF=ON' } - { name: 'asan', cxx: clang++, image: '2026', abi: 13, build: 'asan', components: 'core,test', cmake: '-DDISABLE_DEPENDENCY_VERSION_CHECKS=ON -DNANOVDB_USE_OPENVDB=ON -DOPENVDB_AX_STATIC=OFF -DOPENVDB_CORE_STATIC=OFF -DUSE_BLOSC=OFF' } # We never called blosc_destroy(), so disable blosc to silence these errors - { name: 'ubsan', cxx: clang++, image: '2026', abi: 13, build: 'ubsan', components: 'core,test', cmake: '-DDISABLE_DEPENDENCY_VERSION_CHECKS=ON -DCMAKE_CXX_FLAGS="-Wno-deprecated-declarations" ' } - { name: 'c++20', cxx: clang++, image: '2026', abi: 13, build: 'Release', components: 'core,test', cmake: '-DCMAKE_CXX_STANDARD=20' } @@ -116,6 +117,7 @@ jobs: cmake: ${{ matrix.config.cmake }} ############################################################################# + ################################### MacOS ################################### ############################################################################# macos-on-pr: @@ -135,7 +137,7 @@ jobs: cmake: ${{ matrix.config.cmake }} llvm: ${{ matrix.config.llvm }} - macos-on-weekly: + macos-on-schedule: if: github.event_name == 'schedule' strategy: matrix: @@ -162,6 +164,7 @@ jobs: llvm: ${{ matrix.config.llvm }} ############################################################################# + ################################## Windows ################################## ############################################################################# win-on-pr: diff --git a/.github/workflows/abi-checker.yaml b/.github/workflows/extra-abi-checker.yaml similarity index 100% rename from .github/workflows/abi-checker.yaml rename to .github/workflows/extra-abi-checker.yaml diff --git a/.github/workflows/ax.yml b/.github/workflows/extra-ax-grammar.yml similarity index 100% rename from .github/workflows/ax.yml rename to .github/workflows/extra-ax-grammar.yml diff --git a/.github/workflows/docs.yml b/.github/workflows/extra-docs.yml similarity index 100% rename from .github/workflows/docs.yml rename to .github/workflows/extra-docs.yml diff --git a/.github/workflows/extra-houidni-download.yaml b/.github/workflows/extra-houidni-download.yaml new file mode 100644 index 0000000000..ca0681b8da --- /dev/null +++ b/.github/workflows/extra-houidni-download.yaml @@ -0,0 +1,117 @@ +# This workflow runs once a week and tests a variety of configurations, +# dependencies and other specific or expensive checkes (sanitizers). +# It also contains the Houdini Cache jobs which update the CI cache +# with new Houdini releases. + +name: Houdini Download + +on: + schedule: + # run this workflow Sunday 00:00 UTC + - cron: '0 0 * * 0' + workflow_dispatch: + +# Allow subsequent pushes to the same PR or REF to cancel any previous jobs. +concurrency: + group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} + cancel-in-progress: true + +defaults: + run: + shell: bash + +jobs: + # Check that valid github secrets have been set for the ability to + # download Houdini and cache it. The secrets are used in download_houdini.py + checksecret: + name: Verify Houdini Secrets + runs-on: ubuntu-latest + outputs: + HOUDINI_SECRETS: ${{ steps.check.outputs.HOUDINI_SECRETS }} + steps: + - id: check + env: + HOUDINI_CLIENT_ID: ${{ secrets.HOUDINI_CLIENT_ID }} + HOUDINI_SECRET_KEY: ${{ secrets.HOUDINI_SECRET_KEY }} + run: echo "HOUDINI_SECRETS=${{ env.HOUDINI_CLIENT_ID != '' && env.HOUDINI_SECRET_KEY != '' }}" >> $GITHUB_OUTPUT + - name: Skip Next Jobs + if: steps.check.outputs.HOUDINI_SECRETS != 'true' + run: echo "HOUDINI_CLIENT_ID and HOUDINI_SECRET_KEY GitHub Action Secrets needs to be set to install Houdini builds" + # Explicitly error on the ASWF repo, we expect this secret to always exist + - name: Error ASWF + if: steps.check.outputs.HOUDINI_SECRETS != 'true' && github.repository_owner == 'AcademySoftwareFoundation' + run: exit 1 + + # download the latest production version of Houdini X, strip out headers, + # libraries and binaries required for building OpenVDB and put it into + # the GitHub Actions cache + linux_houdini_download: + needs: [checksecret] + if: | + (needs.checksecret.outputs.HOUDINI_SECRETS == 'true') && + (github.event_name != 'workflow_dispatch' || + github.event.inputs.type == 'all' || + github.event.inputs.type == 'houdini') + runs-on: ${{ (github.repository_owner == 'AcademySoftwareFoundation' && 'ubuntu-22.04-8c-32g-300h') || 'ubuntu-latest' }} + name: linux-houdini:${{ matrix.config.hou_hash }} + env: + CXX: clang++ + HOUDINI_CLIENT_ID: ${{ secrets.HOUDINI_CLIENT_ID }} + HOUDINI_SECRET_KEY: ${{ secrets.HOUDINI_SECRET_KEY }} + strategy: + matrix: + config: + - { houdini_version: '21.0', platform: 'linux_x86_64_gcc11.2', hou_hash: '21_0' } + - { houdini_version: '20.5', platform: 'linux_x86_64_gcc11.2', hou_hash: '20_5' } + fail-fast: false + container: + image: aswf/ci-base:2024 + steps: + - uses: actions/checkout@v3 + - name: timestamp + id: timestamp + run: echo "timestamp=$(date -u +'%Y-%m-%dT%H:%M:%SZ')" >> $GITHUB_OUTPUT + - name: download_houdini + run: ./ci/download_houdini.sh ${{ matrix.config.houdini_version }} ${{ matrix.config.platform }} --prod + - name: install_houdini + run: | + mkdir $HOME/houdini_install + cp hou/hou.tar.gz $HOME/houdini_install/hou.tar.gz + cd $HOME/houdini_install && tar -xzf hou.tar.gz && cd - + - name: write_houdini_cache + uses: actions/cache/save@v3 + with: + path: hou + key: vdb-v5-houdini${{ matrix.config.hou_hash }}-${{ steps.timestamp.outputs.timestamp }} + + macos_houdini_download: + needs: [checksecret] + if: | + (needs.checksecret.outputs.HOUDINI_SECRETS == 'true') && + (github.event_name != 'workflow_dispatch' || + github.event.inputs.type == 'all' || + github.event.inputs.type == 'houdini') + # Note that macos-14 (current macos-latest) switches to M1. We could instead test + # the arm build here instead of the x86 one. + runs-on: macos-latest + name: macos-houdini + env: + HOUDINI_CLIENT_ID: ${{ secrets.HOUDINI_CLIENT_ID }} + HOUDINI_SECRET_KEY: ${{ secrets.HOUDINI_SECRET_KEY }} + steps: + - uses: actions/checkout@v3 + - name: timestamp + id: timestamp + run: echo "timestamp=$(date -u +'%Y-%m-%dT%H:%M:%SZ')" >> $GITHUB_OUTPUT + - name: download_houdini + run: ./ci/download_houdini.sh 21.0 macosx_arm64_clang15.0_14 --prod + - name: install_houdini + run: | + mkdir $HOME/houdini_install + cp hou/hou.tar.gz $HOME/houdini_install/hou.tar.gz + cd $HOME/houdini_install && tar -xzf hou.tar.gz && cd - + - name: write_houdini_cache + uses: actions/cache/save@v3 + with: + path: hou + key: vdb-v5-houdini-macos-${{ steps.timestamp.outputs.timestamp }} diff --git a/.github/workflows/extra-latest.yml b/.github/workflows/extra-latest.yml new file mode 100644 index 0000000000..326e9a5d0f --- /dev/null +++ b/.github/workflows/extra-latest.yml @@ -0,0 +1,72 @@ +# This workflow runs once a week and tests a variety of configurations, +# dependencies and other specific or expensive checkes (sanitizers). +# It also contains the Houdini Cache jobs which update the CI cache +# with new Houdini releases. + +name: Latest + +on: + schedule: + # run this workflow Sunday 00:00 UTC + - cron: '0 0 * * 0' + workflow_dispatch: + +# Allow subsequent pushes to the same PR or REF to cancel any previous jobs. +concurrency: + group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} + cancel-in-progress: true + +defaults: + run: + shell: bash + +jobs: + ############################################################################# + ########################### Core Library Extras ############################# + ############################################################################# + + # Test latest dependencies, latest compilers and options + latest: + if: | + github.event_name != 'workflow_dispatch' || + github.event.inputs.type == 'all' || + github.event.inputs.type == 'latest' + runs-on: ${{ matrix.config.runson }} + env: + CXX: ${{ matrix.config.cxx }} + strategy: + matrix: + config: + # llvm-17 is currently the default which has symbol issues with the python module + - { runson: ubuntu-latest, cxx: g++, cmake: '-DOPENVDB_PYTHON_USE_AX=OFF' } + # Disable the clang job for now. See https://github.com/actions/runner-images/issues/8659 + # - { runson: ubuntu-latest, cxx: clang++, cmake: '' } + # @todo gcc on macos + - { runson: macos-latest, cxx: '', cmake: '-DLLVM_DIR=/opt/homebrew/opt/llvm/lib/cmake/llvm' } + fail-fast: false + steps: + - uses: actions/checkout@v3 + - name: install_deps + run: | + if [ "$RUNNER_OS" == "Linux" ]; then + sudo apt-get -q install -y libboost-dev libboost-iostreams-dev libtbb-dev libblosc-dev libgtest-dev libgmock-dev python3-numpy + ./ci/install_nanobind.sh latest + ./ci/install_blosc.sh latest + elif [ "$RUNNER_OS" == "macOS" ]; then + ./ci/install_macos.sh latest + ./ci/install_tbb_macos.sh + else + echo "$RUNNER_OS not supported"; exit 1 + fi + - name: build + run: > + ./ci/build.sh -v + --build-type=Release + --components=\"core,axcore,python,bin,render,test,axbin\" + --cargs=\' + -DCMAKE_CXX_STANDARD=20 + -DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/install + ${{ matrix.config.cmake }} + \' + - name: test + run: cd build && ctest -V diff --git a/.github/workflows/whitespace.yml b/.github/workflows/extra-whitespace.yml similarity index 100% rename from .github/workflows/whitespace.yml rename to .github/workflows/extra-whitespace.yml diff --git a/.github/workflows/weekly.yml b/.github/workflows/weekly.yml deleted file mode 100644 index f67e43ba6b..0000000000 --- a/.github/workflows/weekly.yml +++ /dev/null @@ -1,167 +0,0 @@ -# This workflow runs once a week and tests a variety of configurations, -# dependencies and other specific or expensive checkes (sanitizers). -# It also contains the Houdini Cache jobs which update the CI cache -# with new Houdini releases. - -name: Weekly - -on: - schedule: - # run this workflow Sunday 00:00 UTC - - cron: '0 0 * * 0' - workflow_dispatch: - inputs: - type: - description: 'The type of CI to run (all, houdini, latest, extra, ax, blosc, abi)' - required: true - default: 'all' - -# Allow subsequent pushes to the same PR or REF to cancel any previous jobs. -concurrency: - group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} - cancel-in-progress: true - -defaults: - run: - shell: bash - -jobs: - ############################################################################# - ########################### Core Library Extras ############################# - ############################################################################# - - # Test latest dependencies, latest compilers and options - latest: - if: | - github.event_name != 'workflow_dispatch' || - github.event.inputs.type == 'all' || - github.event.inputs.type == 'latest' - runs-on: ${{ matrix.config.runson }} - env: - CXX: ${{ matrix.config.cxx }} - strategy: - matrix: - config: - # llvm-17 is currently the default which has symbol issues with the python module - - { runson: ubuntu-latest, cxx: g++, cmake: '-DOPENVDB_PYTHON_USE_AX=OFF' } - # Disable the clang job for now. See https://github.com/actions/runner-images/issues/8659 - # - { runson: ubuntu-latest, cxx: clang++, cmake: '' } - # @todo gcc on macos - - { runson: macos-latest, cxx: '', cmake: '-DLLVM_DIR=/opt/homebrew/opt/llvm@20/lib/cmake/llvm' } - fail-fast: false - steps: - - uses: actions/checkout@v3 - - name: install_deps - run: | - if [ "$RUNNER_OS" == "Linux" ]; then - sudo apt-get -q install -y libboost-dev libboost-iostreams-dev libtbb-dev libblosc-dev libgtest-dev libgmock-dev python3-numpy - ./ci/install_nanobind.sh 2.5.0 - elif [ "$RUNNER_OS" == "macOS" ]; then - ./ci/install_macos.sh 20 - ./ci/install_tbb_macos.sh - else - echo "$RUNNER_OS not supported"; exit 1 - fi - - name: build - run: > - ./ci/build.sh -v - --build-type=Release - --components=\"core,axcore,python,bin,render,test,axbin\" - --cargs=\' - -DCMAKE_CXX_STANDARD=20 - -DOPENVDB_USE_DELAYED_LOADING=OFF - -DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/install - ${{ matrix.config.cmake }} - \' - - name: test - run: cd build && ctest -V - - ############################################################################# - ############################ AX Library Extras ############################## - ############################################################################# - - linux-ax: - if: | - github.event_name != 'workflow_dispatch' || - github.event.inputs.type == 'all' || - github.event.inputs.type == 'ax' - runs-on: ${{ (github.repository_owner == 'AcademySoftwareFoundation' && 'ubuntu-22.04-8c-32g-300h') || 'ubuntu-latest' }} - name: > - linux-ax:${{ matrix.config.image }}-cxx:${{ matrix.config.cxx }}-${{ matrix.config.build }} - container: - image: aswf/ci-openvdb:${{ matrix.config.image }} - env: - CXX: ${{ matrix.config.cxx }} - strategy: - matrix: - config: - - { image: '2025-clang18.1', cxx: 'clang++', build: 'Release', components: 'core,axcore,axbin,axtest', cmake: '' } - # @note LLVM 17 builds are incompatible with the vdb python plugin on linux - - { image: '2024-clang17.2', cxx: 'clang++', build: 'Release', components: 'core,axcore,axbin,axtest', cmake: '-DOPENVDB_PYTHON_USE_AX=OFF' } - fail-fast: false - steps: - - uses: actions/checkout@v3 - - name: nanobind - run: ./ci/install_nanobind.sh 2.5.0 - - name: build - run: > - ./ci/build.sh -v - --build-type=${{ matrix.config.build }} - --components=${{ matrix.config.components }} - --cargs=\" - ${{ matrix.config.cmake }} - -DOPENVDB_AX_TEST_CMD_DOWNLOADS=ON - -DUSE_EXPLICIT_INSTANTIATION=OFF - -DOPENVDB_CXX_STRICT=ON - -DOPENVDB_BUILD_VDB_TOOL=OFF - \" - - name: clean - if: matrix.config.components == 'core' - run: rm -rf build - - name: build - if: matrix.config.components == 'core' - run: > - ./ci/build.sh -v - --build-type=${{ matrix.config.build }} - --components="bin,axcore,axbin,axtest,python" - --cargs=\" - ${{ matrix.config.cmake }} - -DOPENVDB_AX_TEST_CMD_DOWNLOADS=ON - -DUSE_EXPLICIT_INSTANTIATION=OFF - -DOPENVDB_CXX_STRICT=ON - -DOPENVDB_BUILD_VDB_TOOL=OFF - \" - - name: test - run: cd build && ctest -V - - name: test_doxygen_examples - run: ./ci/extract_test_examples.sh - - - ############################################################################# - ################################## Blosc #################################### - ############################################################################# - - linux-blosc: - if: | - github.event_name != 'workflow_dispatch' || - github.event.inputs.type == 'all' || - github.event.inputs.type == 'blosc' - runs-on: ${{ (github.repository_owner == 'AcademySoftwareFoundation' && 'ubuntu-22.04-8c-32g-300h') || 'ubuntu-latest' }} - name: linux-blosc:${{ matrix.blosc }} - container: - image: aswf/ci-openvdb:2025-clang19.1 - strategy: - matrix: - blosc: ['1.21.0', 'latest'] - fail-fast: false - steps: - - uses: actions/checkout@v3 - - name: install_blosc - run: sudo ./ci/install_blosc.sh ${{ matrix.blosc }} - - name: build - run: > - sudo ./ci/build.sh -v - --build-type=Release - --components=\"core,test\" - - name: test - run: cd build && sudo ctest -V