Skip to content

Houdini

Houdini #3588

Workflow file for this run

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-20.04-8c-32g-300h') || 'ubuntu-latest' }}
name: hou:${{ matrix.config.hou_hash }}-vfx:${{ matrix.config.image }}-cxx:${{ matrix.config.cxx }}
container:
image: aswf/ci-base:${{ matrix.config.image }}
env:
CXX: ${{ matrix.config.cxx }}
CCACHE_DIR: /tmp/ccache
strategy:
matrix:
config:
- { cxx: clang++, image: '2024', hou_hash: '20_5', build: 'Release', components: 'core,hou,bin,view,render,python,test' }
- { cxx: clang++, image: '2023', hou_hash: '20_5', build: 'Debug', components: 'core,hou,bin,view,render,python,test,axcore,axbin,axtest' }
- { cxx: g++, image: '2023', hou_hash: '20_5', build: 'Release', components: 'core,hou,bin,view,render,python,test,axcore,axbin,axtest' }
- { cxx: clang++, image: '2023', hou_hash: '20_0-newabi', build: 'Release', components: 'core,hou,bin,view,render,python,test,axcore,axbin,axtest' }
- { cxx: g++, image: '2023', hou_hash: '20_0-newabi', build: 'Release', components: 'core,hou,bin,view,render,python,test,axcore,axbin,axtest' }
fail-fast: false
steps:
- name: remove zstd
run: yum -y remove zstd
- uses: actions/checkout@v3
- name: nanobind
#if: contains(matrix.config.image, '2023') == false
run: ./ci/install_nanobind.sh 2.0.0
- name: glfw
if: contains(matrix.config.image, '2023') == true
run: ./ci/install_glfw.sh 3.3.10
- name: cppunit
run: ./ci/install_cppunit.sh 1.15.1
- name: install_gtest
run: ./ci/install_gtest.sh 1.15.2
- 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=Release \
--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
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 15
- name: build
run: |
./ci/build.sh -v \
--build-type=Release \
--components="core,hou,bin,view,render,python,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 \
-DTbb_INCLUDE_DIR=$HOME/houdini_install/hou/Frameworks/Houdini.framework/Versions/Current/Resources/toolkit/include/tbb \
-DLLVM_DIR=/opt/homebrew/opt/llvm@15/lib/cmake/llvm \
-DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/install \
\"
- name: test
run: cd build && ctest -V