Skip to content
Merged
Show file tree
Hide file tree
Changes from 34 commits
Commits
Show all changes
42 commits
Select commit Hold shift + click to select a range
3ef1ffe
Minor refactorings
ryanstocks00 Feb 24, 2026
75b9e7e
Fix contour file merging
ryanstocks00 Feb 24, 2026
67c7e96
Significantly improved qgis plugin usability
ryanstocks00 Feb 24, 2026
d6fced0
A bunch of AI generated tests
ryanstocks00 Feb 24, 2026
e942ada
More tests
ryanstocks00 Feb 24, 2026
38028ff
Fix issues with new tests
ryanstocks00 Feb 24, 2026
eb9150f
Fix tests and actually test installed packages on release
ryanstocks00 Feb 25, 2026
9fca471
Testing install release tests
ryanstocks00 Feb 25, 2026
c9daa7e
Skip nsw topo download in qgis plugin test
ryanstocks00 Feb 25, 2026
e19b6d8
Better apt pkg caching for CI
ryanstocks00 Feb 25, 2026
7ad41cc
Increase timeout and serialize windeployqt
ryanstocks00 Feb 25, 2026
6575acf
Install reccommended deps and discover tests and ctest time rather th…
ryanstocks00 Feb 25, 2026
f6fe61b
Bump apt cache version
ryanstocks00 Feb 25, 2026
eada110
Failing test
ryanstocks00 Mar 4, 2026
bddee7b
Fix slope correction and update laspp
ryanstocks00 Mar 7, 2026
c727fe9
install lapack and blas
ryanstocks00 Mar 7, 2026
9c83e32
DLL copy test
ryanstocks00 Mar 7, 2026
241f5b0
Install lapack and blas
ryanstocks00 Mar 8, 2026
cf78c8d
Update laspp and improve contour joining
ryanstocks00 Mar 8, 2026
6382cc9
Double check lapack install
ryanstocks00 Mar 8, 2026
1973bca
Action cleanup
ryanstocks00 Mar 8, 2026
faa3a66
Fix contour joining
ryanstocks00 Apr 21, 2026
d404947
Update las++
ryanstocks00 Apr 21, 2026
f1d2c6b
Cleanup lapack/blas install in CI
ryanstocks00 Apr 21, 2026
aadb448
Install g++ compiler in deps
ryanstocks00 Apr 21, 2026
5bbfc6a
plugin ci debugging
ryanstocks00 Apr 21, 2026
525170e
Small fixes
ryanstocks00 Apr 21, 2026
4d76b88
Improving qgis project creation
ryanstocks00 Apr 21, 2026
022c8f6
Always return dict in plugin
ryanstocks00 Apr 22, 2026
7596d38
Small refinements
ryanstocks00 Apr 22, 2026
701eab7
Testing actions cache instead of packages to speed up CI
ryanstocks00 Apr 22, 2026
80d5c6e
Fixing projection and allowing projection override
ryanstocks00 Apr 23, 2026
88ceaf5
Support multiple CRSs
ryanstocks00 Apr 23, 2026
f316ee0
CI install cleanup
ryanstocks00 Apr 25, 2026
7baae84
Updating las++ and big outputs
ryanstocks00 Apr 27, 2026
cc14b05
Update las++
ryanstocks00 Apr 30, 2026
3492ed2
Improving qgis styles
ryanstocks00 Apr 30, 2026
823babb
Vege layer resolution customization
ryanstocks00 May 1, 2026
2620ec7
Improved custom crs handling
ryanstocks00 May 2, 2026
9d6e7f8
Testing new CI nuget
ryanstocks00 May 2, 2026
3d3ad09
CI update
ryanstocks00 May 3, 2026
751e95a
Close contour loops
ryanstocks00 May 3, 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
69 changes: 41 additions & 28 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,6 @@ on:
pull_request:
branches: ["*"]
workflow_dispatch:
env:
VCPKG_BINARY_SOURCES: "clear;x-gha,readwrite"
jobs:
pre-commit:
runs-on: ubuntu-latest
Expand All @@ -22,22 +20,32 @@ jobs:
pre-commit run -a
ubuntu-latest-build:
runs-on: ubuntu-latest
timeout-minutes: 15
timeout-minutes: 30
steps:
- uses: actions/checkout@v4
- name: Cache apt packages
uses: actions/cache@v4
with:
path: |
/var/cache/apt
/var/lib/apt/lists
key: ${{ runner.os }}-apt-${{ hashFiles('scripts/install-ubuntu-deps.sh')
}}
restore-keys: |
${{ runner.os }}-apt-
- name: Install dependencies
uses: awalsh128/cache-apt-pkgs-action@v1
with:
packages: libgdal-dev libopencv-dev cmake libomp-dev rpm qt6-base-dev libglx-dev
libgl1-mesa-dev qt6-image-formats-plugins libqt6svg6-dev ccache mold ninja-build
version: 1.1
execute_install_scripts: true
# Install LAPACK/BLAS directly (not via cache) because liblapack.so.3 and
# libblas.so.3 are update-alternatives-managed symlinks; cache-apt-pkgs-action
# restores package files but does not run update-alternatives triggers, so the
# .so.3 symlinks are missing when restored from cache (breaks linking on arm64).
- name: Install LAPACK/BLAS
run: |
sudo apt-get update
sudo apt-get install -y --no-install-recommends \
liblapack-dev libblas-dev liblapack3 libblas3
sudo ldconfig
- name: Verify LAPACK installation
run: |
./scripts/install-ubuntu-deps.sh
ldconfig -p | grep -E 'lapack|blas' \
|| echo "Warning: LAPACK/BLAS not found in library cache"
ls -la /usr/lib/*/liblapack* /usr/lib/*/libblas* 2>/dev/null \
|| echo "Warning: LAPACK/BLAS libraries not found"
- name: Build CLI code
run: |
./scripts/linux-build.sh -DBLAZE_CLI_ONLY=True
Expand All @@ -55,25 +63,30 @@ jobs:
./blaze-cli assets/default_config.json
ubuntu-22-pdal-build:
runs-on: ubuntu-22.04
timeout-minutes: 15
timeout-minutes: 30
steps:
- uses: actions/checkout@v4
- name: Cache apt packages
uses: actions/cache@v4
with:
path: |
/var/cache/apt
/var/lib/apt/lists
key: ${{ runner.os }}-apt-${{ hashFiles('scripts/install-ubuntu-deps.sh')
}}
restore-keys: |
${{ runner.os }}-apt-
- name: Install dependencies
uses: awalsh128/cache-apt-pkgs-action@v1
with:
packages: libgdal-dev libopencv-dev cmake libomp-dev rpm qt6-base-dev libglx-dev
libgl1-mesa-dev qt6-image-formats-plugins libqt6svg6-dev ccache mold ninja-build
libpdal-dev
version: 1.1
execute_install_scripts: true
# Install LAPACK/BLAS directly (see comment in ubuntu-latest-build).
- name: Install LAPACK/BLAS
run: |
./scripts/install-ubuntu-deps.sh
- name: Install pdal
sudo apt-get update
sudo apt-get install -y --no-install-recommends \
liblapack-dev libblas-dev liblapack3 libblas3
sudo ldconfig
- name: Verify LAPACK installation
run: |
sudo apt install -y libpdal-dev
ldconfig -p | grep -E 'lapack|blas' \
|| echo "Warning: LAPACK/BLAS not found in library cache"
ls -la /usr/lib/*/liblapack* /usr/lib/*/libblas* 2>/dev/null \
|| echo "Warning: LAPACK/BLAS libraries not found"
- name: Build CLI code
run: |
./scripts/linux-build.sh -DBLAZE_CLI_ONLY=True -DBLAZE_USE_PDAL=True
Expand Down
22 changes: 22 additions & 0 deletions .github/workflows/cleanup-artifacts.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
---
name: Remove old artifacts
on:
schedule:
# Every day at 3am AEST (5pm UTC previous day)
- cron: '0 17 * * *'
jobs:
remove-old-artifacts:
runs-on: ubuntu-latest
timeout-minutes: 10
# For private repos
permissions:
actions: write
steps:
- name: Remove old artifacts
uses: c-hive/gha-remove-artifacts@v1
with:
age: '1 week' # Remove artifacts older than 1 week
# Optional inputs

# skip-tags: true
# skip-recent: 5
36 changes: 23 additions & 13 deletions .github/workflows/coverage.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,25 +9,35 @@ on:
jobs:
coverage:
runs-on: ubuntu-latest
timeout-minutes: 15
timeout-minutes: 30
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0 # Fetch all history for better coverage reports
- name: Cache apt packages
uses: actions/cache@v4
with:
path: |
/var/cache/apt
/var/lib/apt/lists
key: ${{ runner.os }}-apt-${{ hashFiles('scripts/install-ubuntu-deps.sh')
}}-coverage
restore-keys: |
${{ runner.os }}-apt-
- name: Install dependencies
uses: awalsh128/cache-apt-pkgs-action@v1
with:
packages: libgdal-dev libopencv-dev cmake libomp-dev rpm qt6-base-dev libglx-dev
libgl1-mesa-dev qt6-image-formats-plugins libqt6svg6-dev ccache mold ninja-build
lcov gcovr
version: 1.1
execute_install_scripts: true
# Install LAPACK/BLAS directly (not via cache) because liblapack.so.3 and
# libblas.so.3 are update-alternatives-managed symlinks; cache-apt-pkgs-action
# restores package files but does not run update-alternatives triggers, so the
# .so.3 symlinks are missing when restored from cache (breaks linking on arm64).
- name: Install LAPACK/BLAS
run: |
sudo apt-get update
sudo apt-get install -y --no-install-recommends \
liblapack-dev libblas-dev liblapack3 libblas3
sudo ldconfig
- name: Verify LAPACK installation
run: |
./scripts/install-ubuntu-deps.sh
sudo apt install -y lcov gcovr
ldconfig -p | grep -E 'lapack|blas' \
|| echo "Warning: LAPACK/BLAS not found in library cache"
ls -la /usr/lib/*/liblapack* /usr/lib/*/libblas* 2>/dev/null \
|| echo "Warning: LAPACK/BLAS libraries not found"
- name: Configure CMake with coverage
run: |
mkdir -p coverage-build
Expand Down
13 changes: 10 additions & 3 deletions .github/workflows/qgis-plugin-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -34,12 +34,19 @@ jobs:
export BLAZE_COMBINED_DIR=assets/out/combined
export BLAZE_OUTPUT_PATH=assets/out/combined.qgz
export BLAZE_EXIT_AFTER_RUN=1
export BLAZE_SKIP_TOPO_DOWNLOAD=1
export QT_QPA_PLATFORM=offscreen
timeout 300 xvfb-run -a qgis --nologo --code qgis_plugin/blaze_loader/create_qgis_project.py || true
- name: Check for QGIS project and required files
# Invoke the script as a standalone PyQGIS Python program (with
# python -u for unbuffered output) rather than via `qgis --code`.
# The `qgis --code` path was not executing the script at all in the
# containerised, offscreen environment (QGIS's Python console isn't
# initialised before startup hangs), so nothing from the script ever
# appeared in logs. The script now creates its own headless
# QgsApplication when run this way — see its __main__ block.
timeout 300 python3 -u qgis_plugin/blaze_loader/create_qgis_project.py
- name: Check for QGIS project
run: |
test -f assets/out/combined.qgz
test -f assets/out/combined/nsw_topo.gpkg
- name: Upload QGIS project with all layers
uses: actions/upload-artifact@v4
with:
Expand Down
79 changes: 61 additions & 18 deletions .github/workflows/release-app.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,11 @@ permissions:
contents: write
packages: write
env:
# Binary cache stored in this repo's GitHub Packages (NuGet) feed. The
# previous `x-gha` backend was removed by vcpkg in 2025 and also capped at
# 10 GB per repo, causing constant cache eviction/thrashing with Qt+GDAL.
# GitHub Packages on a public repo has no practical storage limit.
VCPKG_BINARY_SOURCES: "clear;nuget,GitHub,readwrite"
NUGET_CREDENTIALPROVIDER_SESSIONTOKENCACHE_ENABLED: "false"
jobs:
package-windows:
runs-on: ${{ matrix.os }}
Expand Down Expand Up @@ -45,24 +48,27 @@ jobs:
}
echo "version=$tag" >> $env:GITHUB_OUTPUT
echo "Version: $tag"
- name: Setup NuGet credentials
- name: Configure vcpkg binary cache (GitHub Packages NuGet)
shell: pwsh
run: |
$owner = "${{ github.repository_owner }}".ToLower()
$feed_url = "https://nuget.pkg.github.com/$owner/index.json"

