fixes
This commit is contained in:
parent
3fd64785a2
commit
44b4e0d72f
3 changed files with 32 additions and 20 deletions
|
|
@ -1,53 +0,0 @@
|
|||
# GDAL with ECW (read) support, for decoding Environment Agency Vertical Aerial
|
||||
# Photography in the satellite-highres pipeline (pipeline/download/satellite_highres.py).
|
||||
#
|
||||
# EA VAP ships as ECW **v2** rasters, which are readable by the open-source
|
||||
# libecwj2 3.3 SDK -- the same library the official OSGeo image uses when built
|
||||
# with WITH_ECW=yes. We therefore avoid the proprietary, login-gated Hexagon
|
||||
# ERDAS ECW/JP2 SDK (which is only needed for ECW v3) and its licensing
|
||||
# restrictions entirely.
|
||||
#
|
||||
# We build only the ECW driver as a GDAL *plugin* on top of the official runtime
|
||||
# image (no full GDAL rebuild). The plugin's GDAL sources are pinned to the exact
|
||||
# commit reported by the base image so libgdal and the plugin stay ABI-compatible.
|
||||
#
|
||||
# Build: docker build -t perfect-postcode/gdal-ecw:latest docker/gdal-ecw
|
||||
# Verify: docker run --rm perfect-postcode/gdal-ecw:latest gdalinfo --formats | grep -i ECW
|
||||
|
||||
FROM ghcr.io/osgeo/gdal:ubuntu-full-latest
|
||||
|
||||
ARG LIBECWJ2_URL=https://github.com/rouault/libecwj2-3.3-builds/releases/download/v1/install-libecwj2-3.3-ubuntu-20.04.tar.gz
|
||||
|
||||
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||
cmake g++ make git curl ca-certificates \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# Open-source ECW v2 SDK (extracts to /opt/libecwj2-3.3) + make its libs loadable.
|
||||
RUN curl --retry 3 --retry-all-errors --retry-delay 3 -fsSL -o /tmp/libecwj2.tar.gz "$LIBECWJ2_URL" \
|
||||
&& tar -C / -xzf /tmp/libecwj2.tar.gz \
|
||||
&& rm -f /tmp/libecwj2.tar.gz \
|
||||
&& (cd /opt/libecwj2-3.3/lib && for so in *.so*; do \
|
||||
ln -sf "/opt/libecwj2-3.3/lib/$so" "/usr/lib/x86_64-linux-gnu/$so"; \
|
||||
done) \
|
||||
&& ldconfig
|
||||
|
||||
# Build the ECW driver plugin against the base image's exact GDAL sources.
|
||||
RUN set -eux; \
|
||||
GDAL_COMMIT="$(gdalinfo --version | sed -nE 's/.*-([0-9a-f]{8,}).*/\1/p')"; \
|
||||
test -n "$GDAL_COMMIT"; \
|
||||
echo "Building ECW plugin for GDAL commit ${GDAL_COMMIT}"; \
|
||||
mkdir -p /tmp/gdal && cd /tmp/gdal && git init -q; \
|
||||
git fetch --depth 1 -q https://github.com/OSGeo/gdal.git "$GDAL_COMMIT"; \
|
||||
git checkout -q FETCH_HEAD; \
|
||||
cmake -S frmts/ecw -B /tmp/ecw-build \
|
||||
-DCMAKE_BUILD_TYPE=Release \
|
||||
-DCMAKE_PREFIX_PATH=/usr \
|
||||
-DECW_ROOT=/opt/libecwj2-3.3; \
|
||||
cmake --build /tmp/ecw-build -j"$(nproc)"; \
|
||||
PLUGIN_DIR=/usr/lib/x86_64-linux-gnu/gdalplugins; \
|
||||
mkdir -p "$PLUGIN_DIR"; \
|
||||
find /tmp/ecw-build -name 'gdal_ECW*.so' -exec cp {} "$PLUGIN_DIR/" \; ; \
|
||||
rm -rf /tmp/gdal /tmp/ecw-build
|
||||
|
||||
# Fail the build if the driver is not actually available.
|
||||
RUN gdalinfo --formats | grep -iq 'ECW.*rw' && echo "ECW driver OK"
|
||||
Loading…
Add table
Add a link
Reference in a new issue