Skip to content

Conversation

@GeoWill
Copy link

@GeoWill GeoWill commented Dec 15, 2025

Seems like this has been a bit stuck, so hopefully this helps move things along.

I don't know if this is the right approach, so feedback is very welcome. At the very least this gets a working build on the al2023 image, building on what @philvarner did in #89.

I don't know if supporting the old al2 images is desirable, but figured they might still be useful, so for the time being this makes the al2023 images alongside them.

I've summarised what I've done, and what I think is left to do, but these might change, as at the moment this leaves the project supporting multiple gdal versions, which I think is a break from how you've done things.

Happy to make changes, or for someone to take what I've done here and repurpose it if it's useful.

Also if there's other QA I can do, that I haven't thought of, then let me know.

What I've done so far:

  • Create dockerfiles/Dockerfile.al2023 and parametrise the build script
  • Run ./scripts/build.sh 3.11.5 python 3.13 al2023 and fix things till it built, and tests (docker run --rm --entrypoint bash -v $(pwd):/local ghcr.io/lambgeo/lambda-gdal:3.11-al2023 /local/tests/tests.sh) passed
  • I then checked I could do things like install gdal/fiona/rasterio in the resulting image.
  • I then got create-layer.sh to run.

Still ToDo:

  • Update scripts/deploy.py for AL2023 support
    • Accept OS parameter (or detect from version string) for description
    • Handle more than on gdal version
    • Does compatible runtimes list change?
  • Update scripts/list.py
    • Handle different gdal versions
  • Update README.md
  • Update CHANGES.md

Basically just copy Dockerfile.
Use dnf instead of yum.
Don't install cmake3
use automake instead of automake16

You can get a nice diff by checking out this commit and running:
git diff --no-index --word-diff dockerfiles/Dockerfile dockerfiles/Dockerfile.al2023
This fixes:
curl: symbol lookup error: /lib64/libcurl.so.4: undefined symbol: nghttp2_option_set_no_rfc9113_leading_and_trailing_ws_validation
This is for the hdf4 lib
brotli is available systemwide on al2023 so all the packages are linking
against it.
based on command gdalwarp is using so file in lib not bin.

docker run --platform=linux/amd64 --entrypoint bash \
    --rm ghcr.io/lambgeo/lambda-gdal:3.12-al2023 \
    -c "ldd /opt/bin/gdalwarp | grep -i sqlite"
	libsqlite3.so.0 => /opt/lib/libsqlite3.so.0 (0x0000752f34cca000)
Bump numpy to 2.x while we're at it.
  - Build both Dockerfile (AL2) and Dockerfile.al2023 (AL2023)
  - AL2 images still use GDAL 3.8.3
  - AL2023 images use GDAL 3.11.5
  - Drop Python 3.9 support
  - Add Python 3.14 support
  - Python 3.10-3.11 runtimes built against AL2 base (GDAL 3.8)
  - Python 3.12-3.14 runtimes built against AL2023 base (GDAL 3.11)
  - Separate layer deployment for AL2 (tag: 3.8) and AL2023 (tag: 3.11-al2023)
  - Update numpy to 2.3.5 for AL2023 Python runtimes
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant