Skip to content

Updated SDK headers #327

Updated SDK headers

Updated SDK headers #327

Workflow file for this run

name: Build
on: [push, pull_request]
jobs:
select-houdini-build:
name: Select houdini build
runs-on: [self-hosted, Linux, X64, houdini]
outputs:
houdini-build-20-5: ${{ steps.select_houdini_20_5_build.outputs.houdini_build_20_5 }}
houdini-build-21-0: ${{ steps.select_houdini_21_0_build.outputs.houdini_build_21_0 }}
need-run: ${{ steps.open_pr_check.outputs.has_open_pr != 'true' }}
need-complete-build: ${{ (steps.open_pr_check.outputs.has_open_pr != 'true') && (github.ref == 'refs/heads/main' || github.event_name == 'pull_request') }}
# Legend
# name - Human readable OS/Arch name. Version is appended separately.
# run-on-all-branches - Whether to run this target on all branches. If false, will only run on main
# runner - Github actions runner that should run the job
# generator - Generator used for cmake configuration
# houdini-version - Version of houdini to build against (e.g. "20.5"/"21.0")
# houdini-build - Specific build of houdini to build against (e.g. "440")
# houdini-install-path - Path into which houdini gets installed. This needs to be consistent with houdini install script, as it calculates path for previous version when removing it. On Windows it MUST USE BACKSLASHES.
# hfs-path - Path to use HFS env var to. This is same as houdini-install-path on most platforms, but macOS is special and required additional suffix after houdini-install-path.
# python-command - Python command to use for running scripts (e.g. "python"/"python3")
# python-venv-activate-path - Path to powershell python venv activation script within venv folder
# additional-config-args - Additional commad line args to pass to cmake configuration. Required on macOS to specify architectrue (arm64/x64)
complete-build-matrix-json: |
{
"include": [
{
"name": "Windows x64",
"runner": "windows-latest",
"generator": "Visual Studio 17 2022",
"executable-extension": ".exe",
"houdini-version": "20.5",
"houdini-build": "${{ steps.select_houdini_20_5_build.outputs.houdini_build_20_5 }}",
"houdini-platform": "win64-vc143",
"houdini-install-path": "C:\\Houdini\\20.5.${{ steps.select_houdini_20_5_build.outputs.houdini_build_20_5 }}",
"hfs-path": "C:\\Houdini\\20.5.${{ steps.select_houdini_20_5_build.outputs.houdini_build_20_5 }}",
"python-command": "python",
"python-venv-activate-path": "Scripts/Activate.ps1",
"additional-config-args": null
},
{
"name": "Windows x64",
"runner": "windows-latest",
"generator": "Visual Studio 17 2022",
"executable-extension": ".exe",
"houdini-version": "21.0",
"houdini-build": "${{ steps.select_houdini_21_0_build.outputs.houdini_build_21_0 }}",
"houdini-platform": "win64-vc143",
"houdini-install-path": "C:\\Houdini\\21.0.${{ steps.select_houdini_21_0_build.outputs.houdini_build_21_0 }}",
"hfs-path": "C:\\Houdini\\21.0.${{ steps.select_houdini_21_0_build.outputs.houdini_build_21_0 }}",
"python-command": "python",
"python-venv-activate-path": "Scripts/Activate.ps1",
"additional-config-args": null
},
{
"name": "Linux x64",
"runner": [
"self-hosted",
"Linux",
"X64",
"houdini"
],
"generator": "Ninja Multi-Config",
"executable-extension": null,
"houdini-version": "20.5",
"houdini-build": "${{ steps.select_houdini_20_5_build.outputs.houdini_build_20_5 }}",
"houdini-platform": "linux_x86_64_gcc11.2",
"houdini-install-path": "/opt/hfs20.5.${{ steps.select_houdini_20_5_build.outputs.houdini_build_20_5 }}",
"hfs-path": "/opt/hfs20.5.${{ steps.select_houdini_20_5_build.outputs.houdini_build_20_5 }}",
"python-command": "python3",
"python-venv-activate-path": "bin/Activate.ps1",
"additional-config-args": null
},
{
"name": "Linux x64",
"runner": [
"self-hosted",
"Linux",
"X64",
"houdini"
],
"generator": "Ninja Multi-Config",
"executable-extension": null,
"houdini-version": "21.0",
"houdini-build": "${{ steps.select_houdini_21_0_build.outputs.houdini_build_21_0 }}",
"houdini-platform": "linux_x86_64_gcc11.2",
"houdini-install-path": "/opt/hfs21.0.${{ steps.select_houdini_21_0_build.outputs.houdini_build_21_0 }}",
"hfs-path": "/opt/hfs21.0.${{ steps.select_houdini_21_0_build.outputs.houdini_build_21_0 }}",
"python-command": "python3",
"python-venv-activate-path": "bin/Activate.ps1",
"additional-config-args": null
},
{
"name": "macOS arm64",
"runner": "macos-14",
"generator": "Xcode",
"executable-extension": null,
"houdini-version": "20.5",
"houdini-build": "${{ steps.select_houdini_20_5_build.outputs.houdini_build_20_5 }}",
"houdini-platform": "macosx_arm64_clang15.0_14",
"houdini-install-path": "/Applications/Houdini/Houdini20.5.${{ steps.select_houdini_20_5_build.outputs.houdini_build_20_5 }}",
"hfs-path": "/Applications/Houdini/Houdini20.5.${{ steps.select_houdini_20_5_build.outputs.houdini_build_20_5 }}/Frameworks/Houdini.framework/Versions/Current/Resources",
"python-command": "python3",
"python-venv-activate-path": "bin/Activate.ps1",
"additional-config-args": "-DCMAKE_OSX_ARCHITECTURES=arm64"
},
{
"name": "macOS arm64",
"runner": "macos-14",
"generator": "Xcode",
"executable-extension": null,
"houdini-version": "21.0",
"houdini-build": "${{ steps.select_houdini_21_0_build.outputs.houdini_build_21_0 }}",
"houdini-platform": "macosx_arm64_clang15.0_14",
"houdini-install-path": "/Applications/Houdini/Houdini21.0.${{ steps.select_houdini_21_0_build.outputs.houdini_build_21_0 }}",
"hfs-path": "/Applications/Houdini/Houdini21.0.${{ steps.select_houdini_21_0_build.outputs.houdini_build_21_0 }}/Frameworks/Houdini.framework/Versions/Current/Resources",
"python-command": "python3",
"python-venv-activate-path": "bin/Activate.ps1",
"additional-config-args": "-DCMAKE_OSX_ARCHITECTURES=arm64"
},
{
"name": "macOS x64",
"runner": "macos-14",
"generator": "Xcode",
"executable-extension": null,
"houdini-version": "20.5",
"houdini-build": "${{ steps.select_houdini_20_5_build.outputs.houdini_build_20_5 }}",
"houdini-platform": "macosx_x86_64_clang15.0_14",
"houdini-install-path": "/Applications/Houdini/Houdini20.5.${{ steps.select_houdini_20_5_build.outputs.houdini_build_20_5 }}",
"hfs-path": "/Applications/Houdini/Houdini20.5.${{ steps.select_houdini_20_5_build.outputs.houdini_build_20_5 }}/Frameworks/Houdini.framework/Versions/Current/Resources",
"python-command": "python3",
"python-venv-activate-path": "bin/Activate.ps1",
"additional-config-args": "-DCMAKE_OSX_ARCHITECTURES=x86_64"
},
{
"name": "macOS x64",
"runner": "macos-14",
"generator": "Xcode",
"executable-extension": null,
"houdini-version": "21.0",
"houdini-build": "${{ steps.select_houdini_21_0_build.outputs.houdini_build_21_0 }}",
"houdini-platform": "macosx_x86_64_clang15.0_14",
"houdini-install-path": "/Applications/Houdini/Houdini21.0.${{ steps.select_houdini_21_0_build.outputs.houdini_build_21_0 }}",
"hfs-path": "/Applications/Houdini/Houdini21.0.${{ steps.select_houdini_21_0_build.outputs.houdini_build_21_0 }}/Frameworks/Houdini.framework/Versions/Current/Resources",
"python-command": "python3",
"python-venv-activate-path": "bin/Activate.ps1",
"additional-config-args": "-DCMAKE_OSX_ARCHITECTURES=x86_64"
}
]
}
quick-build-matrix-json: |
{
"include": [
{
"name": "Linux x64",
"runner": [
"self-hosted",
"Linux",
"X64",
"houdini"
],
"generator": "Ninja Multi-Config",
"executable-extension": null,
"houdini-version": "20.5",
"houdini-build": "${{ steps.select_houdini_20_5_build.outputs.houdini_build_20_5 }}",
"houdini-platform": "linux_x86_64_gcc11.2",
"houdini-install-path": "/opt/hfs20.5.${{ steps.select_houdini_20_5_build.outputs.houdini_build_20_5 }}",
"hfs-path": "/opt/hfs20.5.${{ steps.select_houdini_20_5_build.outputs.houdini_build_20_5 }}",
"python-command": "python3",
"python-venv-activate-path": "bin/Activate.ps1",
"additional-config-args": null
},
{
"name": "Linux x64",
"runner": [
"self-hosted",
"Linux",
"X64",
"houdini"
],
"generator": "Ninja Multi-Config",
"executable-extension": null,
"houdini-version": "21.0",
"houdini-build": "${{ steps.select_houdini_21_0_build.outputs.houdini_build_21_0 }}",
"houdini-platform": "linux_x86_64_gcc11.2",
"houdini-install-path": "/opt/hfs21.0.${{ steps.select_houdini_21_0_build.outputs.houdini_build_21_0 }}",
"hfs-path": "/opt/hfs21.0.${{ steps.select_houdini_21_0_build.outputs.houdini_build_21_0 }}",
"python-command": "python3",
"python-venv-activate-path": "bin/Activate.ps1",
"additional-config-args": null
}
]
}
steps:
- name: Check for open PRs
if: ${{ github.event_name == 'push' }}
id: open_pr_check
uses: actions/github-script@v7
with:
script: |
const { owner, repo } = context.repo;
const branch = context.ref.replace('refs/heads/', '');
const prs = await github.rest.pulls.list({
owner, repo, state: 'open', head: `${owner}:${branch}`,
});
core.setOutput('has_open_pr', String(prs.data.length > 0));
- name: Sync
if: ${{ steps.open_pr_check.outputs.has_open_pr != 'true' }}
uses: actions/checkout@v4
- name: Select Houdini 20.5 build
if: ${{ steps.open_pr_check.outputs.has_open_pr != 'true' }}
id: select_houdini_20_5_build
working-directory: ${{ github.workspace }}
shell: pwsh
run: |
python3 -m venv actions/houdini/venv
./actions/houdini/venv/bin/Activate.ps1
pip3 install -r actions/houdini/requirements.txt
python3 actions/houdini/select_build.py --product houdini --version 20.5 --platforms win64-vc143 macosx_arm64_clang15.0_14 macosx_x86_64_clang15.0_14 linux_x86_64_gcc11.2
env:
HOUDINI_CLIENT_ID: ${{ secrets.HOUDINI_CLIENT_ID }}
HOUDINI_SECRET_KEY: ${{ secrets.HOUDINI_SECRET_KEY }}
- name: Select Houdini 21.0 build
if: ${{ steps.open_pr_check.outputs.has_open_pr != 'true' }}
id: select_houdini_21_0_build
working-directory: ${{ github.workspace }}
shell: pwsh
run: |
python3 -m venv actions/houdini/venv
./actions/houdini/venv/bin/Activate.ps1
pip3 install -r actions/houdini/requirements.txt
python3 actions/houdini/select_build.py --product houdini --version 21.0 --platforms win64-vc143 macosx_arm64_clang15.0_14 macosx_x86_64_clang15.0_14 linux_x86_64_gcc11.2
env:
HOUDINI_CLIENT_ID: ${{ secrets.HOUDINI_CLIENT_ID }}
HOUDINI_SECRET_KEY: ${{ secrets.HOUDINI_SECRET_KEY }}
build-plugin:
needs: select-houdini-build
if: ${{ (needs.select-houdini-build.outputs.need-run == 'true') }}
strategy:
fail-fast: false
matrix: ${{ fromJson( (needs.select-houdini-build.outputs.need-complete-build == 'true') && needs.select-houdini-build.outputs.complete-build-matrix-json || needs.select-houdini-build.outputs.quick-build-matrix-json ) }}
runs-on: ${{ matrix.runner }}
concurrency:
group: ${{ matrix.houdini-platform }}-${{ matrix.houdini-version }}-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
name: Build ${{ matrix.name }} Houdini ${{ matrix.houdini-version }}
steps:
- name: Sync
uses: actions/checkout@v4
- name: Check if Houdini is installed
id: install-check
working-directory: ${{ github.workspace }}
shell: pwsh
run: |
${{ matrix.python-command }} actions/houdini/is_installed.py --version ${{ matrix.houdini-version }} --build ${{ matrix.houdini-build }} --platform ${{ matrix.houdini-platform }} --install_path ${{ matrix.houdini-install-path }}
- name: Install Houdini
if: ${{ steps.install-check.outputs.need_install_houdini == 'true' }}
working-directory: ${{ github.workspace }}
timeout-minutes: 30
shell: pwsh
run: |
${{ matrix.python-command }} -m venv actions/houdini/venv
./actions/houdini/venv/${{ matrix.python-venv-activate-path }}
${{ matrix.python-command }} -m pip install -r actions/houdini/requirements.txt
${{ matrix.python-command }} actions/houdini/install_houdini.py --version ${{ matrix.houdini-version }} --build ${{ matrix.houdini-build }} --platform ${{ matrix.houdini-platform }} --install_path ${{ matrix.houdini-install-path }}
env:
HOUDINI_CLIENT_ID: ${{ secrets.HOUDINI_CLIENT_ID }}
HOUDINI_SECRET_KEY: ${{ secrets.HOUDINI_SECRET_KEY }}
- name: Configure Cmake
working-directory: ${{ github.workspace }}
shell: pwsh
run: cmake -S . -B build -G "${{ matrix.generator }}" -DZIBRAVDB_OUTPUT_PATH="${{ github.workspace }}/package" ${{ matrix.additional-config-args }}
env:
HFS: ${{ matrix.hfs-path }}
- name: Build Debug
working-directory: ${{ github.workspace }}
shell: pwsh
# Need to delete all generated artifacts, so Ninja Multi-Config does not get tripped up by existing artifacts when building Release
run: |
cmake --build build --config Debug
Remove-Item -Recurse -Force "${{ github.workspace }}/package"
- name: Build Release
working-directory: ${{ github.workspace }}
shell: pwsh
run: cmake --build build --config Release
- name: Repack HDA into Binary format
working-directory: ${{ github.workspace }}
shell: pwsh
run: |
${{ matrix.hfs-path }}/bin/hotl${{ matrix.executable-extension }} -l ${{ github.workspace }}/package/otls/zibravdb_filecache.1.0.hda ${{ github.workspace }}/package/otls/zibravdb_filecache.1.0.hda.2
Remove-Item -Recurse -Force ${{ github.workspace }}/package/otls\zibravdb_filecache.1.0.hda
Move-Item -Path ${{ github.workspace }}/package/otls/zibravdb_filecache.1.0.hda.2 -Destination ${{ github.workspace }}/package/otls/zibravdb_filecache.1.0.hda
- name: Save artifacts
uses: actions/upload-artifact@v4
with:
name: ZibraVDBForHoudini-${{ matrix.houdini-version }}.${{ matrix.houdini-build }}-${{ matrix.houdini-platform }}
path: package
if-no-files-found: error
retention-days: 7
merge-artifacts:
runs-on: macos-14
needs: [select-houdini-build, build-plugin]
if: ${{ (needs.select-houdini-build.outputs.need-complete-build == 'true') }}
strategy:
fail-fast: false
matrix:
include:
- houdini-version: "20.5"
houdini-build: ${{ needs.select-houdini-build.outputs.houdini-build-20-5 }}
- houdini-version: "21.0"
houdini-build: ${{ needs.select-houdini-build.outputs.houdini-build-21-0 }}
name: Merge artifacts ${{ matrix.houdini-version }}
steps:
- name: Sync
uses: actions/checkout@v4
- name: Download artifacts
uses: actions/download-artifact@v5
with:
pattern: ZibraVDBForHoudini-${{ matrix.houdini-version }}.${{ matrix.houdini-build }}-*
- name: Merge artifacts
shell: bash
run: |
mkdir merged
mv ZibraVDBForHoudini-${{ matrix.houdini-version }}.${{ matrix.houdini-build }}-win64-vc143/* merged/
mv ZibraVDBForHoudini-${{ matrix.houdini-version }}.${{ matrix.houdini-build }}-linux_x86_64_gcc11.2/dso/ZibraVDBForHoudini.so merged/dso/ZibraVDBForHoudini.so
lipo -create -output merged/dso/ZibraVDBForHoudini.dylib ZibraVDBForHoudini-${{ matrix.houdini-version }}.${{ matrix.houdini-build }}-macosx_arm64_clang15.0_14/dso/ZibraVDBForHoudini.dylib ZibraVDBForHoudini-${{ matrix.houdini-version }}.${{ matrix.houdini-build }}-macosx_x86_64_clang15.0_14/dso/ZibraVDBForHoudini.dylib
- name: Apple sign and notarize
shell: bash
run: ${{ github.workspace }}/actions/apple/sign_and_notarize_dylib.sh ${{ github.workspace }}/merged/dso/ZibraVDBForHoudini.dylib
env:
DEVELOPER_ID_APPLICATION_CERT: ${{ secrets.DEVELOPER_ID_APPLICATION_ZIBRA_AI_CERT }}
DEVELOPER_ID_APPLICATION_PASS: ${{ secrets.DEVELOPER_ID_APPLICATION_ZIBRA_AI_PASS }}
DEVELOPER_ID_APPLICATION_NAME: ${{ secrets.DEVELOPER_ID_APPLICATION_ZIBRA_AI_NAME }}
APPLE_DEVELOPER_TEAM: ${{ secrets.APPLE_DEVELOPER_ZIBRA_AI_TEAM }}
NOTARIZATION_USER: ${{ secrets.NOTARIZATION_ZIBRA_AI_USER }}
NOTARIZATION_PASS: ${{ secrets.NOTARIZATION_ZIBRA_AI_PASS }}
- name: Save merged artifacts
uses: actions/upload-artifact@v4
with:
name: ZibraVDBForHoudini-${{ matrix.houdini-version }}.${{ matrix.houdini-build }}
path: merged
if-no-files-found: error
retention-days: 28
- name: Delete partial artifacts
uses: geekyeggo/delete-artifact@f275313e70c08f6120db482d7a6b98377786765b # v5.1.0
with:
name: ZibraVDBForHoudini-${{ matrix.houdini-version }}.${{ matrix.houdini-build }}-*