Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
2581070
Guard disk cache clearing with marker file
Jun 6, 2026
9b91e1e
factor context creation out so to remove the qt dependency
toloudis Jun 28, 2026
2a46309
initial add, with windows building
toloudis Jul 17, 2026
3ed99b2
build python package
toloudis Jul 18, 2026
604efec
add nanobind as submodule
toloudis Jul 19, 2026
5d8b347
iterating on the build system
toloudis Jul 19, 2026
bd91704
iterating on streamlining the build
toloudis Jul 19, 2026
1d35942
push qt and agave_app install info down into the agave_app subdirectory
toloudis Jul 19, 2026
71f32bd
nanobind is submoduled
toloudis Jul 19, 2026
f893c82
apple silicon only
toloudis Jul 19, 2026
59a5fed
remove the shaderc check
toloudis Jul 20, 2026
cb356a3
switch python module build on by default
toloudis Jul 19, 2026
3e3b62c
diagnosing the build
toloudis Jul 20, 2026
82b3b88
more debugging, use a newer fixed vulkan install action
toloudis Jul 20, 2026
93a8d72
find_package not quiet
toloudis Jul 20, 2026
2f72735
try latest and greatest vulkan sdk
toloudis Jul 20, 2026
53d8f2a
new vulkan sdk installer
toloudis Jul 20, 2026
5c67168
rename font class
toloudis Jul 20, 2026
b510801
fix linux build by using QNativeInterface
toloudis Jul 20, 2026
f187c9e
fix include
toloudis Jul 20, 2026
9fc9939
one more try at the right include
toloudis Jul 21, 2026
b8c41cd
simplify build
toloudis Jul 21, 2026
42e298a
more build tweaks
toloudis Jul 21, 2026
6b5f200
simplify the python build again, assume it uses the same python inter…
toloudis Jul 22, 2026
2dd832a
cleanup
toloudis Jul 22, 2026
226072d
refactor gh action builds
toloudis Jul 22, 2026
964e001
fix apple packaging of python agave_pyvk
toloudis Jul 22, 2026
3acf30b
remove the AGAVE_BUILD_PYVK option
toloudis Jul 22, 2026
d8104e7
try a better way of testing the agave_pyvk importable
toloudis Jul 22, 2026
ec529ba
move the vulkan cmake plumbing into a separate include file
toloudis Jul 22, 2026
52a4638
fix dir name
toloudis Jul 22, 2026
46d4f63
simplify /clarify readmes
toloudis Jul 23, 2026
a866498
cleanup
toloudis Jul 23, 2026
e0d31d5
refactor to push more implementation back into renderlib
toloudis Jul 23, 2026
ad111a4
build fixup
toloudis Aug 16, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
225 changes: 126 additions & 99 deletions .github/workflows/build_and_test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -80,133 +80,160 @@ jobs:
with:
name: DocumentationPythonClientPDF
path: agave_pyclient/docs/_build/latex/agave_pyclient.pdf
cmake-build:
strategy:
fail-fast: false
matrix:
include:
- os: ubuntu-latest
artifact: agave-linux
- os: windows-latest
artifact: agave-win
- os: macos-15
artifact: agave-macos-arm64
- os: macos-15-intel
artifact: agave-macos-x86_64

runs-on: ${{ matrix.os }}

linux-build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
with:
submodules: "recursive"
- name: Install Qt
uses: jurplel/install-qt-action@v4
- uses: actions/setup-python@v6
with:
python-version: "3.12"
- uses: jurplel/install-qt-action@v4
with:
version: 6.9.3
modules: qtwebsockets qtimageformats
- name: Install Vulkan SDK
uses: humbletim/install-vulkan-sdk@e7d6e7b937bde4503c7ba5c9584c9dc68f44c4b8
- uses: jakoch/install-vulkan-sdk-action@37effcfa045411f8bfbbda26df2fd1b3bf3436fa
with:
version: 1.4.350.0
vulkan_version: 1.4.350.1
cache: true
- name: macos install deps
if: contains(matrix.os, 'macos')
- name: Diagnose Vulkan SDK installation
shell: bash
run: |
echo "VULKAN_SDK=$VULKAN_SDK"
find "$VULKAN_SDK/include/vulkan" -maxdepth 1 -name "vulkan.h" -print
find "$VULKAN_SDK/lib" -maxdepth 1 \( -name "libvulkan*" -o -name "*shaderc*" \) -print
find "$VULKAN_SDK/bin" -maxdepth 1 -name "glslc*" -print
- name: Install dependencies
run: sudo apt-get install libspdlog-dev libglm-dev libgl1-mesa-dev libegl1-mesa-dev libtiff-dev libzstd-dev libcurl4-openssl-dev nasm
- name: Build and test
env:
CC: clang
CXX: clang++
CC: gcc-13
CXX: g++-13
run: |
cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release
cmake --build build --target agave_test --config Release
cmake --build build --target install --config Release
- uses: actions/upload-artifact@v6
with:
name: agave-linux
path: ./build/install/Release/agave-install
- name: Install and test agave_pyvk
working-directory: agave_pyvk
run: |
python -m pip install -e ".[test]"
python -c "from agave_pyvk import AgaveRenderer; import agave_pyvk._native"
python -m pytest tests

