Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
109 commits
Select commit Hold shift + click to select a range
27eef82
Remove QGIS_MACAPP_FRAMEWORK
m-kuhn Jan 2, 2025
9dcecb5
New app layout
m-kuhn Jan 2, 2025
7fb1d26
Disable mac packager workflow
m-kuhn Jan 2, 2025
6a681d9
Mac vcpkg workflow
m-kuhn Jan 2, 2025
6a04f44
Bump py-tomli
m-kuhn Jan 2, 2025
6593a36
Improve workflows
m-kuhn Jan 2, 2025
1a259c0
Fix CPACK_PACKAGING_INSTALL_PREFIX for macos
m-kuhn Jan 2, 2025
6fe4f5b
Fix packaging install prefix
m-kuhn Jan 2, 2025
4f5bcd5
Store build cache
m-kuhn Jan 2, 2025
d26b1da
Fix download link for x64 dmg
m-kuhn Jan 2, 2025
3c2edda
Externalize dmg building
m-kuhn Jan 3, 2025
dc9f5b9
Fix path
m-kuhn Jan 3, 2025
3a7cda9
Fix bundle paths
m-kuhn Jan 4, 2025
4acd65f
Make the app name configurable
m-kuhn Jan 4, 2025
e92b090
Remove leftover install
m-kuhn Jan 4, 2025
4b89fc1
Upload dmg
m-kuhn Jan 4, 2025
5b0723e
Handle symlinks in lipo-dir-merge
m-kuhn Jan 5, 2025
c0c6dc2
Switch to a python based macdeployqt'
m-kuhn Jan 6, 2025
1f754b5
Update installer image
m-kuhn Jan 6, 2025
4a00381
Preserve symlinks via tar
m-kuhn Jan 7, 2025
a47e333
Ignore spellcheck
m-kuhn Jan 7, 2025
ca57c97
Fix qca plugins
m-kuhn Jan 8, 2025
1f331f9
Fix processing gdal algs
m-kuhn Jan 8, 2025
33fde97
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Jan 8, 2025
27dff0f
Add app icons for macOS with Apple standards
alexkolodko Dec 5, 2024
01467a4
Specify dark mode icon
m-kuhn Jan 8, 2025
2efb56d
Make qca softstore optional
m-kuhn Jan 9, 2025
0e8e548
Fix auth on win/vcpkg
m-kuhn Jan 9, 2025
908f53b
Ship QtQuickWidgets and fix PyQt6.QtQuickWidgets
m-kuhn Jan 10, 2025
5df38de
Set deployment target
m-kuhn Jan 13, 2025
2f70b2c
Fix gdal algorithms
m-kuhn Jan 26, 2025
b9ac093
Fix relative python path
m-kuhn Jan 27, 2025
c875160
Support for arrow-adbc, duckdb and oracle
m-kuhn Mar 16, 2025
fd339a2
asset caching from open-vcpkg
m-kuhn Mar 17, 2025
7ac9255
fix oracle version
m-kuhn Mar 17, 2025
a25ebee
No symlinks in oracle instantclient
m-kuhn Mar 31, 2025
73dc235
Add gdal parquet support
m-kuhn Mar 31, 2025
dc69db8
add autoconf-archive package to INSTALL
smellman Mar 30, 2025
e004367
Fix lipomerge
m-kuhn Apr 11, 2025
b8fb157
Do not install headers on macos
m-kuhn Jun 1, 2025
f11be2e
Bump baseline
m-kuhn Jun 1, 2025
c8949f2
Improve cmake opencl handling
m-kuhn Jun 1, 2025
5dbfa87
Bump GDAL to 3.11.0 and update some python deps
m-kuhn Jun 5, 2025
feffb5a
Enable arrow-adbc feature for gdal
m-kuhn Jun 6, 2025
ebc2150
Remove local py-setuptools overlay
m-kuhn Jun 7, 2025
b30bd08
Remove copyright info with maintenance effort heavy year info
m-kuhn Jun 11, 2025
63cf9f8
Show more info on install_name_tool error
m-kuhn Jun 12, 2025
f7a9afa
auto-fix pre-commit issues
github-actions[bot] Jun 12, 2025
ad1c6d3
Enable ODBC driver
m-kuhn Jun 13, 2025
801ebfb
Fix typo
m-kuhn Jun 13, 2025
4439c9e
add pydantic and psycopg to mac dmg
3nids Jun 13, 2025
979b6ad
Fix qtbase[sql-odbc] for osx
m-kuhn Jun 13, 2025
7b074c3
add pydantic and psycopg to vcpkg
m-kuhn Jun 14, 2025
0968a7b
Merge branch 'master' into macdmg
m-kuhn Jun 14, 2025
4394c23
Typo
m-kuhn Jun 14, 2025
26d8bae
Baseline
m-kuhn Jun 14, 2025
259dc69
Fix indentation
m-kuhn Jun 16, 2025
5c950b9
Only set id once
m-kuhn Jun 16, 2025
e927cd5
[fix] Remove extra item in the Actions container (Available Widgets t…
gacarrillor Jun 23, 2025
9d459a0
Rename C++ class GEOSException to QgsGeosException
rouault Jun 23, 2025
7cb5ca3
testqgs3dcameracontroller: Ensure proper OpenGL context
ptitjano Jun 23, 2025
5d00569
Don't trigger reshape logic when using less than two points (#62324)
uclaros Jun 23, 2025
1dbeb61
Fix reshaping whith an active selection
uclaros Jun 17, 2025
89e165d
[GML] Add parsing support for Z geometries
elpaso Jun 17, 2025
55a1e38
doxy
elpaso Jun 17, 2025
ae2cf3b
Expose QgsPolyline to SIP
elpaso Jun 17, 2025
c275af3
Fix multipolygon gml and add more tests
elpaso Jun 18, 2025
fc7e16f
tidy warnings
elpaso Jun 18, 2025
06487d7
More ogc utils tests
elpaso Jun 18, 2025
807a784
Remove unused if
elpaso Jun 18, 2025
c734e1f
more tidy warnings
elpaso Jun 18, 2025
124a285
Don't crash when undoing first digitized point
uclaros Jun 19, 2025
5ba6b15
Fix reshape when snapping to segment
uclaros Jun 17, 2025
fa7681b
Add points on intersections by default when tracing
uclaros Jun 20, 2025
9d0f20d
auto sipify 🍺
Jun 23, 2025
e069fd7
testqgs3dcameracontroller: Now test for navigation mode shortcut change
ptitjano Jun 23, 2025
9456e8a
load GdalAlgorithmDialog containing console call widget instead of ba…
ViperMiniQ Jun 9, 2025
c1396bd
add decision gdal or native dialog
ViperMiniQ Jun 9, 2025
0da5616
auto-fix pre-commit issues
github-actions[bot] Jun 9, 2025
3323834
use better logic when opening dialogs
ViperMiniQ Jun 17, 2025
5a09c69
auto-fix pre-commit issues
github-actions[bot] Jun 17, 2025
46b0426
create algorithm instance before making a decision
ViperMiniQ Jun 17, 2025
cbdf99c
auto-fix pre-commit issues
github-actions[bot] Jun 17, 2025
a9fc799
append default file name to lastUsedDir
pgipper Jun 6, 2025
1993733
Apply suggestions from code review
nyalldawson Jun 23, 2025
27b6e08
auto-fix pre-commit issues
github-actions[bot] Jun 23, 2025
47f6704
[gui][layouts] Add set extent to layer item in the map item's toolbar…
nirvn May 18, 2025
d74364a
Inform user of absence of spatial layers/bookmarks instead of empty menu
nirvn May 18, 2025
f24d4c4
Improve layers and bookmarks toolbar actions' tooltip
nirvn May 18, 2025
1a01989
Apply suggestions from code review
nyalldawson Jun 24, 2025
4757638
[Tests] Disable 7 tests that break due to expired certificate
rouault Jun 23, 2025
9241880
Fix ambiguity in QgsMapLayer::saveStyleToDatabase API
nyalldawson Jun 23, 2025
48e1efe
Replace deprecated method calls
nyalldawson Jun 24, 2025
cd3a1d0
auto sipify 🍺
Jun 24, 2025
5142e49
[ogr] Only retrieve layer crs once
nyalldawson Jun 24, 2025
b97c1f9
Apply suggestions from code review
nyalldawson Jun 24, 2025
688afa6
Slightly delay background render of layout maps in preview
nyalldawson Jun 24, 2025
2e24086
Optimize hue/saturation filter
nyalldawson Jun 18, 2025
73e4ff2
Add early exit path to hue/saturation filter
nyalldawson Jun 18, 2025
3676cac
Merge pull request #62370 from gacarrillor/fix_load_action_items_in_a…
alexbruy Jun 25, 2025
b1ce232
Merge pull request #60039 from qgis/macdmg
m-kuhn Jun 25, 2025
ae81584
Add py-duckdb
m-kuhn Jun 25, 2025
99ff547
vcpkg-diff: graceful with * at the start of the line
m-kuhn Jun 25, 2025
244746f
Fixed target name and configurable executable name
m-kuhn Jun 25, 2025
4fa4a32
Merge pull request #62407 from qgis/py-duckdb
m-kuhn Jun 25, 2025
2b1c9fe
Fix ccache id for macos
m-kuhn Jun 25, 2025
ced6fd5
Use filename instead of display-name
m-kuhn Jun 25, 2025
85637da
Remove spaces from master build ids
m-kuhn Jun 25, 2025
10e8d76
button test
phidrho Jun 25, 2025
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
34 changes: 34 additions & 0 deletions .github/actions/get-workflow-artifact-ids/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
name: 'Get Workflow Artifact IDs'
description: 'Generates consistent artifact IDs and names based on workflow trigger'

outputs:
filename:
description: 'Filename to use for artifacts (e.g. pr123)'
value: ${{ steps.generate-ids.outputs.filename }}
display-name:
description: 'Human readable name (e.g. PR123)'
value: ${{ steps.generate-ids.outputs.display_name }}

runs:
using: "composite"
steps:
- id: generate-ids
shell: bash
run: |
if [ "${{ github.event_name }}" = "pull_request" ]; then
ID="pr${{ github.event.pull_request.number }}"
DISPLAY_ID="PR${{ github.event.pull_request.number }}"
elif [[ "${{ github.ref }}" == refs/tags/* ]]; then
TAG=${GITHUB_REF#refs/tags/}
ID="$TAG"
DISPLAY_ID="$TAG"
else
SHORT_SHA=$(echo ${{ github.sha }} | cut -c1-7)
BRANCH_NAME=${GITHUB_REF#refs/heads/}
ID="$BRANCH_NAME-$SHORT_SHA"
DISPLAY_ID="$BRANCH_NAME-$SHORT_SHA"
fi

# Set outputs
echo "filename=$ID" >> $GITHUB_OUTPUT
echo "display_name=$DISPLAY_ID" >> $GITHUB_OUTPUT
2 changes: 1 addition & 1 deletion .github/actions/vcpkg_update_report/vcpkg-diff.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ def extract_packages(data):
for line in lines:
# Regex to match the package format and capture features inside brackets
match = re.match(
r"\s*\*\s+([^\[\]:]+)(?:\[(.*?)\])?:([^\[\]@]+)@([^\s]+)\s+--", line
r"\s*\*?\s+([^\[\]:]+)(?:\[(.*?)\])?:([^\[\]@]+)@([^\s]+)\s+--", line
)
if match:
package_name = match.group(1)
Expand Down
140 changes: 127 additions & 13 deletions .github/workflows/build-macos-qt6.yml
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
---
name: 🍎 Build - MacOS Qt6
on:
# push:
# branches:
# - main
# pull_request:
# release:
# types: ['published']
push:
branches:
- master
- release-*
pull_request:
release:
types: ['published']
workflow_dispatch:

concurrency:
Expand All @@ -18,9 +19,9 @@ jobs:
strategy:
matrix:
include:
# - os: macos-13
# triplet: x64-osx
# deployment-target: "10.15"
- os: macos-13
triplet: x64-osx-dynamic-release
deployment-target: "10.15"
- os: macos-14
triplet: arm64-osx-dynamic-release
deployment-target: "11.0"
Expand All @@ -42,9 +43,13 @@ jobs:
id: setup-vcpkg
uses: ./.github/actions/setup-vcpkg

- name: 🎲 Get artifact ids
id: workflow-artifact-ids
uses: ./.github/actions/get-workflow-artifact-ids

- name: 🔨 Prepare build env
run: |
brew install automake bison flex gnu-sed create-dmg autoconf-archive nasm libtool fdupes
brew install automake bison flex gnu-sed autoconf-archive nasm libtool fdupes
echo $(brew --prefix bison)/bin >> $GITHUB_PATH
echo $(brew --prefix flex)/bin >> $GITHUB_PATH
echo $(brew --prefix libtool)/bin >> $GITHUB_PATH
Expand All @@ -58,7 +63,22 @@ jobs:
with:
xcode-version: latest-stable

- name: 🛍️ Setup ccache
uses: hendrikmuhs/[email protected]
with:
max-size: 500M
key: build-ccache-${{ matrix.triplet }}-qt6-${{ github.event.pull_request.base.ref || github.ref_name }}
save: ${{ github.event_name == 'push' }}

- name: 🛍️ Tune ccache configuration
shell: bash
run: |
# To make ccache work properly with precompiled headers
ccache --set-config sloppiness=pch_defines,time_macros,include_file_mtime,include_file_ctime

- name: 🌱 Install dependencies and generate project files
env:
X_VCPKG_ASSET_SOURCES: x-azurl,https://assetcache.open-vcpkg.org/assetcache,,read
run: |
echo "VCPKG_ROOT: ${VCPKG_ROOT}"

Expand All @@ -67,18 +87,22 @@ jobs:
cmake -S . \
-G Ninja \
-B build \
-D QGIS_APP_NAME="QGIS-${{steps.workflow-artifact-ids.outputs.display-name}}" \
-D WITH_VCPKG=ON \
-D BUILD_WITH_QT6=ON \
-D WITH_QTWEBKIT=OFF \
-D WITH_BINDINGS=ON \
-D QGIS_MACAPP_FRAMEWORK=OFF \
-D WITH_ORACLE=ON \
-D VCPKG_TARGET_TRIPLET="${{ matrix.triplet }}" \
-D VCPKG_HOST_TRIPLET="${{ matrix.triplet }}" \
-D VCPKG_INSTALL_OPTIONS="--only-binarycaching" \
-D CMAKE_OSX_DEPLOYMENT_TARGET=${{ matrix.deployment-target }} \
-D ENABLE_UNITY_BUILDS=ON \
-D NUGET_USERNAME=${{ github.actor }} \
-D NUGET_SOURCE="https://nuget.pkg.github.com/${{ github.repository_owner }}/index.json" \
-D NUGET_TOKEN=${{ secrets.GITHUB_TOKEN }} || true

fdupes -r -1 build/vcpkg_installed/arm64-osx-dynamic/lib | grep libQt | while read line; do master=""; for file in ${line[*]}; do if [[ "x${master}" == "x" ]]; then master=$file; else rm "${file}"; ln -s $(basename "${master}") "${file}"; fi; done; done
fdupes -q -r -1 build/vcpkg_installed/${{ matrix.triplet }}/lib | grep libQt | while read line; do master=""; for file in ${line[*]}; do if [[ "x${master}" == "x" ]]; then master=$file; else rm "${file}"; ln -s $(basename "${master}") "${file}"; fi; done; done

cmake -D VCPKG_INSTALL_OPTIONS="" build

Expand All @@ -99,10 +123,100 @@ jobs:
if: github.event_name == 'workflow_dispatch' || github.event_name == 'release'
uses: actions/upload-artifact@v4
with:
name: kadas-albireo2-sdk-${{ matrix.triplet }}
name: qgis-sdk-${{ matrix.triplet }}
path: |
sdk/vcpkg-export-*.zip

- name: 🌋 Build
run: |
# We make sure the target "all" is built before bundling
# Ideally, we would specify each target that is required to be installed, but this workaround is sufficient for now
cmake --build build
cmake --build build --target bundle

- name: Archive app
run: |
gtar -cpvzf qgis-app-${{steps.workflow-artifact-ids.outputs.filename}}-${{ matrix.triplet }}.tar.gz ./build/_CPack_Packages/Darwin/External/*/*.app

- name: 📤 Upload app
uses: actions/upload-artifact@v4
with:
name: qgis-app-${{steps.workflow-artifact-ids.outputs.filename}}-${{ matrix.triplet }}
path: |
qgis-app-${{steps.workflow-artifact-ids.outputs.filename}}-${{ matrix.triplet }}.tar.gz

schedule_download_comment:
name: Create dmg
runs-on: macos-latest
needs: build
steps:
- name: 🐣 Checkout
uses: actions/checkout@v4

- name: 🔨 Prepare build env
run: |
brew install create-dmg


- name: 🎲 Get artifact ids
id: workflow-artifact-ids
uses: ./.github/actions/get-workflow-artifact-ids

- name: 📤 Download app
uses: actions/download-artifact@v4
with:
pattern: qgis-app-${{steps.workflow-artifact-ids.outputs.filename}}-*
path: |
artifacts

- name: Create universal app
run: |
mkdir -p x64
gtar --strip-components=5 -zxf ./artifacts/qgis-app-${{steps.workflow-artifact-ids.outputs.filename}}-x64-osx-dynamic-release/qgis-app-${{steps.workflow-artifact-ids.outputs.filename}}-x64-osx-dynamic-release.tar.gz -C x64
mkdir -p arm64
gtar --strip-components=5 -zxf ./artifacts/qgis-app-${{steps.workflow-artifact-ids.outputs.filename}}-arm64-osx-dynamic-release/qgis-app-${{steps.workflow-artifact-ids.outputs.filename}}-arm64-osx-dynamic-release.tar.gz -C arm64

pip install lipomerge
lipomerge ./x64 ./arm64 universal

- name: Create dmg
run: |
QGIS_APP_NAME=QGIS-"${{steps.workflow-artifact-ids.outputs.display-name}}"
create-dmg --volname "${QGIS_APP_NAME} Installer" \
--hide-extension ${QGIS_APP_NAME}.app \
--volicon "$(pwd)/images/icons/mac/qgis.icns" \
--background "$(pwd)/platform/macos/installer_background.png" \
--window-pos 200 120 \
--window-size 512 320 \
--icon-size 100 \
--icon "${QGIS_APP_NAME}.app" 130 160 \
--app-drop-link 400 155 \
${QGIS_APP_NAME}-Installer.dmg \
universal/*/*.app

- name: 📤 Upload app
uses: actions/upload-artifact@v4
id: artifact-mac-qt6
with:
name: qgis-${{steps.workflow-artifact-ids.outputs.filename}}-dmg
path: |
*.dmg

- name: Upload release assets
uses: AButler/[email protected]
if: ${{ github.event_name == 'release' }}
with:
files: '*.dmg'
repo-token: ${{ secrets.GITHUB_TOKEN }}

- name: Schedule download comment
uses: ./.github/actions/post_sticky_comment
if: github.event_name == 'pull_request'
with:
marker: macos-qt6
body: |
### 🍎 MacOS Qt6 builds
Download [MacOS Qt6 builds of this PR for testing](${{ steps.artifact-mac-qt6.outputs.artifact-url }}).
_This installer is not signed, `control`+click > `open` the app to avoid the warning_
*(Built from commit ${{ github.event.pull_request.head.sha }})*
pr: ${{ github.event.number }}
140 changes: 0 additions & 140 deletions .github/workflows/macos-build.yml

This file was deleted.

Loading
Loading