Houdini #6
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Houdini | |
on: | |
push: | |
branches: | |
- 'master' | |
- 'feature/**' | |
- 'pr/**' | |
paths-ignore: | |
- 'CHANGES' | |
- 'CODEOWNERS' | |
- 'doc/**' | |
- 'nanovdb/**' | |
- 'openvdb_maya/**' | |
- 'pendingchanges/**' | |
- '**.md' | |
pull_request: | |
branches: | |
- '**' | |
paths-ignore: | |
- 'CHANGES' | |
- 'CODEOWNERS' | |
- 'doc/**' | |
- 'nanovdb/**' | |
- 'openvdb_maya/**' | |
- '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: '2023.0', hou_hash: '20_0-newabi', build: 'Release', components: 'core,hou,bin,view,render,python,test,axcore,axbin,axtest' } | |
- { cxx: clang++, image: '2022', hou_hash: '20_0-oldabi', build: 'Release', components: 'core,hou' } | |
- { cxx: clang++, image: '2021', hou_hash: '19_5', build: 'Release', components: 'core,hou' } | |
- { cxx: clang++, image: '2023.0', hou_hash: '20_0-newabi', build: 'Debug', components: 'core,hou,bin,view,render,python,test,axcore,axbin,axtest' } | |
- { cxx: g++, image: '2023.0', hou_hash: '20_0-newabi', build: 'Release', components: 'core,hou,bin,view,render,python,test,axcore,axbin,axtest' } | |
- { cxx: g++, image: '2022', hou_hash: '20_0-oldabi', build: 'Release', components: 'core,hou' } | |
fail-fast: false | |
steps: | |
# See note on this step in the Houdini weekly.yml job | |
# We can remove this when we no longer use < 2023 images | |
- name: remove zstd | |
run: yum -y remove zstd | |
- uses: actions/checkout@v3 | |
- name: pybind11 | |
#if: contains(matrix.config.image, '2023') == false | |
run: ./ci/install_pybind11.sh 2.10.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: 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: | | |
# Remove Python3 symlinks in /usr/local/bin as workaround to brew update issues | |
# https://github.com/actions/setup-python/issues/577 | |
rm /usr/local/bin/2to3* || : | |
rm /usr/local/bin/idle3* || : | |
rm /usr/local/bin/pydoc* || : | |
rm /usr/local/bin/python3* || : | |
brew update | |
brew install bash gnu-getopt cmake boost glfw googletest openexr pybind11 llvm@15 cppunit | |
echo "/usr/local/opt/gnu-getopt/bin" >> $GITHUB_PATH | |
- name: build | |
run: | | |
./ci/build.sh -v \ | |
--build-type=Release \ | |
--components="core,hou,bin,view,render,python,test,axcore,axbin,axtest" \ | |
--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=/usr/local/opt/llvm@15/lib/cmake/llvm \ | |
\" | |
- name: test | |
run: cd build && ctest -V |