Skip to content

Commit 03bf92b

Browse files
authored
GDAL v3.13.0 (#231)
* chore(release): bump GDAL to 3.13.0 * docs: cover shared manifest and cache reuse (#230) * docs(build): describe shared manifest and cache reuse * fix(ci): pin release bundle dependencies * fix(ci): pin final bundle smoke test package * docs: address release review comments
1 parent 9a11745 commit 03bf92b

8 files changed

Lines changed: 69 additions & 23 deletions

File tree

.github/workflows/macos.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,7 @@ jobs:
153153
154154
- name: Create packages
155155
run: |
156-
make -f publish-makefile pack BUILD_ARCH=${{ matrix.arch }} BUILD_NUMBER_TAIL=${{ github.run_number }}
156+
make -f publish-makefile pack BUILD_ARCH=${{ matrix.arch }} BUILD_NUMBER_TAIL=${{ github.run_number }} PRERELEASE=${{ inputs.is-pre-release }}
157157
158158
- name: Store metadata as artifact
159159
uses: actions/upload-artifact@v5.0.0
@@ -229,7 +229,7 @@ jobs:
229229

230230
- name: Test packages
231231
run: |
232-
make -f test-makefile BUILD_ARCH=${{ matrix.arch }} BUILD_NUMBER_TAIL=${{ github.run_number }}
232+
make -f test-makefile BUILD_ARCH=${{ matrix.arch }} BUILD_NUMBER_TAIL=${{ github.run_number }} PRERELEASE=${{ inputs.is-pre-release }}
233233
234234
PushPackages-Macos:
235235
needs: TestPackages-MacOS

.github/workflows/main.yml

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -163,17 +163,21 @@ jobs:
163163

164164
- name: Build bundle
165165
run: |
166-
make -f generate-projects-makefile generate-final-bundle BUILD_NUMBER_TAIL=${{ github.run_number }}
166+
make -f generate-projects-makefile generate-final-bundle PRERELEASE=${{ env.IS_PRE_RELEASE }} BUILD_NUMBER_TAIL=${{ github.run_number }}
167167
make -f publish-makefile pack-bundle-final PRERELEASE=${{ env.IS_PRE_RELEASE }} BUILD_NUMBER_TAIL=${{ github.run_number }}
168168
echo "GDAL_VERSION=$(make -f publish-makefile get-gdal-version)" >> $GITHUB_ENV
169-
echo "PACKAGES_VERSION=$(make -f publish-makefile get-package-version BUILD_NUMBER_TAIL=${{ github.run_number }})" >> $GITHUB_ENV
169+
echo "PACKAGES_VERSION=$(make -f publish-makefile get-package-version PRERELEASE=${{ env.IS_PRE_RELEASE }} BUILD_NUMBER_TAIL=${{ github.run_number }})" >> $GITHUB_ENV
170170
171171
- name: Run tests from nuget packages
172172
env:
173173
TEST_PROJECT: ${{ github.workspace }}/tests/MaxRev.Gdal.Core.Tests.XUnit/MaxRev.Gdal.Core.Tests.XUnit.csproj
174174
run: |
175-
dotnet add ${{ env.TEST_PROJECT }} package MaxRev.Gdal.Universal --source local.ci --no-restore
176-
dotnet remove ${{ env.TEST_PROJECT }} package MaxRev.Gdal.Core || echo "no packages to remove"
175+
for project in \
176+
"${{ github.workspace }}/tests/MaxRev.Gdal.Core.Tests.XUnit/MaxRev.Gdal.Core.Tests.XUnit.csproj" \
177+
"${{ github.workspace }}/tests/MaxRev.Gdal.Core.Tests/MaxRev.Gdal.Core.Tests.csproj" \
178+
"${{ github.workspace }}/tests/MaxRev.Gdal.Core.Tests.AzureFunctions/MaxRev.Gdal.Core.Tests.AzureFunctions.csproj"; do
179+
dotnet add "$project" package MaxRev.Gdal.Universal --version ${{ env.PACKAGES_VERSION }} --source local.ci --no-restore
180+
done
177181
dotnet restore --ignore-failed-sources ${{ env.TEST_PROJECT }}
178182
dotnet test --no-restore ${{ env.TEST_PROJECT }}
179183

README.md

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -246,6 +246,14 @@ The package configuration is marked as **minimal**. That means you don't have to
246246

247247
Drivers included PROJ, GEOS, and more than 200 other drivers.
248248

249+
The native dependency definition is shared across platforms through the manifest bundle in `shared/`:
250+
251+
- `shared/vcpkg.json`
252+
- `shared/vcpkg-configuration.json`
253+
- `shared/vcpkg-lock.json`
254+
255+
Unix, macOS, and Windows build wrappers all consume that same manifest authority instead of keeping separate package lists per platform. That keeps driver selection and dependency versions aligned between local builds and CI.
256+
249257
To view the complete list of drivers, see: [tests/gdal-formats/supported_drivers.md](tests/gdal-formats/supported_drivers.md).
250258

251259

@@ -259,6 +267,12 @@ Each runtime has to be build separately, but this can be done concurrently as th
259267

260268
To make everything work smoothly, each configuration targets the same drivers and their versions, respectively.
261269

270+
CI now layers cache reuse on top of those per-platform build contexts:
271+
272+
- Linux reuses Docker Buildx cache scopes per architecture.
273+
- macOS restores both VCPKG archives and build outputs, then reuses build-state markers on cache-warm runs.
274+
- Windows restores VCPKG archives separately from build outputs so cache-warm runs can reuse VCPKG, PROJ, and GDAL artifacts without recompiling from scratch.
275+
262276
To start building for a specific runtime, see the **README.md** in a respective directory.
263277

264278
## FAQ
@@ -331,4 +345,4 @@ As the maintainer of this repository, I would like to express my heartfelt thank
331345

332346
[<img height="50" alt="Verge Agriculture Inc." src="https://github.com/user-attachments/assets/c5fe571e-b920-48c5-af31-840b9cc48c4a" />](https://vergeag.com/)
333347
&nbsp;&nbsp;&nbsp;
334-
[<img height="50" alt="StatMap Ltd" src="https://github.com/user-attachments/assets/85701812-9f7b-46f7-849b-11d1edcc2bf8" />](https://www.evo.statmap.co.uk/)
348+
[<img height="50" alt="StatMap Ltd" src="https://github.com/user-attachments/assets/85701812-9f7b-46f7-849b-11d1edcc2bf8" />](https://www.evo.statmap.co.uk/)

osx/README.md

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,13 @@ There two types of builds **arm64** (Apple Silicon M1 & M2 chipsets) and **x86_6
1818
This build was compiled using a `ubuntu-24.04-arm` runner (arm64).
1919

2020
### **2. Check for required libraries**
21-
**VPKG** will install all requirements defined in `shared/GdalCore.opt` file. Latest versions, no collisions with other dynamic libraries.
21+
**VCPKG** will install all requirements defined in the shared manifest bundle and `../shared/GdalCore.opt`. Latest versions, no collisions with other dynamic libraries.
22+
23+
The macOS build consumes the same manifest authority as the other platforms:
24+
25+
- `../shared/vcpkg.json`
26+
- `../shared/vcpkg-configuration.json`
27+
- `../shared/vcpkg-lock.json`
2228

2329
### **3. Compiling**
2430

@@ -45,6 +51,8 @@ make -f publish-makefile pack BUILD_ARCH=arm64
4551
make -f test-makefile test BUILD_ARCH=arm64
4652
```
4753

54+
CI cache-warm runs restore the macOS VCPKG archive cache and build outputs per runner/architecture, then reuse build-state markers when the manifest inputs still match.
55+
4856
### **How to check dependencies:**
4957
Run tests from the latest step. If everything loads correctly - you're good.
5058

@@ -87,4 +95,4 @@ Usage of this library in newer macOS versions with enabled Gatekeeper requires a
8795
- You can build the library and sign it with your own Apple Developer ID. This way, you can ensure that the libraries are trusted by macOS.
8896
- To do this, clone the repository and follow the build instructions. After building, but before creating a nuget package, use the `codesign` command to sign the libraries with your Developer ID.
8997

90-
Note: The manual approach in your build script is generally safer than advising end users to bypass security measures.
98+
Note: The manual approach in your build script is generally safer than advising end users to bypass security measures.

shared/GdalCore.opt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@ BUILD_NUMBER_TAIL=100
99
### build (drivers) root
1010
BUILD_ROOT=$(ROOT_DIR)/build-$(BASE_RID)
1111

12-
# May 4, 2026
13-
GDAL_VERSION=3.12.4
12+
# May 8, 2026
13+
GDAL_VERSION=3.13.0
1414
GDAL_ROOT=$(BUILD_ROOT)/gdal-source
1515
GDAL_REPO=https://github.com/OSGeo/gdal.git
1616
GDAL_COMMIT_VER=v$(GDAL_VERSION)

unix/README.md

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,16 @@ https://learn.microsoft.com/en-us/dotnet/core/install/linux-debian#debian-11.
3131
### 4. **Installing libraries**.
3232
Libraries can be installed in two ways.
3333

34-
1. **VPKG** - recommended. Latest versions, no collisions with other dynamic libraries.
35-
2. **APT package manager** - if vcpkg does not provide any. Can create conficts with other library dependencies.
34+
1. **VCPKG** - recommended. Latest versions, no collisions with other dynamic libraries.
35+
2. **APT package manager** - if vcpkg does not provide any. Can create conflicts with other library dependencies.
36+
37+
The Unix build uses the shared manifest bundle in `../shared/`:
38+
39+
- `../shared/vcpkg.json`
40+
- `../shared/vcpkg-configuration.json`
41+
- `../shared/vcpkg-lock.json`
42+
43+
That same bundle is also used by macOS and Windows so the dependency graph stays aligned across all runtimes.
3644

3745
Each library enables one driver
3846
```bash
@@ -68,6 +76,8 @@ make -f publish-makefile pack BUILD_ARCH=arm64
6876
make -f test-makefile test BUILD_ARCH=arm64
6977
```
7078

79+
On CI, cache-warm runs reuse both the VCPKG binary cache and the Docker Buildx layer cache for the selected architecture.
80+
7181
### 6. **How to check dependencies:**
7282
Run tests. If everything loads correctly - you're good.
7383

@@ -80,4 +90,4 @@ readelf -d "/root/gdal.netcore/build-unix/gdal-build/lib/libgdal.so" | grep NEED
8090
Or using **ldd**:
8191
```bash
8292
ldd "/root/gdal.netcore/build-unix/gdal-build/lib/libgdal.so"
83-
```
93+
```

unix/publish-makefile

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,10 @@ all: pack
2525
generate-projects:
2626
$(MAKE) -f ../unix/generate-projects-makefile RUNTIME_PACKAGE_PARTIAL=${RUNTIME_PACKAGE_PARTIAL} CAT_NAME=$(CAT_NAME) GEOS_VERSION=$(GEOS_VERSION) PACKAGE_BUILD_NUMBER=$(PACKAGE_BUILD_NUMBER)
2727

28-
update-targets-no-ver:
28+
update-targets-bundle-final:
2929
cd $(PACKAGE_BUILD_ROOT) && \
30-
dotnet add $(RUNTIME_PROJECT_BUNDLE_FINAL) package MaxRev.Gdal.$(RUNTIME_PACKAGE_PARTIAL).Minimal$(BUILD_ARCH_SUFFIX) -s $(NUGET_DIR) --no-restore
30+
dotnet add $(RUNTIME_PROJECT_BUNDLE_FINAL) package MaxRev.Gdal.$(RUNTIME_PACKAGE_PARTIAL).Minimal$(BUILD_ARCH_SUFFIX) \
31+
--no-restore -v "$(GDAL_VERSION)$(VERSION_SEP)$(PACKAGE_BUILD_NUMBER)" -s $(NUGET_DIR)
3132

3233

3334
update-targets:
@@ -51,14 +52,15 @@ pack-bundle-only: update-targets
5152
dotnet pack -c Release -o $(NUGET_DIR) --ignore-failed-sources $(RUNTIME_PROJECT_BUNDLE_$(CAT_NAME_UP)_FINAL)
5253

5354
pack-bundle-final:
54-
$(MAKE) -f $(THIS_FILE) update-targets-no-ver CAT_NAME=unix RUNTIME_PACKAGE_PARTIAL=LinuxRuntime BUILD_ARCH=x64
55-
$(MAKE) -f $(THIS_FILE) update-targets-no-ver CAT_NAME=unix RUNTIME_PACKAGE_PARTIAL=LinuxRuntime BUILD_ARCH=arm64
56-
$(MAKE) -f $(THIS_FILE) update-targets-no-ver CAT_NAME=osx RUNTIME_PACKAGE_PARTIAL=MacosRuntime BUILD_ARCH=x64
57-
$(MAKE) -f $(THIS_FILE) update-targets-no-ver CAT_NAME=osx RUNTIME_PACKAGE_PARTIAL=MacosRuntime BUILD_ARCH=arm64
58-
$(MAKE) -f $(THIS_FILE) update-targets-no-ver CAT_NAME=win BUILD_ARCH_SUFFIX= RUNTIME_PACKAGE_PARTIAL=WindowsRuntime
55+
$(MAKE) -f $(THIS_FILE) update-targets-bundle-final CAT_NAME=unix RUNTIME_PACKAGE_PARTIAL=LinuxRuntime BUILD_ARCH=x64
56+
$(MAKE) -f $(THIS_FILE) update-targets-bundle-final CAT_NAME=unix RUNTIME_PACKAGE_PARTIAL=LinuxRuntime BUILD_ARCH=arm64
57+
$(MAKE) -f $(THIS_FILE) update-targets-bundle-final CAT_NAME=osx RUNTIME_PACKAGE_PARTIAL=MacosRuntime BUILD_ARCH=x64
58+
$(MAKE) -f $(THIS_FILE) update-targets-bundle-final CAT_NAME=osx RUNTIME_PACKAGE_PARTIAL=MacosRuntime BUILD_ARCH=arm64
59+
$(MAKE) -f $(THIS_FILE) update-targets-bundle-final CAT_NAME=win BUILD_ARCH_SUFFIX= RUNTIME_PACKAGE_PARTIAL=WindowsRuntime
5960

6061
cd $(PACKAGE_BUILD_ROOT) && \
61-
dotnet add $(RUNTIME_PROJECT_BUNDLE_FINAL) package MaxRev.Gdal.Core -s $(NUGET_DIR) --no-restore
62+
dotnet add $(RUNTIME_PROJECT_BUNDLE_FINAL) package MaxRev.Gdal.Core \
63+
--no-restore -v "$(GDAL_VERSION)$(VERSION_SEP)$(PACKAGE_BUILD_NUMBER)" -s $(NUGET_DIR)
6264

6365
dotnet pack -c Release -o $(NUGET_DIR) --ignore-failed-sources $(RUNTIME_PROJECT_BUNDLE_FINAL)
6466

win/README.md

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,12 @@ In this folder contains Powershell and NMake scripts for building Windows runtim
1717

1818
2. [.NET Core SDK](https://dotnet.microsoft.com/en-us/download/dotnet/7.0) and [Nuget.exe](https://docs.microsoft.com/en-us/nuget/install-nuget-client-tools) - for building and publishing packages respectively.
1919

20+
The Windows build uses the same shared VCPKG manifest authority as Unix and macOS:
21+
22+
- `../shared/vcpkg.json`
23+
- `../shared/vcpkg-configuration.json`
24+
- `../shared/vcpkg-lock.json`
25+
2026
### Building: (in PowerShell)
2127

2228
1. Call `./install.ps1` to install all required packages and tools. <br/>
@@ -36,6 +42,8 @@ Possible options:
3642
```
3743
This will install all required VCPKG packages and tools, build GDAL and PROJ, and build runtime and core packages.
3844

45+
On CI, cache-warm runs restore the VCPKG archive cache separately from the Windows build-output cache. When the manifest/build inputs match, the build-state stamps allow the workflow to reuse cached VCPKG, PROJ, and GDAL outputs instead of recompiling them from scratch.
46+
3947
2. Call `./test.ps1` to test runtime and core packages. <br/>
4048
If everything runs smoothly, you can use a local nuget feed to include packages in your project.
4149

@@ -44,4 +52,4 @@ Use **dumpbin** or [**dependency walker**](https://www.dependencywalker.com/) to
4452

4553
Have fun)
4654

47-
Contact me: [Telegram - MaxRev](http://t.me/maxrev)
55+
Contact me: [Telegram - MaxRev](http://t.me/maxrev)

0 commit comments

Comments
 (0)