macos-build:
runs-on: macos-15
env:
CC: clang
CXX: clang++
MACOSX_DEPLOYMENT_TARGET: "11.0"
steps:
- uses: actions/checkout@v6
with:
submodules: "recursive"
- uses: actions/setup-python@v6
with:
python-version: "3.12"
- uses: jurplel/install-qt-action@v4
with:
version: 6.9.3
modules: qtwebsockets qtimageformats
- uses: jakoch/install-vulkan-sdk-action@37effcfa045411f8bfbbda26df2fd1b3bf3436fa
with:
vulkan_version: 1.4.350.1
cache: true
- name: Diagnose Vulkan SDK installation
run: |
echo "VULKAN_SDK=$VULKAN_SDK"
find "$VULKAN_SDK/include/vulkan" -maxdepth 1 -name "vulkan.h" -print
find "$VULKAN_SDK/lib" -maxdepth 1 \( -name "libvulkan*" -o -name "*shaderc*" \) -print
find "$VULKAN_SDK/bin" -maxdepth 1 -name "glslc*" -print
- name: Install dependencies
run: |
export MACOSX_DEPLOYMENT_TARGET=10.15
brew install spdlog nasm curl
if [ -d /usr/local/include/openssl ]; then
mv /usr/local/include/openssl /usr/local/include/openssl.bak
fi
- name: macos build and test
if: contains(matrix.os, 'macos')
- name: Build and test
env:
CC: clang
CXX: clang++
run: |
export MACOSX_DEPLOYMENT_TARGET=10.15
export Qt6_DIR=${{ runner.workspace }}/Qt/6.9.3/macos
mkdir ./build
cd build
cmake .. -G Ninja -DCMAKE_BUILD_TYPE=Release
cmake --build . --target agave_test --config Release
cmake --build . --config Release
cpack -D CPACK_PACKAGE_FILE_NAME=${{ matrix.artifact }}
shell: bash
- name: Upload mac artifact
if: contains(matrix.os, 'macos')
uses: actions/upload-artifact@v6
with:
name: ${{ matrix.artifact }}
path: ./build/${{ matrix.artifact }}.dmg
- name: linux install deps
if: matrix.os == 'ubuntu-latest'
env:
CC: gcc
CXX: g++
Qt6_DIR: ${{ runner.workspace }}/Qt/6.9.3/macos
run: |
sudo apt-get install libspdlog-dev libglm-dev libgl1-mesa-dev libegl1-mesa-dev libtiff-dev libzstd-dev libcurl4-openssl-dev nasm
- name: linux build and test
if: matrix.os == 'ubuntu-latest'
env:
CC: gcc-13
CXX: g++-13
cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release
cmake --build build --target agave_test --config Release
cmake --build build --config Release
cpack --config build/CPackConfig.cmake -B build -D CPACK_PACKAGE_FILE_NAME=agave-macos-arm64
- uses: actions/upload-artifact@v6
with:
name: agave-macos-arm64
path: ./build/agave-macos-arm64.dmg
- name: Install and test agave_pyvk
working-directory: agave_pyvk
run: |
mkdir ./build
cd build
cmake .. -G Ninja -DCMAKE_BUILD_TYPE=Release
cmake --build . --target agave_test --config Release
cmake --build . --target install --config Release
shell: bash
- name: linux upload artifact
if: matrix.os == 'ubuntu-latest'
uses: actions/upload-artifact@v6
python -m pip install -e ".[test]"
python -c "from agave_pyvk import AgaveRenderer; import agave_pyvk._native"
python -m pytest tests