nuget sources remove -Name "GitHub" -ErrorAction SilentlyContinue
nuget sources add -Name "GitHub" `
-Source $feed_url `
-UserName "$owner" `
-Password "${{ secrets.VCPKG_PAT_TOKEN }}" `
-StorePasswordInClearText `
-NonInteractive

nuget setapikey "${{ secrets.VCPKG_PAT_TOKEN }}" -Source $feed_url -NonInteractive

echo "VCPKG_BINARY_SOURCES=clear;nuget,GitHub,readwrite" >> $env:GITHUB_ENV
echo "VCPKG_NUGET_REPOSITORY=$feed_url" >> $env:GITHUB_ENV
# Locate a vcpkg.exe so we can use its bundled nuget. The
# runner-provided VCPKG_INSTALLATION_ROOT works; our project's
# FetchContent-managed vcpkg hasn't bootstrapped yet at this point.
$vcpkg = Join-Path $env:VCPKG_INSTALLATION_ROOT 'vcpkg.exe'
if (-not (Test-Path $vcpkg)) {
Write-Error "vcpkg.exe not found at $vcpkg (VCPKG_INSTALLATION_ROOT=$env:VCPKG_INSTALLATION_ROOT)"
exit 1
}
$nuget = & $vcpkg fetch nuget | Select-Object -Last 1
$owner = '${{ github.repository_owner }}'
$feed = "https://nuget.pkg.github.com/$owner/index.json"
& $nuget sources add `
-Source $feed `
-StorePasswordInClearText `
-Name GitHub `
-UserName $owner `
-Password '${{ secrets.GITHUB_TOKEN }}'
& $nuget setapikey '${{ secrets.GITHUB_TOKEN }}' -Source $feed
- name: Cache NSIS
id: nsis-cache
uses: actions/cache@v4
Expand Down Expand Up @@ -101,6 +107,14 @@ jobs:
if (Test-Path "build/_CPack_Packages/win64/NSIS/NSISOutput.log") {
Get-Content "build/_CPack_Packages/win64/NSIS/NSISOutput.log"
}
- name: Install package
run: |
$installer = (Get-Item build/Blaze-*.exe).FullName
Start-Process -Wait -FilePath $installer -ArgumentList '/S', '/D=C:\BlazeTest'
- name: Test installed package
run: |
Copy-Item -Recurse C:\BlazeTest\share\assets $env:TEMP\blaze-test
& C:\BlazeTest\bin\blaze-cli.exe $env:TEMP\blaze-test\default_config.json
- name: Upload Artifact
uses: actions/upload-artifact@v4
with:
Expand Down Expand Up @@ -136,7 +150,28 @@ jobs:
echo "version=$TAG" >> $GITHUB_OUTPUT
echo "Version: $TAG"
- name: Install dependencies
run: ./scripts/install-ubuntu-deps.sh
uses: awalsh128/cache-apt-pkgs-action@v1
with:
packages: libgdal-dev libopencv-dev cmake libomp-dev rpm qt6-base-dev libglx-dev
libgl1-mesa-dev qt6-image-formats-plugins libqt6svg6-dev ccache mold ninja-build
version: 1.1
execute_install_scripts: true
# Install LAPACK/BLAS directly (not via cache) because liblapack.so.3 and
# libblas.so.3 are update-alternatives-managed symlinks; cache-apt-pkgs-action
# restores package files but does not run update-alternatives triggers, so the
# .so.3 symlinks are missing when restored from cache (breaks linking on arm64).
- name: Install LAPACK/BLAS
run: |
sudo apt-get update
sudo apt-get install -y --no-install-recommends \
liblapack-dev libblas-dev liblapack3 libblas3
sudo ldconfig
- name: Verify LAPACK installation
run: |
ldconfig -p | grep -E 'lapack|blas' \
|| echo "Warning: LAPACK/BLAS not found in library cache"
ls -la /usr/lib/*/liblapack* /usr/lib/*/libblas* 2>/dev/null \
|| echo "Warning: LAPACK/BLAS libraries not found"
- name: Configure
run: |
CMAKE_ARGS=""
Expand All @@ -150,6 +185,14 @@ jobs:
run: |
cd build
cpack -C Release -G DEB
- name: Install DEB package
run: |
sudo dpkg -i build/Blaze-*.deb || true
sudo apt-get install -f -y
- name: Test installed package
run: |
cp -r /usr/share/assets /tmp/blaze-test
blaze-cli /tmp/blaze-test/default_config.json
- name: Upload Artifact
uses: actions/upload-artifact@v4
with:
Expand Down
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,8 @@ linux-deps/
out/
tmp/
laz_files/
test_laz_files/
test_laz_files_output_*/
vcpkg_installed/

*.user
Expand Down
Loading
Loading