From 52e7a10762b166e92bac1d0b6536bc464adf7a6b Mon Sep 17 00:00:00 2001 From: Hummeltech <6109326+hummeltech@users.noreply.github.com> Date: Wed, 26 Jun 2024 16:37:31 -0700 Subject: [PATCH] Use `Mapnik v4.0.0` for `Dockerfile`s and `GitHub Actions` (#452) --- .../build-and-install/mapnik/action.yml | 80 +++++++-------- .../mapnik/latest/action.yml | 46 --------- .../actions/dependencies/install/action.yml | 28 +++--- configure.ac | 3 +- docker/archlinux/Dockerfile | 6 +- docker/centos/stream/Dockerfile | 98 +++++++++---------- docker/centos/stream/Dockerfile.autotools | 85 +++++++--------- docker/centos/stream/Dockerfile.mapnik-latest | 34 +++---- docker/debian/Dockerfile | 6 +- docker/debian/Dockerfile.autotools | 2 +- docker/fedora/Dockerfile | 6 +- docker/opensuse/Dockerfile | 51 ++++------ docker/ubuntu/Dockerfile | 6 +- docker/ubuntu/Dockerfile.autotools | 2 +- docs/build/building_on_opensuse.md | 5 - 15 files changed, 178 insertions(+), 280 deletions(-) delete mode 100644 .github/actions/dependencies/build-and-install/mapnik/latest/action.yml diff --git a/.github/actions/dependencies/build-and-install/mapnik/action.yml b/.github/actions/dependencies/build-and-install/mapnik/action.yml index d7917e72..ee40294a 100644 --- a/.github/actions/dependencies/build-and-install/mapnik/action.yml +++ b/.github/actions/dependencies/build-and-install/mapnik/action.yml @@ -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 diff --git a/.github/actions/dependencies/build-and-install/mapnik/latest/action.yml b/.github/actions/dependencies/build-and-install/mapnik/latest/action.yml deleted file mode 100644 index bec73040..00000000 --- a/.github/actions/dependencies/build-and-install/mapnik/latest/action.yml +++ /dev/null @@ -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} diff --git a/.github/actions/dependencies/install/action.yml b/.github/actions/dependencies/install/action.yml index 1b803d16..758a29c3 100644 --- a/.github/actions/dependencies/install/action.yml +++ b/.github/actions/dependencies/install/action.yml @@ -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/')) diff --git a/configure.ac b/configure.ac index 3ff13ea5..381d1219 100644 --- a/configure.ac +++ b/configure.ac @@ -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) diff --git a/docker/archlinux/Dockerfile b/docker/archlinux/Dockerfile index 337e07e4..425e42bf 100644 --- a/docker/archlinux/Dockerfile +++ b/docker/archlinux/Dockerfile @@ -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 diff --git a/docker/centos/stream/Dockerfile b/docker/centos/stream/Dockerfile index ccb8ba44..c129b7e6 100644 --- a/docker/centos/stream/Dockerfile +++ b/docker/centos/stream/Dockerfile @@ -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 \ diff --git a/docker/centos/stream/Dockerfile.autotools b/docker/centos/stream/Dockerfile.autotools index de3a7b03..e1702f11 100644 --- a/docker/centos/stream/Dockerfile.autotools +++ b/docker/centos/stream/Dockerfile.autotools @@ -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 diff --git a/docker/centos/stream/Dockerfile.mapnik-latest b/docker/centos/stream/Dockerfile.mapnik-latest index c243cead..72a17e78 100644 --- a/docker/centos/stream/Dockerfile.mapnik-latest +++ b/docker/centos/stream/Dockerfile.mapnik-latest @@ -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 \ diff --git a/docker/debian/Dockerfile b/docker/debian/Dockerfile index c19604f7..2bbc7d78 100644 --- a/docker/debian/Dockerfile +++ b/docker/debian/Dockerfile @@ -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 diff --git a/docker/debian/Dockerfile.autotools b/docker/debian/Dockerfile.autotools index 99281e45..0c60ded0 100644 --- a/docker/debian/Dockerfile.autotools +++ b/docker/debian/Dockerfile.autotools @@ -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 diff --git a/docker/fedora/Dockerfile b/docker/fedora/Dockerfile index 9b2ca652..4bf5a1b3 100644 --- a/docker/fedora/Dockerfile +++ b/docker/fedora/Dockerfile @@ -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 diff --git a/docker/opensuse/Dockerfile b/docker/opensuse/Dockerfile index 308ab476..efe5563a 100644 --- a/docker/opensuse/Dockerfile +++ b/docker/opensuse/Dockerfile @@ -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 \ diff --git a/docker/ubuntu/Dockerfile b/docker/ubuntu/Dockerfile index 92993821..47e01326 100644 --- a/docker/ubuntu/Dockerfile +++ b/docker/ubuntu/Dockerfile @@ -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 diff --git a/docker/ubuntu/Dockerfile.autotools b/docker/ubuntu/Dockerfile.autotools index 5bb3c161..1b7c7f39 100644 --- a/docker/ubuntu/Dockerfile.autotools +++ b/docker/ubuntu/Dockerfile.autotools @@ -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 diff --git a/docs/build/building_on_opensuse.md b/docs/build/building_on_opensuse.md index efd1c4da..0e498ffa 100644 --- a/docs/build/building_on_opensuse.md +++ b/docs/build/building_on_opensuse.md @@ -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 \