windows-build:
runs-on: windows-latest
steps:
- uses: actions/checkout@v6
with:
name: ${{ matrix.artifact }}
path: ./build/install/Release/agave-install
- name: windows install nasm
if: matrix.os == 'windows-latest'
run: |
choco install nasm
- name: windows install nsis
if: matrix.os == 'windows-latest'
run: choco install nsis -y
- name: windows install deps
if: matrix.os == 'windows-latest'
submodules: "recursive"
- uses: actions/setup-python@v6
with:
python-version: "3.12"
- uses: jurplel/install-qt-action@v4
with:
version: 6.9.3
modules: qtwebsockets qtimageformats
- uses: jakoch/install-vulkan-sdk-action@37effcfa045411f8bfbbda26df2fd1b3bf3436fa
with:
vulkan_version: 1.4.350.0
cache: true
- name: Install dependencies
shell: cmd
env:
vc_arch: "x64"
run: |
choco install nasm nsis -y
call "C:\Program Files\Microsoft Visual Studio\18\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" x64
vcpkg install --triplet x64-windows tiff glm zlib libjpeg-turbo liblzma spdlog zstd curl
- name: Remove bad Strawberry Perl patch binary in search path
# https://github.com/actions/runner-images/issues/5459#issuecomment-1532856844
if: matrix.os == 'windows-latest'
run: echo "C:\Program Files\git\usr\bin" >> $env:GITHUB_PATH
- name: Diagnose Vulkan SDK installation
shell: pwsh
run: |
echo "C:\Program Files\git\usr\bin" >> $env:GITHUB_PATH
- name: windows build and test
if: matrix.os == 'windows-latest'
env:
vc_arch: "x64"
# use older sdk to work around https://github.com/grpc/grpc/issues/37210
Write-Host "VULKAN_SDK=$env:VULKAN_SDK"
Get-Item "$env:VULKAN_SDK\Include\vulkan\vulkan.h" -ErrorAction Continue
Get-ChildItem "$env:VULKAN_SDK\Lib" -Filter "vulkan*" -ErrorAction Continue
Get-ChildItem "$env:VULKAN_SDK\Bin" -Filter "glslc*" -ErrorAction Continue
Get-ChildItem "$env:VULKAN_SDK\Lib" -Filter "*shaderc*" -ErrorAction Continue
- name: Build and test
shell: cmd
run: |
mkdir build
cd build
call "C:\Program Files\Microsoft Visual Studio\18\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" x64
cmake -G "Ninja" -DCMAKE_TOOLCHAIN_FILE="%VCPKG_INSTALLATION_ROOT%\scripts\buildsystems\vcpkg.cmake" -DVCPKG_TARGET_TRIPLET=x64-windows -DCMAKE_BUILD_TYPE=Release ..
cmake --build . --parallel --target agave_test --config Release
cmake --build . --parallel --config Release
cpack -D CPACK_PACKAGE_FILE_NAME=${{ matrix.artifact }}
shell: cmd
- name: Upload windows artifact
if: matrix.os == 'windows-latest'
uses: actions/upload-artifact@v6
cmake -S . -B build -G "Ninja" -DCMAKE_TOOLCHAIN_FILE="%VCPKG_INSTALLATION_ROOT%\scripts\buildsystems\vcpkg.cmake" -DVCPKG_TARGET_TRIPLET=x64-windows -DCMAKE_BUILD_TYPE=Release
if errorlevel 1 exit /b %errorlevel%
cmake --build build --parallel --target agave_test --config Release
if errorlevel 1 exit /b %errorlevel%
cmake --build build --parallel --config Release
if errorlevel 1 exit /b %errorlevel%
cpack --config build\CPackConfig.cmake -B build -D CPACK_PACKAGE_FILE_NAME=agave-win
- uses: actions/upload-artifact@v6
with:
name: ${{ matrix.artifact }}
path: ./build/${{ matrix.artifact }}.exe
name: agave-win
path: ./build/agave-win.exe
- name: Install and test agave_pyvk
working-directory: agave_pyvk
shell: cmd
run: |
call "C:\Program Files\Microsoft Visual Studio\18\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" x64
python -m pip install -e ".[test]"
if errorlevel 1 exit /b %errorlevel%
python -c "from agave_pyvk import AgaveRenderer; import agave_pyvk._native"
python -m pytest tests

lint-and-test-webclient:
runs-on: ubuntu-latest
Expand Down
Loading
Loading