From 077d0ab3730999bbb3434a40f73dd7e36e82340c Mon Sep 17 00:00:00 2001 From: Tomas Mizera Date: Wed, 21 Jan 2026 20:59:18 +0100 Subject: [PATCH 1/9] Ship arm64 pygeodiff builds with plugin --- .github/workflows/packages.yml | 30 ++++++++++++++++++++++++------ 1 file changed, 24 insertions(+), 6 deletions(-) diff --git a/.github/workflows/packages.yml b/.github/workflows/packages.yml index a91e90a2..881b661d 100644 --- a/.github/workflows/packages.yml +++ b/.github/workflows/packages.yml @@ -80,11 +80,9 @@ jobs: name: artifact-pygeodiff-windows path: ./pygeodiff-binaries/*.pyd - build_macos_binary: + build_macos_binaries: name: Extract geodiff binary macos runs-on: macos-latest - env: - PY_PLATFORM: "macosx_10_9_x86_64" steps: - uses: actions/setup-python@v4 name: Install Python @@ -93,14 +91,16 @@ jobs: run: | brew install unzip - - name: Download pygeodiff binaries + - name: Download pygeodiff binaries (Intel) + env: + PY_PLATFORM: "macosx_10_9_x86_64" run: | pip3 download --only-binary=:all: --no-deps --platform ${PY_PLATFORM} --python-version ${PYTHON_VER} --implementation cp --abi cp${PYTHON_VER} pygeodiff==$GEODIFF_VER unzip -o pygeodiff-$GEODIFF_VER-cp${PYTHON_VER}-cp${PYTHON_VER}-${PY_PLATFORM}.whl -d tmp mkdir pygeodiff-binaries cp tmp/pygeodiff/*.dylib ./pygeodiff-binaries/ - - name: Patching pygeodiff binaries + - name: Patching pygeodiff binaries (Intel) run: | install_name_tool -change @loader_path/.dylibs/libsqlite3.0.dylib @rpath/libsqlite3.dylib ./pygeodiff-binaries/libpygeodiff-$GEODIFF_VER-python.dylib OTOOL_L=$(otool -L ./pygeodiff-binaries/libpygeodiff-$GEODIFF_VER-python.dylib) @@ -110,13 +110,31 @@ jobs: exit 1 fi + - name: Download pygeodiff binaries (arm64) + env: + PY_PLATFORM: "macosx_14_0_arm64" + run: | + pip3 download --only-binary=:all: --no-deps --platform ${PY_PLATFORM} --python-version ${PYTHON_VER} --implementation cp --abi cp${PYTHON_VER} pygeodiff==$GEODIFF_VER + unzip -o pygeodiff-$GEODIFF_VER-cp${PYTHON_VER}-cp${PYTHON_VER}-${PY_PLATFORM}.whl -d tmp + cp tmp/pygeodiff/*.dylib ./pygeodiff-binaries/ # expects that the folder is created before in the intel job + + - name: Patching pygeodiff binaries (arm64) + run: | + install_name_tool -change @loader_path/.dylibs/libsqlite3.0.dylib @rpath/libsqlite3.dylib ./pygeodiff-binaries/libpygeodiff-$GEODIFF_VER-python-arm64.dylib + OTOOL_L=$(otool -L ./pygeodiff-binaries/libpygeodiff-$GEODIFF_VER-python-arm64.dylib) + if echo "${OTOOL_L}" | grep -q loader_path + then + echo "libpygeodiff-$GEODIFF_VER-python-arm64.dylib was not patched correctly, maybe sqlite version changed??" + exit 1 + fi + - uses: actions/upload-artifact@v4 with: name: artifact-pygeodiff-macos path: ./pygeodiff-binaries/*.dylib create_mergin_plugin_package: - needs: [build_windows_binaries, build_linux_binary, build_macos_binary] + needs: [build_windows_binaries, build_linux_binary, build_macos_binaries] runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 From c6d3543a33e483303227c622174d98733a464a76 Mon Sep 17 00:00:00 2001 From: Tomas Mizera Date: Fri, 23 Jan 2026 12:18:33 +0100 Subject: [PATCH 2/9] Upgrade geodiff to 2.1.1 --- .github/workflows/packages.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/packages.yml b/.github/workflows/packages.yml index d74bf4b5..452346d9 100644 --- a/.github/workflows/packages.yml +++ b/.github/workflows/packages.yml @@ -10,11 +10,11 @@ on: type: string REQUESTED_GEODIFF_VER: description: 'Geodiff version' - default: '2.0.4' + default: '2.1.1' type: string env: PYTHON_API_CLIENT_VER: ${{ inputs.REQUESTED_PYTHON_API_CLIENT_VER || '0.12.0' }} - GEODIFF_VER: ${{ inputs.REQUESTED_GEODIFF_VER || '2.0.4' }} + GEODIFF_VER: ${{ inputs.REQUESTED_GEODIFF_VER || '2.1.1' }} PYTHON_VER: "38" PLUGIN_NAME: Mergin jobs: From 587f260258a628d6f77fd13e66167bec2ce06796 Mon Sep 17 00:00:00 2001 From: Tomas Mizera Date: Fri, 23 Jan 2026 15:56:13 +0100 Subject: [PATCH 3/9] workaround: patch the old lib name --- .github/workflows/packages.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/packages.yml b/.github/workflows/packages.yml index 452346d9..bfe71448 100644 --- a/.github/workflows/packages.yml +++ b/.github/workflows/packages.yml @@ -116,7 +116,7 @@ jobs: run: | pip3 download --only-binary=:all: --no-deps --platform ${PY_PLATFORM} --python-version ${PYTHON_VER} --implementation cp --abi cp${PYTHON_VER} pygeodiff==$GEODIFF_VER unzip -o pygeodiff-$GEODIFF_VER-cp${PYTHON_VER}-cp${PYTHON_VER}-${PY_PLATFORM}.whl -d tmp - cp tmp/pygeodiff/*.dylib ./pygeodiff-binaries/ # expects that the folder is created before in the intel job + cp tmp/pygeodiff/libpygeodiff-$GEODIFF_VER-python.dylib ./pygeodiff-binaries/libpygeodiff-$GEODIFF_VER-python-arm64.dylib # expects that the folder is created before in the intel job - name: Patching pygeodiff binaries (arm64) run: | From ea37b8b779078287ebfa1c6fd3bbd052a4d4df16 Mon Sep 17 00:00:00 2001 From: Tomas Mizera Date: Fri, 23 Jan 2026 16:09:25 +0100 Subject: [PATCH 4/9] Update py platform on Linux based on Geodiff --- .github/workflows/packages.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/packages.yml b/.github/workflows/packages.yml index bfe71448..04c70f84 100644 --- a/.github/workflows/packages.yml +++ b/.github/workflows/packages.yml @@ -22,7 +22,7 @@ jobs: name: Extract geodiff binary linux runs-on: ubuntu-latest env: - PY_PLATFORM: "manylinux2014_x86_64" + PY_PLATFORM: "manylinux_2_28_x86_64" steps: - uses: actions/setup-python@v4 name: Install Python @@ -34,7 +34,7 @@ jobs: --no-deps --platform ${PY_PLATFORM} \ --implementation cp \ --abi cp${PYTHON_VER} pygeodiff==${GEODIFF_VER} - unzip -o pygeodiff-$GEODIFF_VER-cp${PYTHON_VER}-cp${PYTHON_VER}-manylinux_2_17_x86_64.${PY_PLATFORM}.whl -d tmp || true + unzip -o pygeodiff-$GEODIFF_VER-cp${PYTHON_VER}-cp${PYTHON_VER}-${PY_PLATFORM}.${PY_PLATFORM}.whl -d tmp || true mkdir pygeodiff-binaries cp tmp/pygeodiff/libpygeodiff-${GEODIFF_VER}-python.so ./pygeodiff-binaries/ From 4967cc5d27273591b0f674418916c19a051a2c49 Mon Sep 17 00:00:00 2001 From: Tomas Mizera Date: Fri, 23 Jan 2026 16:20:44 +0100 Subject: [PATCH 5/9] Fix the new linux wheels name --- .github/workflows/packages.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/packages.yml b/.github/workflows/packages.yml index 04c70f84..fe2d7f85 100644 --- a/.github/workflows/packages.yml +++ b/.github/workflows/packages.yml @@ -34,7 +34,7 @@ jobs: --no-deps --platform ${PY_PLATFORM} \ --implementation cp \ --abi cp${PYTHON_VER} pygeodiff==${GEODIFF_VER} - unzip -o pygeodiff-$GEODIFF_VER-cp${PYTHON_VER}-cp${PYTHON_VER}-${PY_PLATFORM}.${PY_PLATFORM}.whl -d tmp || true + unzip -o pygeodiff-$GEODIFF_VER-cp${PYTHON_VER}-cp${PYTHON_VER}-${PY_PLATFORM}.whl -d tmp || true mkdir pygeodiff-binaries cp tmp/pygeodiff/libpygeodiff-${GEODIFF_VER}-python.so ./pygeodiff-binaries/ From a2b8ed2487a62c2770d770632ad939050ec85a9d Mon Sep 17 00:00:00 2001 From: Tomas Mizera Date: Mon, 26 Jan 2026 11:44:33 +0100 Subject: [PATCH 6/9] Sign arm64 lib with ad-hoc certificate --- .github/workflows/packages.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/packages.yml b/.github/workflows/packages.yml index fe2d7f85..4b541f75 100644 --- a/.github/workflows/packages.yml +++ b/.github/workflows/packages.yml @@ -121,12 +121,13 @@ jobs: - name: Patching pygeodiff binaries (arm64) run: | install_name_tool -change @loader_path/.dylibs/libsqlite3.0.dylib @rpath/libsqlite3.dylib ./pygeodiff-binaries/libpygeodiff-$GEODIFF_VER-python-arm64.dylib + codesign --force --sign - ./pygeodiff-binaries/libpygeodiff-$GEODIFF_VER-python-arm64.dylib OTOOL_L=$(otool -L ./pygeodiff-binaries/libpygeodiff-$GEODIFF_VER-python-arm64.dylib) if echo "${OTOOL_L}" | grep -q loader_path then echo "libpygeodiff-$GEODIFF_VER-python-arm64.dylib was not patched correctly, maybe sqlite version changed??" exit 1 - fi + fi - uses: actions/upload-artifact@v4 with: From 9ae5d02c01522c5ea37cb3fdf136ef18d0cebf70 Mon Sep 17 00:00:00 2001 From: Tomas Mizera Date: Mon, 26 Jan 2026 12:08:04 +0100 Subject: [PATCH 7/9] Update metadata --- Mergin/metadata.txt | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/Mergin/metadata.txt b/Mergin/metadata.txt index 96f7f4b6..98a5f6a3 100644 --- a/Mergin/metadata.txt +++ b/Mergin/metadata.txt @@ -4,14 +4,16 @@ name=Mergin qgisMinimumVersion=3.22 qgisMaximumVersion=4.99 description=Handle Mergin Maps projects -version=2026.1.0 +version=2026.1.1 author=Lutra Consulting email=info@merginmaps.com about=Mergin Maps is a repository for storing and tracking changes to QGIS projects/data and has its mobile app for field geo-surveys. With this plugin, users can upload and sync their data to Mergin Maps service. ; end of mandatory metadata ; start of optional metadata -changelog=2026.1.0 +changelog=2026.1.1 + - Fix support for macbooks with M chips (arm64) +

2026.1.0 - Integration of improved push mechanism - Added restart of sync process - Preventing trailing whitespace in project creation and photo name path From ad5da8c5b4588832a6826e185fb3604390e45374 Mon Sep 17 00:00:00 2001 From: Tomas Mizera Date: Mon, 26 Jan 2026 12:14:21 +0100 Subject: [PATCH 8/9] Update old references and package names --- .github/workflows/packages.yml | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/.github/workflows/packages.yml b/.github/workflows/packages.yml index 4b541f75..5cc80298 100644 --- a/.github/workflows/packages.yml +++ b/.github/workflows/packages.yml @@ -1,4 +1,4 @@ -name: Build Mergin Plugin Packages +name: Build Package on: push: workflow_dispatch: @@ -16,7 +16,6 @@ env: PYTHON_API_CLIENT_VER: ${{ inputs.REQUESTED_PYTHON_API_CLIENT_VER || '0.12.0' }} GEODIFF_VER: ${{ inputs.REQUESTED_GEODIFF_VER || '2.1.1' }} PYTHON_VER: "38" - PLUGIN_NAME: Mergin jobs: build_linux_binary: name: Extract geodiff binary linux @@ -134,7 +133,7 @@ jobs: name: artifact-pygeodiff-macos path: ./pygeodiff-binaries/*.dylib - create_mergin_plugin_package: + create_plugin_package: needs: [build_windows_binaries, build_linux_binary, build_macos_binaries] runs-on: ubuntu-latest steps: @@ -208,13 +207,13 @@ jobs: - uses: actions/upload-artifact@v4 with: - name: Mergin b${{ env.BUILD_NUM }} + name: MM Plugin d-${{ env.BUILD_NUM }} path: output/ - name: upload asset on tagged release uses: softprops/action-gh-release@v1 if: startsWith(github.ref, 'refs/tags/') with: - files: mergin.zip + files: MM Plugin r-${{ env.BUILD_NUM }}.zip env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} From 17ccf9d068de2258d3c9e7678f15edc15edf997f Mon Sep 17 00:00:00 2001 From: Tomas Mizera Date: Wed, 4 Feb 2026 17:58:45 +0100 Subject: [PATCH 9/9] Upgrade geodiff to 2.1.2 --- .github/workflows/packages.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/packages.yml b/.github/workflows/packages.yml index 5cc80298..a6ec07f6 100644 --- a/.github/workflows/packages.yml +++ b/.github/workflows/packages.yml @@ -10,11 +10,11 @@ on: type: string REQUESTED_GEODIFF_VER: description: 'Geodiff version' - default: '2.1.1' + default: '2.1.2' type: string env: PYTHON_API_CLIENT_VER: ${{ inputs.REQUESTED_PYTHON_API_CLIENT_VER || '0.12.0' }} - GEODIFF_VER: ${{ inputs.REQUESTED_GEODIFF_VER || '2.1.1' }} + GEODIFF_VER: ${{ inputs.REQUESTED_GEODIFF_VER || '2.1.2' }} PYTHON_VER: "38" jobs: build_linux_binary: