Skip to content

Commit d8a0f29

Browse files
authored
Add support for building for Mapnik 4 (#305)
1 parent f4ee376 commit d8a0f29

7 files changed

Lines changed: 157 additions & 4 deletions

File tree

.github/actions/mapnik/build-and-install/action.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ runs:
1919

2020
- name: Cache "Download `Mapnik`" & "Build & Install `Mapnik`"
2121
id: cache-mapnik
22-
uses: actions/cache@v2
22+
uses: actions/cache@v3
2323
with:
2424
path: /usr/local/src/mapnik-${{ inputs.version }}
2525
key: ${{ matrix.image }}-mapnik-${{ inputs.version }}

.github/actions/yum/install/action.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ runs:
1414
using: composite
1515
steps:
1616
- name: Cache `DNF` / `YUM`
17-
uses: actions/cache@v2
17+
uses: actions/cache@v3
1818
with:
1919
path: |
2020
/var/cache/dnf
Lines changed: 141 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,141 @@
1+
---
2+
name: Build & Test (Mapnik >= 4)
3+
4+
on:
5+
pull_request:
6+
push:
7+
branches:
8+
- master
9+
- develop
10+
11+
jobs:
12+
build-and-test-mapnik-4:
13+
name: ${{ matrix.image }}
14+
runs-on: ubuntu-latest
15+
strategy:
16+
matrix:
17+
image:
18+
- 'debian:11'
19+
on_default_branch:
20+
- ${{ contains(github.ref, 'master') }}
21+
include:
22+
- image: 'ubuntu:22.04'
23+
exclude:
24+
- on_default_branch: false
25+
fail-fast: false
26+
container:
27+
image: ${{ matrix.image }}
28+
steps:
29+
- name: Checkout `mod_tile`
30+
uses: actions/checkout@v3
31+
32+
- name: Install Dependencies (Debian)
33+
uses: ./.github/actions/apt-get/install
34+
with:
35+
packages: >-
36+
${{ env.debian-build-dependencies }}
37+
${{ env.debian-mapnik-build-dependencies }}
38+
${{ env.debian-test-dependencies }}
39+
if: ${{ startsWith(matrix.image, 'debian:') }}
40+
41+
- name: Install Dependencies (Ubuntu)
42+
uses: ./.github/actions/apt-get/install
43+
with:
44+
packages: >-
45+
${{ env.ubuntu-build-dependencies }}
46+
${{ env.ubuntu-mapnik-build-dependencies }}
47+
${{ env.ubuntu-test-dependencies }}
48+
if: ${{ startsWith(matrix.image, 'ubuntu:') }}
49+
50+
- name: Checkout `mapnik`
51+
uses: actions/checkout@v3
52+
with:
53+
path: mapnik
54+
repository: mapnik/mapnik
55+
submodules: recursive
56+
57+
- name: Build `mapnik`
58+
run: |
59+
export CMAKE_BUILD_PARALLEL_LEVEL=${BUILD_PARALLEL_LEVEL:-$(nproc)}
60+
cmake -S mapnik -B mapnik-build \
61+
-DBUILD_DEMO_VIEWER:BOOL=OFF \
62+
-DBUILD_TESTING:BOOL=OFF \
63+
-DCMAKE_BUILD_TYPE=Release \
64+
-DCMAKE_INSTALL_PREFIX:PATH=/usr
65+
cmake --build mapnik-build
66+
67+
- name: Install `mapnik`
68+
run: cmake --install mapnik-build
69+
70+
- name: Build `mod_tile`
71+
uses: ./.github/actions/build
72+
73+
- name: Install `mod_tile`
74+
uses: ./.github/actions/install
75+
76+
- name: Configure Apache HTTP Server
77+
uses: ./.github/actions/apache/configure
78+
79+
- name: Test `mod_tile`
80+
uses: ./.github/actions/test
81+
timeout-minutes: 5
82+
83+
env:
84+
debian-build-dependencies: >-
85+
apache2-dev
86+
libcairo2-dev
87+
libcurl4-gnutls-dev
88+
libglib2.0-dev
89+
libiniparser-dev
90+
libmemcached-dev
91+
librados-dev
92+
debian-test-dependencies: >-
93+
apache2
94+
libjs-leaflet
95+
debian-mapnik-build-dependencies: >-
96+
cmake
97+
git
98+
libboost-filesystem-dev
99+
libboost-program-options-dev
100+
libboost-regex-dev
101+
libfreetype6-dev
102+
libgdal-dev
103+
libharfbuzz-dev
104+
libicu-dev
105+
libjpeg-dev
106+
libpq-dev
107+
libproj-dev
108+
libsqlite3-dev
109+
libtiff-dev
110+
libwebp-dev
111+
libxml2-dev
112+
postgresql-server-dev-all
113+
ubuntu-build-dependencies: >-
114+
apache2-dev
115+
libcairo2-dev
116+
libcurl4-gnutls-dev
117+
libglib2.0-dev
118+
libiniparser-dev
119+
libmemcached-dev
120+
librados-dev
121+
ubuntu-test-dependencies: >-
122+
apache2
123+
libjs-leaflet
124+
ubuntu-mapnik-build-dependencies: >-
125+
cmake
126+
git
127+
libboost-filesystem-dev
128+
libboost-program-options-dev
129+
libboost-regex-dev
130+
libfreetype6-dev
131+
libgdal-dev
132+
libharfbuzz-dev
133+
libicu-dev
134+
libjpeg-dev
135+
libpq-dev
136+
libproj-dev
137+
libsqlite3-dev
138+
libtiff-dev
139+
libwebp-dev
140+
libxml2-dev
141+
postgresql-server-dev-all

.github/workflows/build-and-test.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ jobs:
3232
image: ${{ matrix.image }}
3333
steps:
3434
- name: Checkout code
35-
uses: actions/checkout@v2
35+
uses: actions/checkout@v3
3636

3737
- name: Install Dependencies (CentOS)
3838
uses: ./.github/actions/yum/install

configure.ac

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,11 @@ AC_SEARCH_LIBS(inet_ntoa, nsl)
5151
AC_SEARCH_LIBS(gethostbyname, resolv nsl)
5252
AC_SEARCH_LIBS(pow,m)
5353
AC_SEARCH_LIBS(clock_gettime,[rt posix4])
54-
AX_LIB_MAPNIK
54+
PKG_CHECK_MODULES([MAPNIK], [libmapnik >= 4], [
55+
AC_DEFINE([HAVE_MAPNIK], [1])
56+
AC_SUBST([MAPNIK_LDFLAGS], [${MAPNIK_LIBS}])
57+
], [AX_LIB_MAPNIK]
58+
)
5559
AX_ENABLE_LIBMEMCACHED
5660
LIBCURL_CHECK_CONFIG
5761
AC_CHECK_LIB(rados, rados_version, [

src/gen_tile.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,9 +67,13 @@
6767
#define box2d Envelope
6868
#define zoom_to_box zoomToBox
6969
#else
70+
#if MAPNIK_VERSION >= 400000
71+
#include <mapnik/geometry/box2d.hpp>
72+
#else
7073
#include <mapnik/box2d.hpp>
7174
#endif
7275
#endif
76+
#endif
7377

7478

7579
using namespace mapnik;

src/gen_tile_test.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,8 +54,12 @@
5454
#define box2d Envelope
5555
#define zoom_to_box zoomToBox
5656
#else
57+
#if MAPNIK_VERSION >= 400000
58+
#include <mapnik/geometry/box2d.hpp>
59+
#else
5760
#include <mapnik/box2d.hpp>
5861
#endif
62+
#endif
5963

6064

6165
#define NO_QUEUE_REQUESTS 9

0 commit comments

Comments
 (0)