[Backport] Use Mapnik v4.0.0 for Dockerfiles and GitHub Actions (#452)

This commit is contained in:
Hummeltech
2024-06-26 16:37:31 -07:00
committed by David Hummel
parent d26a2cb98d
commit 1f2a7f0b34
15 changed files with 178 additions and 280 deletions

View File

@ -1,66 +1,52 @@
---
inputs:
version:
default: latest
description: Version of Mapnik to build & install
required: true
runs:
using: composite
steps:
- name: Create `Mapnik` source directory
run: |
mkdir mapnik-src
shell: bash --noprofile --norc -euxo pipefail {0}
- name: Cache "Download `Mapnik`" & "Build `Mapnik`"
id: cache-mapnik-src
- name: Cache "Checkout `Mapnik`" & "Build `Mapnik`"
id: cache-mapnik
uses: actions/cache@v4
with:
path: mapnik-src
key: ${{ matrix.image }}-${{ matrix.compiler }}-mapnik-${{ inputs.version }}
path: |
mapnik-build
mapnik-src
key: ${{ matrix.image || matrix.os || matrix.box_generic || github.job }}-${{ matrix.compiler }}-mapnik-${{ inputs.version }}
- name: Download `Mapnik`
run: |
curl --silent --location \
https://github.com/mapnik/mapnik/releases/download/v${{ inputs.version }}/mapnik-v${{ inputs.version }}.tar.bz2 \
| tar --extract --bzip2 --strip-components=1 --file=-
shell: bash --noprofile --norc -euxo pipefail {0}
working-directory: mapnik-src
if: steps.cache-mapnik-src.outputs.cache-hit != 'true'
- name: Checkout `Mapnik`
uses: actions/checkout@v4
with:
path: mapnik-src
ref: ${{ inputs.version != 'latest' && format('v{0}', inputs.version) || '' }}
repository: mapnik/mapnik
submodules: recursive
if: steps.cache-mapnik.outputs.cache-hit != 'true'
- name: Build `Mapnik`
run: |
# Export variables
export CUSTOM_DEFINES="-DACCEPT_USE_OF_DEPRECATED_PROJ_API_H=1"
export GDAL_DATA=/usr/share/gdal
export JOBS=${JOBS:-$(nproc)}
export PROJ_LIB=/usr/share/proj
export PYTHON=${PYTHON:-python3}
# Create GDAL_DATA/PROJ_LIB directories
mkdir --parents ${GDAL_DATA} ${PROJ_LIB}
# Configure & build
./configure \
CC="${CC:-gcc}" \
CUSTOM_CFLAGS="${CUSTOM_CFLAGS:-}" \
CUSTOM_CXXFLAGS="${CUSTOM_CXXFLAGS:-}" \
CUSTOM_DEFINES="${CUSTOM_DEFINES:-}" \
CUSTOM_LDFLAGS="${CUSTOM_LDFLAGS:-}" \
CXX="${CXX:-g++}" \
FAST=True \
OPTIMIZATION=0 \
PREFIX="/usr"
make PYTHON=${PYTHON} || make PYTHON=${PYTHON}
export CMAKE_BUILD_PARALLEL_LEVEL=${BUILD_PARALLEL_LEVEL:-$(nproc)}
cmake -B mapnik-build -S mapnik-src \
-DBUILD_BENCHMARK:BOOL=OFF \
-DBUILD_DEMO_CPP:BOOL=OFF \
-DBUILD_DEMO_VIEWER:BOOL=OFF \
-DBUILD_TESTING:BOOL=OFF \
-DBUILD_UTILITY_GEOMETRY_TO_WKB:BOOL=OFF \
-DBUILD_UTILITY_MAPNIK_INDEX:BOOL=OFF \
-DBUILD_UTILITY_MAPNIK_RENDER:BOOL=OFF \
-DBUILD_UTILITY_OGRINDEX:BOOL=OFF \
-DBUILD_UTILITY_PGSQL2SQLITE:BOOL=OFF \
-DBUILD_UTILITY_SHAPEINDEX:BOOL=OFF \
-DBUILD_UTILITY_SVG2PNG:BOOL=OFF \
-DCMAKE_BUILD_TYPE:STRING=Release \
-DCMAKE_INSTALL_PREFIX:PATH=/usr
cmake --build mapnik-build
shell: bash --noprofile --norc -euxo pipefail {0}
working-directory: mapnik-src
if: steps.cache-mapnik-src.outputs.cache-hit != 'true'
if: steps.cache-mapnik.outputs.cache-hit != 'true'
- name: Install `Mapnik`
run: |
# Export `PYTHON`
export PYTHON=${PYTHON:-python3}
make install PYTHON=${PYTHON}
run: ${{ !matrix.image && 'sudo' || '' }} cmake --install mapnik-build
shell: bash --noprofile --norc -euxo pipefail {0}
working-directory: mapnik-src

View File

@ -1,46 +0,0 @@
---
runs:
using: composite
steps:
- name: Cache "Checkout `Mapnik`" & "Build `Mapnik`"
id: cache-mapnik
uses: actions/cache@v4
with:
path: |
mapnik-build
mapnik-src
key: ${{ matrix.image || matrix.os || matrix.box_generic || github.job }}-${{ matrix.compiler }}-mapnik-latest
- name: Checkout `Mapnik`
uses: actions/checkout@v4
with:
path: mapnik-src
repository: mapnik/mapnik
submodules: recursive
if: steps.cache-mapnik.outputs.cache-hit != 'true'
- name: Build `Mapnik`
run: |
export CMAKE_BUILD_PARALLEL_LEVEL=${BUILD_PARALLEL_LEVEL:-$(nproc)}
cmake -B mapnik-build -S mapnik-src \
-DBUILD_BENCHMARK:BOOL=OFF \
-DBUILD_DEMO_CPP:BOOL=OFF \
-DBUILD_DEMO_VIEWER:BOOL=OFF \
-DBUILD_TESTING:BOOL=OFF \
-DBUILD_UTILITY_GEOMETRY_TO_WKB:BOOL=OFF \
-DBUILD_UTILITY_MAPNIK_INDEX:BOOL=OFF \
-DBUILD_UTILITY_MAPNIK_RENDER:BOOL=OFF \
-DBUILD_UTILITY_OGRINDEX:BOOL=OFF \
-DBUILD_UTILITY_PGSQL2SQLITE:BOOL=OFF \
-DBUILD_UTILITY_SHAPEINDEX:BOOL=OFF \
-DBUILD_UTILITY_SVG2PNG:BOOL=OFF \
-DCMAKE_BUILD_TYPE:STRING=Release \
-DCMAKE_CXX_STANDARD:STRING=17 \
-DCMAKE_INSTALL_PREFIX:PATH=/usr
cmake --build mapnik-build
shell: bash --noprofile --norc -euxo pipefail {0}
if: steps.cache-mapnik.outputs.cache-hit != 'true'
- name: Install `Mapnik`
run: ${{ !matrix.image && 'sudo' || '' }} cmake --install mapnik-build
shell: bash --noprofile --norc -euxo pipefail {0}

View File

@ -104,27 +104,21 @@ inputs:
memcached
opensuse-mapnik-build-dependencies:
default: >-
bzip2
cmake
freetype-devel
gdal-devel
git
harfbuzz-devel
libboost_filesystem1_75_0-devel
libboost_headers1_75_0-devel
libboost_program_options1_75_0-devel
libboost_regex1_75_0-devel
libboost_system1_75_0-devel
libicu-devel
libjpeg8-devel
libpng16-devel
libtiff-devel
libwebp-devel
libxml2-devel
make
postgresql-devel
proj-devel
python3
sqlite3-devel
tar
zlib-devel
rhel-build-dependencies:
default: >-
@ -145,9 +139,10 @@ inputs:
rhel-mapnik-build-dependencies:
default: >-
boost-devel
bzip2
cmake
freetype-devel
gdal-devel
git
harfbuzz-devel
libicu-devel
libjpeg-devel
@ -155,12 +150,9 @@ inputs:
libtiff-devel
libwebp-devel
libxml2-devel
make
postgresql-devel
proj-devel
python3
sqlite-devel
tar
zlib-devel
ubuntu-build-dependencies:
default: >-
@ -196,9 +188,9 @@ inputs:
lcov
memcached
mapnik-build-version-centos-stream:
default: 3.1.0
default: 4.0.0
mapnik-build-version-opensuse:
default: 3.1.0
default: 4.0.0
runs:
using: composite
@ -309,11 +301,15 @@ runs:
if: (!matrix.mapnik_latest && startsWith(matrix.image, 'opensuse/'))
- name: Build & Install latest `mapnik` (Debian/Ubuntu)
uses: ./.github/actions/dependencies/build-and-install/mapnik/latest
uses: ./.github/actions/dependencies/build-and-install/mapnik
with:
version: latest
if: |
matrix.mapnik_latest &&
(startsWith(matrix.image, 'debian:') || startsWith(matrix.image, 'ubuntu:') || runner.os == 'Linux')
- name: Build & Install latest `mapnik` (openSUSE)
uses: ./.github/actions/dependencies/build-and-install/mapnik/latest
uses: ./.github/actions/dependencies/build-and-install/mapnik
with:
version: latest
if: (matrix.mapnik_latest && startsWith(matrix.image, 'opensuse/'))

View File

@ -16,9 +16,10 @@ AC_CONFIG_HEADERS([includes/config.h])
AC_CONFIG_MACRO_DIR([m4])
# Checks for programs.
AC_PROG_CXX
AC_PROG_CC
AC_PROG_CC_C99
AC_PROG_CXX
AC_PROG_RANLIB
dnl Find C++ compiler
AC_CHECK_PROG(HAVE_CXX, $CXX, yes, no)

View File

@ -40,9 +40,9 @@ RUN export CMAKE_BUILD_PARALLEL_LEVEL=$(nproc) && \
-DENABLE_TESTS:BOOL=ON && \
cmake --build .
RUN export CTEST_PARALLEL_LEVEL=$(nproc) && \
export DESTDIR=/tmp/mod_tile && \
ctest --output-on-failure && \
(cmake --install . --strip || make DESTDIR=${DESTDIR} install/strip)
ctest --output-on-failure
RUN export DESTDIR=/tmp/mod_tile && \
cmake --install . --strip
# Runner
FROM archlinux:latest as runner

View File

@ -1,7 +1,7 @@
# Arguments
ARG centos_stream_version
ARG extra_repository
ARG mapnik_version=3.1.0
ARG centos_stream_version=9
ARG extra_repository=crb
ARG mapnik_version=4.0.0
# Mapnik Builder
FROM quay.io/centos/centos:stream${centos_stream_version} as mapnik-builder
@ -16,18 +16,18 @@ RUN --mount=id=centos:stream${centos_stream_version}-/var/cache/dnf,target=/var/
echo "install_weak_deps=False" >> /etc/dnf/dnf.conf && \
echo "keepcache=True" >> /etc/dnf/dnf.conf && \
dnf --assumeyes install "dnf-command(config-manager)" && \
dnf config-manager --save \
--setopt=${extra_repository}.enabled=1 && \
dnf config-manager --save --setopt=${extra_repository}.enabled=1 && \
dnf --assumeyes install epel-release && \
dnf --assumeyes upgrade && \
dnf --assumeyes install \
boost-devel \
bzip2 \
cairo-devel \
cmake \
freetype-devel \
gcc \
gcc-c++ \
gdal-devel \
git \
harfbuzz-devel \
libicu-devel \
libjpeg-devel \
@ -36,48 +36,38 @@ RUN --mount=id=centos:stream${centos_stream_version}-/var/cache/dnf,target=/var/
libwebp-devel \
libxml2-devel \
make \
patch \
postgresql-devel \
proj-devel \
python3 \
sqlite-devel \
tar \
zlib-devel
## Download, Build & Install `Mapnik`
WORKDIR /tmp/mapnik_src
RUN --mount=id=centos:stream${centos_stream_version}-mapnik:${mapnik_version},target=/tmp/mapnik_src,type=cache \
export DESTDIR="/tmp/mapnik"; \
export GDAL_DATA="$(gdal-config --datadir)"; \
export JOBS="$(nproc)"; \
export PROJ_LIB="/usr/share/proj"; \
export PYTHON="python3"; \
mkdir --parents ${GDAL_DATA} ${PROJ_LIB}; \
if [ ! -f SConstruct ]; then \
curl --silent --location https://github.com/mapnik/mapnik/releases/download/v${mapnik_version}/mapnik-v${mapnik_version}.tar.bz2 \
| tar --extract --bzip2 --strip-components=1 --file=-; \
curl --silent --location https://github.com/mapnik/mapnik/commit/8944e81367d2b3b91a41e24116e1813c01491e5d.patch \
| patch -Np1; \
curl --silent --location https://github.com/mapnik/mapnik/commit/83779b7b6bdd229740b1b5e12a4a8fe27114cb7d.patch \
| patch -F3 -Np1; \
fi; \
bash configure \
CPP_TESTS=False \
CUSTOM_CFLAGS="${CUSTOM_CFLAGS:-}" \
CUSTOM_CXXFLAGS="${CUSTOM_CXXFLAGS:-}" \
CUSTOM_DEFINES="${CUSTOM_DEFINES:-}" \
CUSTOM_LDFLAGS="${CUSTOM_LDFLAGS:-}" \
DEMO=False \
DESTDIR="${DESTDIR}" \
FAST=True \
INPUT_PLUGINS=all \
LIBDIR_SCHEMA=lib64 \
OPTIMIZATION=2 \
PREFIX=/usr \
SVG2PNG=True \
XMLPARSER=libxml2 && \
make PYTHON="${PYTHON}" && \
make install PYTHON="${PYTHON}"
RUN --mount=id=centos:stream${centos_stream_version}-mapnik-src:${mapnik_version},target=/tmp/mapnik_src,type=cache \
if [ ! -f CMakeLists.txt ]; then \
git clone --branch v${mapnik_version} --depth 1 --jobs 8 --recurse-submodules https://github.com/mapnik/mapnik.git /tmp/mapnik_src; \
fi
WORKDIR /tmp/mapnik_build
RUN --mount=id=centos:stream${centos_stream_version}-mapnik-src:${mapnik_version},target=/tmp/mapnik_src,type=cache \
--mount=id=centos:stream${centos_stream_version}-mapnik-build:${mapnik_version},target=/tmp/mapnik_build,type=cache \
export CMAKE_BUILD_PARALLEL_LEVEL=$(nproc) && \
export DESTDIR=/tmp/mapnik && \
cmake -B . -S /tmp/mapnik_src \
-DBUILD_BENCHMARK:BOOL=OFF \
-DBUILD_DEMO_CPP:BOOL=OFF \
-DBUILD_DEMO_VIEWER:BOOL=OFF \
-DBUILD_TESTING:BOOL=OFF \
-DBUILD_UTILITY_GEOMETRY_TO_WKB:BOOL=OFF \
-DBUILD_UTILITY_MAPNIK_INDEX:BOOL=OFF \
-DBUILD_UTILITY_MAPNIK_RENDER:BOOL=OFF \
-DBUILD_UTILITY_OGRINDEX:BOOL=OFF \
-DBUILD_UTILITY_PGSQL2SQLITE:BOOL=OFF \
-DBUILD_UTILITY_SHAPEINDEX:BOOL=OFF \
-DBUILD_UTILITY_SVG2PNG:BOOL=OFF \
-DCMAKE_BUILD_TYPE:STRING=Release \
-DCMAKE_INSTALL_PREFIX:PATH=/usr && \
cmake --build . && \
cmake --install . --strip
# Builder
FROM quay.io/centos/centos:stream${centos_stream_version} as builder
@ -91,14 +81,14 @@ RUN --mount=id=centos:stream${centos_stream_version}-/var/cache/dnf,target=/var/
echo "install_weak_deps=False" >> /etc/dnf/dnf.conf && \
echo "keepcache=True" >> /etc/dnf/dnf.conf && \
dnf --assumeyes install "dnf-command(config-manager)" && \
dnf config-manager --save \
--setopt=${extra_repository}.enabled=1 && \
dnf config-manager --save --setopt=${extra_repository}.enabled=1 && \
dnf --assumeyes install epel-release && \
dnf --assumeyes upgrade && \
dnf --assumeyes install \
boost-devel \
cairo-devel \
cmake \
freetype-devel \
gcc \
gcc-c++ \
gdal \
@ -108,14 +98,17 @@ RUN --mount=id=centos:stream${centos_stream_version}-/var/cache/dnf,target=/var/
iniparser-devel \
libcurl-devel \
libicu-devel \
libjpeg \
libjpeg-devel \
libmemcached-devel \
libpng-devel \
librados2-devel \
libtiff \
libwebp \
libtiff-devel \
libwebp-devel \
libxml2-devel \
make \
pkg-config \
procps \
proj
proj-devel
## Copy files from builder(s)
### Mapnik
@ -134,9 +127,9 @@ RUN export CMAKE_BUILD_PARALLEL_LEVEL=$(nproc) && \
-DENABLE_TESTS:BOOL=ON && \
cmake --build .
RUN export CTEST_PARALLEL_LEVEL=$(nproc) && \
export DESTDIR=/tmp/mod_tile && \
ctest --output-on-failure && \
(cmake --install . --strip || make DESTDIR=${DESTDIR} install/strip)
ctest --output-on-failure
RUN export DESTDIR=/tmp/mod_tile && \
cmake --install . --strip
# Runner
FROM quay.io/centos/centos:stream${centos_stream_version} as runner
@ -150,13 +143,10 @@ RUN --mount=id=centos:stream${centos_stream_version}-/var/cache/dnf,target=/var/
echo "install_weak_deps=False" >> /etc/dnf/dnf.conf && \
echo "keepcache=True" >> /etc/dnf/dnf.conf && \
dnf --assumeyes install "dnf-command(config-manager)" && \
dnf config-manager --save \
--setopt=${extra_repository}.enabled=1 && \
dnf config-manager --save --setopt=${extra_repository}.enabled=1 && \
dnf --assumeyes install epel-release && \
dnf --assumeyes upgrade && \
dnf --assumeyes install \
boost-filesystem \
boost-program-options \
boost-regex \
cairo \
gdal \

View File

@ -1,7 +1,7 @@
# Arguments
ARG centos_stream_version
ARG extra_repository
ARG mapnik_version=3.1.0
ARG centos_stream_version=9
ARG extra_repository=crb
ARG mapnik_version=4.0.0
# Mapnik Builder
FROM quay.io/centos/centos:stream${centos_stream_version} as mapnik-builder
@ -16,18 +16,18 @@ RUN --mount=id=centos:stream${centos_stream_version}-/var/cache/dnf,target=/var/
echo "install_weak_deps=False" >> /etc/dnf/dnf.conf && \
echo "keepcache=True" >> /etc/dnf/dnf.conf && \
dnf --assumeyes install "dnf-command(config-manager)" && \
dnf config-manager --save \
--setopt=${extra_repository}.enabled=1 && \
dnf config-manager --save --setopt=${extra_repository}.enabled=1 && \
dnf --assumeyes install epel-release && \
dnf --assumeyes upgrade && \
dnf --assumeyes install \
boost-devel \
bzip2 \
cairo-devel \
cmake \
freetype-devel \
gcc \
gcc-c++ \
gdal-devel \
git \
harfbuzz-devel \
libicu-devel \
libjpeg-devel \
@ -36,48 +36,38 @@ RUN --mount=id=centos:stream${centos_stream_version}-/var/cache/dnf,target=/var/
libwebp-devel \
libxml2-devel \
make \
patch \
postgresql-devel \
proj-devel \
python3 \
sqlite-devel \
tar \
zlib-devel
## Download, Build & Install `Mapnik`
WORKDIR /tmp/mapnik_src
RUN --mount=id=centos:stream${centos_stream_version}-mapnik:${mapnik_version},target=/tmp/mapnik_src,type=cache \
export DESTDIR="/tmp/mapnik"; \
export GDAL_DATA="$(gdal-config --datadir)"; \
export JOBS="$(nproc)"; \
export PROJ_LIB="/usr/share/proj"; \
export PYTHON="python3"; \
mkdir --parents ${GDAL_DATA} ${PROJ_LIB}; \
if [ ! -f SConstruct ]; then \
curl --silent --location https://github.com/mapnik/mapnik/releases/download/v${mapnik_version}/mapnik-v${mapnik_version}.tar.bz2 \
| tar --extract --bzip2 --strip-components=1 --file=-; \
curl --silent --location https://github.com/mapnik/mapnik/commit/8944e81367d2b3b91a41e24116e1813c01491e5d.patch \
| patch -Np1; \
curl --silent --location https://github.com/mapnik/mapnik/commit/83779b7b6bdd229740b1b5e12a4a8fe27114cb7d.patch \
| patch -F3 -Np1; \
fi; \
bash configure \
CPP_TESTS=False \
CUSTOM_CFLAGS="${CUSTOM_CFLAGS:-}" \
CUSTOM_CXXFLAGS="${CUSTOM_CXXFLAGS:-}" \
CUSTOM_DEFINES="${CUSTOM_DEFINES:-}" \
CUSTOM_LDFLAGS="${CUSTOM_LDFLAGS:-}" \
DEMO=False \
DESTDIR="${DESTDIR}" \
FAST=True \
INPUT_PLUGINS=all \
LIBDIR_SCHEMA=lib64 \
OPTIMIZATION=2 \
PREFIX=/usr \
SVG2PNG=True \
XMLPARSER=libxml2 && \
make PYTHON="${PYTHON}" && \
make install PYTHON="${PYTHON}"
RUN --mount=id=centos:stream${centos_stream_version}-mapnik-src:${mapnik_version},target=/tmp/mapnik_src,type=cache \
if [ ! -f CMakeLists.txt ]; then \
git clone --branch v${mapnik_version} --depth 1 --jobs 8 --recurse-submodules https://github.com/mapnik/mapnik.git /tmp/mapnik_src; \
fi
WORKDIR /tmp/mapnik_build
RUN --mount=id=centos:stream${centos_stream_version}-mapnik-src:${mapnik_version},target=/tmp/mapnik_src,type=cache \
--mount=id=centos:stream${centos_stream_version}-mapnik-build:${mapnik_version},target=/tmp/mapnik_build,type=cache \
export CMAKE_BUILD_PARALLEL_LEVEL=$(nproc) && \
export DESTDIR=/tmp/mapnik && \
cmake -B . -S /tmp/mapnik_src \
-DBUILD_BENCHMARK:BOOL=OFF \
-DBUILD_DEMO_CPP:BOOL=OFF \
-DBUILD_DEMO_VIEWER:BOOL=OFF \
-DBUILD_TESTING:BOOL=OFF \
-DBUILD_UTILITY_GEOMETRY_TO_WKB:BOOL=OFF \
-DBUILD_UTILITY_MAPNIK_INDEX:BOOL=OFF \
-DBUILD_UTILITY_MAPNIK_RENDER:BOOL=OFF \
-DBUILD_UTILITY_OGRINDEX:BOOL=OFF \
-DBUILD_UTILITY_PGSQL2SQLITE:BOOL=OFF \
-DBUILD_UTILITY_SHAPEINDEX:BOOL=OFF \
-DBUILD_UTILITY_SVG2PNG:BOOL=OFF \
-DCMAKE_BUILD_TYPE:STRING=Release \
-DCMAKE_INSTALL_PREFIX:PATH=/usr && \
cmake --build . && \
cmake --install . --strip
# Builder
FROM quay.io/centos/centos:stream${centos_stream_version} as builder
@ -91,8 +81,7 @@ RUN --mount=id=centos:stream${centos_stream_version}-/var/cache/dnf,target=/var/
echo "install_weak_deps=False" >> /etc/dnf/dnf.conf && \
echo "keepcache=True" >> /etc/dnf/dnf.conf && \
dnf --assumeyes install "dnf-command(config-manager)" && \
dnf config-manager --save \
--setopt=${extra_repository}.enabled=1 && \
dnf config-manager --save --setopt=${extra_repository}.enabled=1 && \
dnf --assumeyes install epel-release && \
dnf --assumeyes upgrade && \
dnf --assumeyes install \
@ -116,8 +105,7 @@ RUN --mount=id=centos:stream${centos_stream_version}-/var/cache/dnf,target=/var/
libxml2-devel \
make \
proj-devel \
redhat-rpm-config \
sqlite-devel
redhat-rpm-config
## Copy files from builder(s)
### Mapnik
@ -144,13 +132,10 @@ RUN --mount=id=centos:stream${centos_stream_version}-/var/cache/dnf,target=/var/
echo "install_weak_deps=False" >> /etc/dnf/dnf.conf && \
echo "keepcache=True" >> /etc/dnf/dnf.conf && \
dnf --assumeyes install "dnf-command(config-manager)" && \
dnf config-manager --save \
--setopt=${extra_repository}.enabled=1 && \
dnf config-manager --save --setopt=${extra_repository}.enabled=1 && \
dnf --assumeyes install epel-release && \
dnf --assumeyes upgrade && \
dnf --assumeyes install \
boost-filesystem \
boost-program-options \
boost-regex \
cairo \
gdal \
@ -178,7 +163,7 @@ COPY --from=builder \
## Fix mapnik directories
RUN sed \
--expression "s#/usr/lib/mapnik/3.1/input#$(find /usr -mindepth 1 -type d -name input)#g" \
--expression "s#/usr/lib/mapnik/3.1/input#$(find /usr -mindepth 1 -type d -name input | grep mapnik)#g" \
--expression "s#/usr/share/fonts/truetype#/usr/share/fonts#g" \
/usr/local/etc/renderd.conf > /etc/renderd.conf

View File

@ -14,13 +14,11 @@ RUN --mount=id=centos:stream${centos_stream_version}-/var/cache/dnf,target=/var/
echo "install_weak_deps=False" >> /etc/dnf/dnf.conf && \
echo "keepcache=True" >> /etc/dnf/dnf.conf && \
dnf --assumeyes install "dnf-command(config-manager)" && \
dnf config-manager --save \
--setopt=${extra_repository}.enabled=1 && \
dnf config-manager --save --setopt=${extra_repository}.enabled=1 && \
dnf --assumeyes install epel-release && \
dnf --assumeyes upgrade && \
dnf --assumeyes install \
boost-devel \
bzip2 \
cairo-devel \
cmake \
freetype-devel \
@ -36,12 +34,9 @@ RUN --mount=id=centos:stream${centos_stream_version}-/var/cache/dnf,target=/var/
libwebp-devel \
libxml2-devel \
make \
patch \
postgresql-devel \
proj-devel \
python3 \
sqlite-devel \
tar \
zlib-devel
## Download, Build & Install `Mapnik`
@ -56,14 +51,21 @@ RUN --mount=id=centos:stream${centos_stream_version}-mapnik-src:latest,target=/t
export CMAKE_BUILD_PARALLEL_LEVEL=$(nproc) && \
export DESTDIR=/tmp/mapnik && \
cmake -B . -S /tmp/mapnik_src \
-DBUILD_BENCHMARK:BOOL=OFF \
-DBUILD_DEMO_CPP:BOOL=OFF \
-DBUILD_DEMO_VIEWER:BOOL=OFF \
-DBUILD_TESTING:BOOL=OFF \
-DBUILD_UTILITY_GEOMETRY_TO_WKB:BOOL=OFF \
-DBUILD_UTILITY_MAPNIK_INDEX:BOOL=OFF \
-DBUILD_UTILITY_MAPNIK_RENDER:BOOL=OFF \
-DBUILD_UTILITY_OGRINDEX:BOOL=OFF \
-DBUILD_UTILITY_PGSQL2SQLITE:BOOL=OFF \
-DBUILD_UTILITY_SHAPEINDEX:BOOL=OFF \
-DBUILD_UTILITY_SVG2PNG:BOOL=OFF \
-DCMAKE_BUILD_TYPE:STRING=Release \
-DCMAKE_CXX_STANDARD:STRING=17 \
-DCMAKE_INSTALL_PREFIX:PATH=/usr \
-DMAPNIK_PKGCONF_DIR:PATH=/usr/share/pkgconfig && \
-DCMAKE_INSTALL_PREFIX:PATH=/usr && \
cmake --build . && \
(cmake --install . --prefix /usr --strip || make DESTDIR=${DESTDIR} install/strip)
cmake --install . --strip
# Builder
FROM quay.io/centos/centos:stream${centos_stream_version} as builder
@ -77,8 +79,7 @@ RUN --mount=id=centos:stream${centos_stream_version}-/var/cache/dnf,target=/var/
echo "install_weak_deps=False" >> /etc/dnf/dnf.conf && \
echo "keepcache=True" >> /etc/dnf/dnf.conf && \
dnf --assumeyes install "dnf-command(config-manager)" && \
dnf config-manager --save \
--setopt=${extra_repository}.enabled=1 && \
dnf config-manager --save --setopt=${extra_repository}.enabled=1 && \
dnf --assumeyes install epel-release && \
dnf --assumeyes upgrade && \
dnf --assumeyes install \
@ -124,9 +125,9 @@ RUN export CMAKE_BUILD_PARALLEL_LEVEL=$(nproc) && \
-DENABLE_TESTS:BOOL=ON && \
cmake --build .
RUN export CTEST_PARALLEL_LEVEL=$(nproc) && \
export DESTDIR=/tmp/mod_tile && \
ctest --output-on-failure && \
(cmake --install . --strip || make DESTDIR=${DESTDIR} install/strip)
ctest --output-on-failure
RUN export DESTDIR=/tmp/mod_tile && \
cmake --install . --strip
# Runner
FROM quay.io/centos/centos:stream${centos_stream_version} as runner
@ -140,8 +141,7 @@ RUN --mount=id=centos:stream${centos_stream_version}-/var/cache/dnf,target=/var/
echo "install_weak_deps=False" >> /etc/dnf/dnf.conf && \
echo "keepcache=True" >> /etc/dnf/dnf.conf && \
dnf --assumeyes install "dnf-command(config-manager)" && \
dnf config-manager --save \
--setopt=${extra_repository}.enabled=1 && \
dnf config-manager --save --setopt=${extra_repository}.enabled=1 && \
dnf --assumeyes install epel-release && \
dnf --assumeyes upgrade && \
dnf --assumeyes install \

View File

@ -44,9 +44,9 @@ RUN export CMAKE_BUILD_PARALLEL_LEVEL=$(nproc) && \
-DENABLE_TESTS:BOOL=ON && \
cmake --build .
RUN export CTEST_PARALLEL_LEVEL=$(nproc) && \
export DESTDIR=/tmp/mod_tile && \
ctest --output-on-failure && \
(cmake --install . --strip || make DESTDIR=${DESTDIR} install/strip)
ctest --output-on-failure
RUN export DESTDIR=/tmp/mod_tile && \
cmake --install . --strip
# Runner
FROM debian:${debian_version} as runner

View File

@ -73,7 +73,7 @@ COPY --from=builder \
## Fix mapnik directories
RUN sed \
--expression "s#/usr/lib/mapnik/3.1/input#$(find /usr -mindepth 1 -type d -name input)#g" \
--expression "s#/usr/lib/mapnik/3.1/input#$(find /usr -mindepth 1 -type d -name input | grep mapnik)#g" \
--expression "s#/usr/share/fonts/truetype#/usr/share/fonts#g" \
/usr/local/etc/renderd.conf > /etc/renderd.conf

View File

@ -38,9 +38,9 @@ RUN export CMAKE_BUILD_PARALLEL_LEVEL=$(nproc) && \
-DENABLE_TESTS:BOOL=ON && \
cmake --build .
RUN export CTEST_PARALLEL_LEVEL=$(nproc) && \
export DESTDIR=/tmp/mod_tile && \
ctest --output-on-failure && \
(cmake --install . --strip || make DESTDIR=${DESTDIR} install/strip)
ctest --output-on-failure
RUN export DESTDIR=/tmp/mod_tile && \
cmake --install . --strip
# Runner
FROM fedora:${fedora_version} as runner

View File

@ -1,6 +1,7 @@
# Arguments
ARG boost_version
ARG gcc_version
ARG mapnik_version=4.0.0
ARG opensuse_version=leap:15
# Mapnik Builder
@ -9,10 +10,11 @@ FROM opensuse/${opensuse_version} as mapnik-builder
## Arguments
ARG boost_version
ARG gcc_version
ARG mapnik_version
ARG opensuse_version
## Install mapnik-builder dependencies
RUN --mount=id=opensuse:${opensuse_version}-/var/cache/zypp,target=/var/cache/zypp,type=cache,sharing=locked \
RUN --mount=id=opensuse/${opensuse_version}-/var/cache/zypp,target=/var/cache/zypp,type=cache,sharing=locked \
zypper modifyrepo --all --keep-packages && \
zypper --non-interactive update && \
zypper --non-interactive install \
@ -24,12 +26,7 @@ RUN --mount=id=opensuse:${opensuse_version}-/var/cache/zypp,target=/var/cache/zy
gdal-devel \
git \
harfbuzz-devel \
libboost_atomic${boost_version}-devel \
libboost_filesystem${boost_version}-devel \
libboost_headers${boost_version}-devel \
libboost_program_options${boost_version}-devel \
libboost_regex${boost_version}-devel \
libboost_system${boost_version}-devel \
libicu-devel \
libjpeg8-devel \
libpng16-devel \
@ -38,9 +35,7 @@ RUN --mount=id=opensuse:${opensuse_version}-/var/cache/zypp,target=/var/cache/zy
libxml2-devel \
postgresql-devel \
proj-devel \
python3 \
sqlite3-devel \
tar \
zlib-devel && \
if [ -n "${gcc_version}" ]; then \
update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-${gcc_version} 10; \
@ -51,13 +46,13 @@ RUN --mount=id=opensuse:${opensuse_version}-/var/cache/zypp,target=/var/cache/zy
## Download, Build & Install `Mapnik`
WORKDIR /tmp/mapnik_src
RUN --mount=id=opensuse:${opensuse_version}-mapnik-src:latest,target=/tmp/mapnik_src,type=cache \
RUN --mount=id=opensuse/${opensuse_version}-mapnik-src:${mapnik_version},target=/tmp/mapnik_src,type=cache \
if [ ! -f CMakeLists.txt ]; then \
git clone --depth 1 --jobs 8 --recurse-submodules https://github.com/mapnik/mapnik.git /tmp/mapnik_src; \
git clone --branch v${mapnik_version} --depth 1 --jobs 8 --recurse-submodules https://github.com/mapnik/mapnik.git /tmp/mapnik_src; \
fi
WORKDIR /tmp/mapnik_build
RUN --mount=id=opensuse:${opensuse_version}-mapnik-src:latest,target=/tmp/mapnik_src,type=cache \
--mount=id=opensuse:${opensuse_version}-mapnik-build:latest,target=/tmp/mapnik_build,type=cache \
RUN --mount=id=opensuse/${opensuse_version}-mapnik-src:${mapnik_version},target=/tmp/mapnik_src,type=cache \
--mount=id=opensuse/${opensuse_version}-mapnik-build:${mapnik_version},target=/tmp/mapnik_build,type=cache \
export CMAKE_BUILD_PARALLEL_LEVEL=$(nproc) && \
export DESTDIR=/tmp/mapnik && \
cmake -B . -S /tmp/mapnik_src \
@ -65,12 +60,17 @@ RUN --mount=id=opensuse:${opensuse_version}-mapnik-src:latest,target=/tmp/mapnik
-DBUILD_DEMO_CPP:BOOL=OFF \
-DBUILD_DEMO_VIEWER:BOOL=OFF \
-DBUILD_TESTING:BOOL=OFF \
-DBUILD_UTILITY_GEOMETRY_TO_WKB:BOOL=OFF \
-DBUILD_UTILITY_MAPNIK_INDEX:BOOL=OFF \
-DBUILD_UTILITY_MAPNIK_RENDER:BOOL=OFF \
-DBUILD_UTILITY_OGRINDEX:BOOL=OFF \
-DBUILD_UTILITY_PGSQL2SQLITE:BOOL=OFF \
-DBUILD_UTILITY_SHAPEINDEX:BOOL=OFF \
-DBUILD_UTILITY_SVG2PNG:BOOL=OFF \
-DCMAKE_BUILD_TYPE:STRING=Release \
-DCMAKE_CXX_STANDARD:STRING=17 \
-DCMAKE_INSTALL_PREFIX:PATH=/usr \
-DMAPNIK_PKGCONF_DIR:PATH=/usr/share/pkgconfig && \
-DCMAKE_INSTALL_PREFIX:PATH=/usr && \
cmake --build . && \
(cmake --install . --prefix /usr --strip || make DESTDIR=${DESTDIR} install/strip)
cmake --install . --strip
# Builder
FROM opensuse/${opensuse_version} as builder
@ -80,7 +80,7 @@ ARG boost_version
ARG opensuse_version
## Install builder dependencies
RUN --mount=id=opensuse:${opensuse_version}-/var/cache/zypp,target=/var/cache/zypp,type=cache,sharing=locked \
RUN --mount=id=opensuse/${opensuse_version}-/var/cache/zypp,target=/var/cache/zypp,type=cache,sharing=locked \
zypper modifyrepo --all --keep-packages && \
zypper --non-interactive update && \
zypper --non-interactive install \
@ -93,12 +93,7 @@ RUN --mount=id=opensuse:${opensuse_version}-/var/cache/zypp,target=/var/cache/zy
gdal \
glib2-devel \
harfbuzz-devel \
libboost_atomic${boost_version}-devel \
libboost_filesystem${boost_version}-devel \
libboost_headers${boost_version}-devel \
libboost_program_options${boost_version}-devel \
libboost_regex${boost_version}-devel \
libboost_system${boost_version}-devel \
libcurl-devel \
libicu-devel \
libiniparser-devel \
@ -131,9 +126,9 @@ RUN export CMAKE_BUILD_PARALLEL_LEVEL=$(nproc) && \
-DENABLE_TESTS:BOOL=ON && \
cmake --build .
RUN export CTEST_PARALLEL_LEVEL=$(nproc) && \
export DESTDIR=/tmp/mod_tile && \
ctest --output-on-failure && \
(cmake --install . --strip || make DESTDIR=${DESTDIR} install/strip)
ctest --output-on-failure
RUN export DESTDIR=/tmp/mod_tile && \
cmake --install . --strip
# Runner
FROM opensuse/${opensuse_version} as runner
@ -143,7 +138,7 @@ ARG boost_version
ARG opensuse_version
## Install runner dependencies
RUN --mount=id=opensuse:${opensuse_version}-/var/cache/zypp,target=/var/cache/zypp,type=cache,sharing=locked \
RUN --mount=id=opensuse/${opensuse_version}-/var/cache/zypp,target=/var/cache/zypp,type=cache,sharing=locked \
zypper modifyrepo --all --keep-packages && \
zypper --non-interactive update && \
zypper --non-interactive install \
@ -152,11 +147,7 @@ RUN --mount=id=opensuse:${opensuse_version}-/var/cache/zypp,target=/var/cache/zy
cairo-devel \
gdal \
harfbuzz-devel \
libboost_atomic${boost_version}-devel \
libboost_filesystem${boost_version}-devel \
libboost_program_options${boost_version}-devel \
libboost_regex${boost_version}-devel \
libboost_system${boost_version}-devel \
libicu-devel \
libiniparser-devel \
libjpeg8-devel \

View File

@ -44,9 +44,9 @@ RUN export CMAKE_BUILD_PARALLEL_LEVEL=$(nproc) && \
-DENABLE_TESTS:BOOL=ON && \
cmake --build .
RUN export CTEST_PARALLEL_LEVEL=$(nproc) && \
export DESTDIR=/tmp/mod_tile && \
ctest --output-on-failure && \
(cmake --install . --strip || make DESTDIR=${DESTDIR} install/strip)
ctest --output-on-failure
RUN export DESTDIR=/tmp/mod_tile && \
cmake --install . --strip
# Runner
FROM ubuntu:${ubuntu_version} as runner

View File

@ -73,7 +73,7 @@ COPY --from=builder \
## Fix mapnik directories
RUN sed \
--expression "s#/usr/lib/mapnik/3.1/input#$(find /usr -mindepth 1 -type d -name input)#g" \
--expression "s#/usr/lib/mapnik/3.1/input#$(find /usr -mindepth 1 -type d -name input | grep mapnik)#g" \
--expression "s#/usr/share/fonts/truetype#/usr/share/fonts#g" \
/usr/local/etc/renderd.conf > /etc/renderd.conf

View File

@ -28,12 +28,7 @@ sudo zypper --non-interactive install \
gdal \
glib2-devel \
harfbuzz-devel \
libboost_atomic-devel \
libboost_filesystem-devel \
libboost_headers-devel \
libboost_program_options-devel \
libboost_regex-devel \
libboost_system-devel \
libcurl-devel \
libicu-devel \
libiniparser-devel \